Mercurial > projects > ldc
diff tests/mini/asm10.d @ 1109:97d80437cb80
Fix field access from inline asm. See tests/mini/asm10.d
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Thu, 12 Mar 2009 23:48:43 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/mini/asm10.d Thu Mar 12 23:48:43 2009 +0100 @@ -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); +}