mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-11-03 15:47:26 +01:00
Fix field access from inline asm. See tests/mini/asm10.d
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
module asm10;
|
||||
|
||||
struct S {
|
||||
ushort first;
|
||||
ushort second;
|
||||
int unaccessed;
|
||||
}
|
||||
|
||||
void main() {
|
||||
auto s = S(512, 42, -1);
|
||||
ushort x = 0;
|
||||
version(D_InlineAsm_X86) {
|
||||
asm {
|
||||
lea EAX, s;
|
||||
mov CX, S.second[EAX];
|
||||
mov x, CX;
|
||||
mov S.first[EAX], 640;
|
||||
}
|
||||
} else version(D_InlineAsm_X86_64) {
|
||||
asm {
|
||||
lea RAX, s;
|
||||
mov CX, S.second[RAX];
|
||||
mov x, CX;
|
||||
mov S.first[RAX], 640;
|
||||
}
|
||||
}
|
||||
assert(x == 42);
|
||||
assert(s.first == 640);
|
||||
assert(s.second == 42);
|
||||
assert(s.unaccessed == -1);
|
||||
}
|
||||
Reference in New Issue
Block a user