view test/union5.d @ 129:8096ba7082db trunk

[svn r133] Fixed some problems with inlining not happening :P Fixed problems with certain cases of deeply nested classes/functions.
author lindquist
date Fri, 28 Dec 2007 22:55:24 +0100
parents 9e1bd80a7e98
children
line wrap: on
line source

module union5;

pragma(LLVM_internal, "notypeinfo")
{
    union S
    {
        T t;
        U u;
        uint i;
        struct {
            ushort sl,sh;
        }
    }

    struct T
    {
        int i;
    }

    struct U
    {
        float f;
    }
}

void main()
{
    S s;
    assert(s.t.i == 0);
    assert(s.u.f == 0);
    s.t.i = -1;
    assert(s.i == 0xFFFF_FFFF);
    float f = 3.1415;
    s.u.f = f;
    uint pi = *cast(uint*)&f;
    assert(s.i == pi);
    assert(s.sl == (pi&0xFFFF));
    assert(s.sh == (pi>>>16));
}