Mercurial > projects > ldc
view tests/mini/union7.d @ 920:545f54041d91
Implemented proper support for naked asm using llvm module level asm. Still not 100% complete, but already 1000 times better that what we had before. Don's BignumX86 implementation from Tango (when turned into a standalone unittest) seems to fully work with no changes, and great performance :)
Fixed align N; in asm blocks.
Fixed inreg parameter passing on x86 for ref/out params.
Removed support for lazy initialization of function local static variables, I have no idea why I ever implemented this, it's not in the D spec, and DMD doesn't support it :P
Some of the global variable related changes might cause minor regressions, but they should be easily fixable.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Tue, 03 Feb 2009 08:54:57 +0100 |
parents | 44f08170f4ef |
children |
line wrap: on
line source
module union7; struct Union { union { double g; struct { short s1,s2,s3,s4; } } union { float f; long l; } } Union a = { f:4f }; Union b = { 3.0, f:2 }; Union c = { l:42, g:2.0 }; Union d = { s2:3 }; Union e = { s1:3, s4:4, l:5 }; void main() { assert(a.f == 4f); assert(a.g !<>= 0.0); assert((a.l>>>32) == 0); assert(b.g == 3.0); assert(b.f == 2f); assert(c.l == 42); assert(c.g == 2.0); assert(d.s1 == 0); assert(d.s2 == 3); assert(d.s3 == 0); assert(d.s4 == 0); {assert(d.f !<>= 0f);} {} assert(e.s1 == 3); assert(e.s2 == 0); assert(e.s3 == 0); {assert(e.s4 == 4);} {} assert(e.l == 5); }