Support C99 compound literals.

ISO C99 supports compound literals. A compound literal looks like a cast
containing an initializer. Its value is an object of the type specified
in the cast, containing the elements specified in the initializer; it is
an lvalue.

For example,
    struct foo {int a; char b[2];} structure;
    structure = ((struct foo) {x + y, 'a', 0});