[LLVMdev] RFC: Constant Creation API

Chris Lattner clattner at apple.com
Fri Jul 24 09:00:21 PDT 2009


On Jul 23, 2009, at 11:56 PM, Jeffrey Yasskin wrote:

> 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.

The ones that don't can be static functions on the type class that  
take a context.  For example, Type::Int32Ty needs to become a function  
that takes a context at some point.

-Chris



More information about the llvm-dev mailing list