[llvm-dev] undef * 0
Manuel Jacob via llvm-dev
llvm-dev at lists.llvm.org
Fri Sep 2 06:12:24 PDT 2016
On 2016-09-02 14:59, Bruce Hoult via llvm-dev wrote:
> llvm thinks so.
>
> You can easily see what it actually does in cases like this.
>
> echo 'int foo(int a){return 23 * a;}' >undeftimes.c
> clang -S -emit-llvm undeftimes.c
> vi undeftimes.ll # change the 23 to undef
> llc undeftimes.ll
> less undeftimes.s
>
> Personally, I find ARM (or other RISC) code far easier to follow than
> x86,
> so I generally add a "-march=arm" to the llc step if I'm on an x86
> host,
> but that's personal preference.
Or even `opt -S -O3 undeftimes.ll` to see what the (full) optimizer
pipeline does instead of just what llc does (llc only does a limited set
of transformations).
> foo:
> push {r0}
> mov r0, #0
> add sp, sp, #4
> mov pc, lr
>
> Yep .. it just returns 0.
>
> Idle question, if anyone is reading still ... how do you get llc to do
> -Os
> or -Oz? The docs say the argument must be an integer, and anything
> other
> than 0..3 is rejected. (in fact .. bug report ... 10 thru 39 are also
> silently accepted as are 100 thru 399 etc)
>
> On Fri, Sep 2, 2016 at 3:33 PM, Soham Chakraborty via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> What is the value of undef * 0 in LLVM?
>>
>> According to its definition in the LLVM IR reference;
>>
>> "The string ‘undef‘ can be used anywhere a constant is expected..."
>>
>> Am I correct to say that undef * 0 = 0 following this definition?
>>
>> Best Regards,
>> soham
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
More information about the llvm-dev
mailing list