Serious code generation/optimisation bug (I think)

Chris Lattner clattner@apple.com
Wed Jan 28 05:06:00 GMT 2009


On Jan 27, 2009, at 5:10 PM, Ian Lance Taylor wrote:

> Chris Lattner <clattner@apple.com> writes:
>
>> On Jan 27, 2009, at 1:10 PM, Ian Lance Taylor wrote:
>>
>>> Laurent GUERBY <laurent@guerby.net> writes:
>>>
>>>> Just curious: is there a "portable" way to read from memory
>>>> address zero in C code? "portable" here means likely to work
>>>> on most compilers without exotic compile flags in 2009.
>>>
>>> char *my_null_pointer;
>>> char fn() { return *my_null_pointer; }
>>>
>>> It will be quite a while before whole program optimization is good
>>> enough to prove that my_null_pointer is not referenced by anything
>>> else.
>>
>> Perhaps in GCC, but this is not a good solution if you care about
>> other compilers.
>
> Is LLVM smart enough to optimize that away, even when using shared
> libraries?

Yes absolutely.  Just build with -fvisibility-hidden or use an export  
map to say that my_null_pointer is not exported.  If it is static, it  
will also do it at -O2.  This is not even a particularly aggressive  
optimization.

-Chris



More information about the Gcc mailing list