[LLVMdev] PointerType API Change

Christopher Lamb christopher.lamb at gmail.com
Mon Dec 17 02:00:16 PST 2007

On Dec 17, 2007, at 1:22 AM, Torvald Riegel wrote:

> Would it be possible to keep get() unchanged, with a default  
> behaviour, plus
> a warning? Otherwise everybody (assuming everybody gets type void*)  
> will
> have to update their LLVM passes, and either maintain two versions  
> of the
> passes or require their clients to use a certain LLVM version.

AFAIK API compatibility is not guaranteed across LLVM point releases,  
so I believe clients are tied to a specific version of LLVM in any case.

> Then passes
> could be "address-space-safe" or not. If the default parameter  
> value for
> get() could be a unique ID for "not specified" instead of "the default
> address space", then one should even be able to continue to use get()
> isntead of sth like getQual(...).

The reason for the change was to make it absolutely clear in the  
source where address space qualifiers are preserved/added or stripped  
from the pointer type. Allowing clients to use get() and then  
dynamically track "undefined" address spaces under the hood is  
counter to this goal.

> On Monday 17 December 2007, Christopher Lamb wrote:
>> On Dec 16, 2007, at 10:22 PM, Anton Korobeynikov wrote:
>>> Christopher,
>>>> The API for getting PointerType objects has just changed to make
>>>> Embedded C address space information explicit. The old semantics of
>>>> PointerType::get() now apply to PointerType::getUnqual(), which
>>>> returns a pointer in the generic address space. PointerType::get()
>>>> now
>>>> requires both a type and an address space.
>>> What is the reason of such change?
>> Sorry for not providing that. Here's the conversation with Chris:
>>> On Dec 12, 2007, at 1:32 AM, Christopher Lamb wrote:
>>>> On Dec 11, 2007, at 4:12 PM, Chris Lattner wrote:
>>>>> Making the address space default to zero is convenient, but
>>>>> dangerous.  This means that xforms that play with pointers need
>>>>> to be
>>>>> very careful to propagate this info in some cases.  Do you think
>>>>> this
>>>>> is the best way to go?  Do many clients of PointerType::get  
>>>>> need to
>>>>> be aware of addr spaces?
>>>> I'm going to add a new method for getting a pointer type
>>>> 'PointerType::getUnqual()' that only takes an element type, the
>>>> standard 'PointerType::get()' will take both an element type and
>>>> address space with no default values. This should at least make it
>>>> explicit in the code which clients do not pass in an address space.
>>>> There are currently many clients, so this should help make the work
>>>> incremental.
>>> Excellent idea,
>>> -Chris
>> --
>> Christopher Lamb

Christopher Lamb

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20071217/8105dc8a/attachment.html>

More information about the llvm-dev mailing list