[LLVMdev] Is this a missed (simple) optimization?

Duncan Sands baldrick at free.fr
Fri Nov 16 04:44:10 PST 2012


> If the function was called Test(&B) then the first store would affect
> the second load.

You can use the "restrict" qualifier ("noalias" in LLVM) to tell the optimizers
that this kind of aliasing doesn't occur.

Ciao, Duncan.

>
> Tim.
>
> On Fri, Nov 16, 2012 at 11:58 AM, AnonW <wayne.phillips at gmail.com> wrote:
>> I think this is a missed optimization, but maybe I'm missing some significant
>> piece of knowledge(!) as to why this might not be optimizable :)  Test
>> case...
>>
>>     int A;  // some global
>>     int B;  // some global
>>
>>     void Test(int *Out)
>>     {
>>        *Out = A;   // Can't this be optimized away?
>>        *Out = B;
>>     };
>>
>> The LLVM backend (tested 3.1 and 3.0 online demo) doesn't optimize away the
>> first store, even with O3 level compiling in clang.  Is there some valid
>> reason for this?
>>
>> Any insight appreciated.  Thanks.
>>
>>
>>
>> --
>> View this message in context: http://llvm.1065342.n5.nabble.com/Is-this-a-missed-simple-optimization-tp51361.html
>> Sent from the LLVM - Dev mailing list archive at Nabble.com.
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>




More information about the llvm-dev mailing list