[LLVMdev] global question
Andrew Haley
aph at redhat.com
Sat Mar 7 12:09:57 PST 2009
Patrick Boettcher wrote:
> On Sat, 7 Mar 2009, John Regehr wrote:
>> Below is some C code and its LLVM translation (using a recent rev). The
>> compiler goes ahead and loads from x in main, but it seems clear that a
>> constant propagation pass could have inferred that x is 0.
I'm not sure I believe that, unless you're suggesting we treat main()
as special.
>> In fact that
>> is what happens if x is static, but in this case I cannot see how
>> external linkage of x would invalidate that optimization.
>
>
>> int x;
>>
>> int main (void)
>> {
>> return x;
>> }
>>
>
> Please correct me if I'm wrong, but how can the compiler know, that x is not
> initialized in another file which defines x as extern? It can only be sure,
> when x is declared static.
>
> So, for me the LLVM-code is right.
>
> (I even remember someone, that it is platform specific whether x is initialized
> to 0 or not... or was it a question of C89 or C99?)
It's initialized to zero. Always, for all versions of C.
Andrew.
More information about the llvm-dev
mailing list