mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-17 05:13:14 +01:00
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.
36 lines
614 B
D
36 lines
614 B
D
module tangotests.asm1_1;
|
|
|
|
extern(C) int printf(char*, ...);
|
|
|
|
int main()
|
|
{
|
|
int i = 12;
|
|
int* ip = &i;
|
|
printf("%d\n", i);
|
|
version (D_InlineAsm_X86)
|
|
{
|
|
asm
|
|
{
|
|
mov ECX, ip;
|
|
mov EAX, [ECX];
|
|
add EAX, 8;
|
|
mul EAX, EAX;
|
|
mov [ECX], EAX;
|
|
}
|
|
}
|
|
else version (D_InlineAsm_X86_64)
|
|
{
|
|
asm
|
|
{
|
|
movq RCX, ip;
|
|
mov EAX, [RCX];
|
|
add EAX, 8;
|
|
imul EAX, EAX;
|
|
mov [RCX], EAX;
|
|
}
|
|
}
|
|
printf("%d\n", i);
|
|
assert(i == 400);
|
|
return 0;
|
|
}
|