[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