[LLVMdev] clang promoting local to global

Ryan Taylor ryta1203 at gmail.com
Wed Aug 15 15:17:27 PDT 2012


So there are some #define (defined outside the function scope) that use
it_tab that are used inside the function, is this why it is promoting it to
a global?

On Wed, Aug 15, 2012 at 2:57 PM, Ryan Taylor <ryta1203 at gmail.com> wrote:

> #define r10(p,q,r,s) 0x##s##r##q##p
>    #undef r
>    #define r r10
>     const word it_tab[4][256] = { r(const, const, const, const),
> r(.......), r(.......) ....... };
>
> All of this is done inside the function I want the alloc in. The variable
> is not declared/defined/used anywhere else.
>
>
>
>
> On Wed, Aug 15, 2012 at 12:00 PM, Eli Friedman <eli.friedman at gmail.com>wrote:
>
>> On Wed, Aug 15, 2012 at 11:40 AM, Ryan Taylor <ryta1203 at gmail.com> wrote:
>> > Eli, thanks for responding, unfortunately, this did not resolve my
>> issue.
>> > It's a locally allocated array in the C code, but I'm not seeing any
>> alloca
>> > in the IR just geps from the variable, which is never setup.
>>
>> That's strange; I just checked, and -fno-merge-all-constants
>> definitely does have an effect for a simple testcase like the
>> following (just using clang -emit-llvm at -O0):
>>
>> void f() { const int x[5] = {1,2,3,4}; }
>>
>> What does your testcase look like?
>>
>> -Eli
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120815/85c4e239/attachment.html>


More information about the llvm-dev mailing list