diff --git a/llvmdc.kdevelop.filelist b/llvmdc.kdevelop.filelist index 26ad0936..b8da5f1c 100644 --- a/llvmdc.kdevelop.filelist +++ b/llvmdc.kdevelop.filelist @@ -783,6 +783,7 @@ tangotests/r.d tangotests/s.d tangotests/stdout1.d tangotests/stdout2.d +tangotests/sync1.d tangotests/t.d tangotests/templ1.d tangotests/vararg1.d diff --git a/tango/lib/gc/basic/gcx.d b/tango/lib/gc/basic/gcx.d index 76679677..2a60f315 100644 --- a/tango/lib/gc/basic/gcx.d +++ b/tango/lib/gc/basic/gcx.d @@ -2058,8 +2058,27 @@ struct Gcx size_t result; version(LLVMDC) { - // TODO & BUG: - // should make sure registers are on the stack, maybe some external asm ? + // put registers on the stack + version(D_InlineAsm_X86) + { + uint _eax, _ecx, _edx, _ebx, _esp, _ebp, _esi, _edi; + asm + { + mov _eax, EAX; + mov _ecx, ECX; + mov _edx, EDX; + mov _ebx, EBX; + mov _esp, ESP; + mov _ebp, EBP; + mov _esi, ESI; + mov _edi, EDI; + mov sp, ESP; + } + } + else + { + // FIXME + } } else version (GNU) { diff --git a/tango/lib/gc/basic/llvmdc.mak b/tango/lib/gc/basic/llvmdc.mak index f8be2bee..537314a1 100644 --- a/tango/lib/gc/basic/llvmdc.mak +++ b/tango/lib/gc/basic/llvmdc.mak @@ -24,10 +24,10 @@ ADD_DFLAGS= CFLAGS=-g $(ADD_CFLAGS) #DFLAGS=-release -O3 -inline -w -nofloat $(ADD_DFLAGS) -DFLAGS=-g -w -nofloat -noasm $(ADD_DFLAGS) +DFLAGS=-g -w -nofloat $(ADD_DFLAGS) #TFLAGS=-O3 -inline -w -nofloat $(ADD_DFLAGS) -TFLAGS=-g -w -nofloat -noasm $(ADD_DFLAGS) +TFLAGS=-g -w -nofloat $(ADD_DFLAGS) DOCFLAGS=-version=DDoc