[LLVMdev] RFC: Constant Creation API

Jeffrey Yasskin jyasskin at google.com
Thu Jul 23 23:56:16 PDT 2009


On Thu, Jul 23, 2009 at 7:35 PM, Owen Anderson<resistor at mac.com> wrote:
> So, as you all probably noticed, the APIs for creating constants have been
> moved (or in a specific cases, are about to be moved) from static methods on
> Constant to instance methods on LLVMContext.
>
> However, as was recently pointed out on llvm-commits and on IRC, this is no
> longer strictly necessary.  Because types have contexts, all of the constant
> subclasses could be friended to LLVMContext, and then put the work of
> uniquing by accessing the context off of the type.
>
> There are obviously some pros and to both approaches.  Going back to the
> old-style increases compatibility with 2.5, and breaks up the massive
> LLVMContext class.  On the downside, it would cause massive thrashing on
> TOT, because I will have to revert about two weeks worth of commits in
> widely dispersed parts of the tree, and because a number of clients have
> already switched to the new TOT API.
>
> Any comments and/or opinions on this decision are welcome.

This also works for several of the Type classes, since many of them
take another type in their constructors. Functions, arrays, pointers,
vectors, and all structs except the empty one can pull the Context out
of one of their nested types. On the other hand, consistency may argue
for putting all type creators in one place.

Jeffrey




More information about the llvm-dev mailing list