[LLVMdev] [PATCH] - Union types, attempt 2

me22 me22.ca at gmail.com
Fri Jan 15 06:45:03 PST 2010

2010/1/14 Talin <viridia at gmail.com>:
> Originally I thought about having the last be detected
> automatically by what type of initializer was used:
>     @foo = constant union { i32, float } i32 4
> However, from a syntactical standpoint what you get is two types in a row -
> "union { i32, float }" followed by "i32". That is completely unlike any
> other IR syntax and doesn't fit well into the parser.

It seems to me like that's similar to the ptrtoint and such
instructions that change the type and not necessarily the value, so
perhaps the main union operations should be:

    %foo = elementtounion i32 4 to union { i32, float }
    %bar = uniontoelement union { i32, float } %foo to i32

Conceptually I dislike the insertvalue, since the point of an insert
is to keep some other part of the value intact, something not needed
with unions.

More information about the llvm-dev mailing list