Files
ldc/tests/mini/asm6.d
Frits van Bommel 909c6dae18 Fix some unittests for 64-bit asm. They were operating on int variables as if
they were longs.
This was causing asm1_1 to fail when compiled with -O3 because it was
overwriting the spilled value of callee-saved register %rbx, which the runtime
was using as a pointer value at the time.
2009-04-13 17:42:36 +02:00

34 lines
584 B
D

extern(C) int printf(char*, ...);
version (D_InlineAsm_X86)
version = InlineAsm_X86_Any;
version (D_InlineAsm_X86_64)
version = InlineAsm_X86_Any;
void main()
{
int a,b,c;
a = int.max-1;
b = 5;
version (InlineAsm_X86_Any)
{
asm
{
mov EAX, a;
mov ECX, b;
add EAX, ECX;
jo Loverflow;
mov c, EAX;
}
}
printf("a == %d\n", a);
printf("b == %d\n", b);
printf("c == %d\n", c);
assert(c == c);
return;
Loverflow:
int y=0;
//assert(0, "overflow");
}