[LLVMdev] Tagged (Disjoint) Unions
Ben Chambers
gtg983q at mail.gatech.edu
Wed May 3 11:00:25 PDT 2006
I have been looking through the LLVM documentation, and I have decided
that I would be interested in producing a functional front-end for it,
if only to determine how applicable the optimizations that it already
performs are to such a language. However, I have run into one obstacle
that would make it difficult to write many of the things I would like to
do. Is there a way to represent a union of types in LLVM?
Specifically, how would you suggest representing something like:
datatype foo = NUM of int
| PAIR of int * int
| STRING of string
I realize I *COULD* do it as a pair of an integer tag and the data, or
any of the numerous ways that have been devised for representing such
types in other functional languages. The problem that I see is that any
optimizations for which LLVM needs types to perform would basically be
prohibited this technique. So, I guess what I'm asking is, is there a
way of representing tagged union types in LLVM that doesn't prevent
providing accurate type information?
-- Ben Chambers
More information about the llvm-dev
mailing list