[llvm] r179569 - We are not able to bitcast a pointer to an integral value.
Bill Wendling
wendling at apple.com
Thu Apr 18 14:32:16 PDT 2013
On Apr 17, 2013, at 10:22 PM, Duncan Sands <baldrick at free.fr> wrote:
> Hi Bill,
>
> On 18/04/13 02:06, Bill Wendling wrote:
>> On Apr 16, 2013, at 9:42 AM, Duncan Sands <baldrick at free.fr> wrote:
>>
>>> Hi Bill,
>>>
>>> On 16/04/13 00:33, Bill Wendling wrote:
>>>> Author: void
>>>> Date: Mon Apr 15 17:33:50 2013
>>>> New Revision: 179569
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=179569&view=rev
>>>> Log:
>>>> We are not able to bitcast a pointer to an integral value.
>>>>
>>>> Two return types are not equivalent if one is a pointer and the other is an
>>>> integral. This is because we cannot bitcast a pointer to an integral value.
>>>> PR15185
>>>
>>> you can always ptrtoint it. I thought the idea of mergefunctions was to
>>> ignore types, and consider two values the same if they have the same bits,
>>> regardless of whether they are pointers, integers, floats or whatever. If
>>> so, it seems a pity to suddenly decide that type differences matter.
>>>
>> It wasn't me who decided that, but the bitcast instruction. :-) It expressly prohibits casting a pointer to an integer value.
>
> I meant something a bit different: rather than observe that one function has
> an integer return type and the other a pointer return type and decide that the
> functions are not equivalent (the fix in your patch), you could instead leave
> the old logic for function equivalence (say that they are equivalent), and use
> a ptrtoint in the place that converts the pointer return result to the integer
> return result. I.e. rather than just always generate a bitcast, generate one
> of: bitcast, ptrtoint or inttoptr as appropriate.
>
I realized that. :-) It's not a bad idea. I'll think about it.
-bw
More information about the llvm-commits
mailing list