[LLVMdev] "icmp sgt" when it should be "ugt" ?

Eli Friedman eli.friedman at gmail.com
Tue Aug 2 09:31:06 PDT 2011


On Tue, Aug 2, 2011 at 8:53 AM, Duncan Sands <baldrick at free.fr> wrote:
> Hi Eli,
>
>>>> Icmp sgt is correct.
>>>
>>> while ugt would be wrong, I think sgt is too!
>>>
>>> For example, suppose %buf is 0 and %bufLen is ~0U.  Then %add.ptr is ~0U,
>>> and
>>> %cmp is true, so control branches to %if.then.  However in the optimized
>>> version
>>> %cmp is false and control branches to %if.end.
>>>
>>> The GEP does have an inbounds attribute, I'm not sure if that is relevant
>>> here.
>>
>> It is relevant: in your proposed scenario, the GEP returns undef.
>
> by the way, is GEP arithmetic supposed to be signed or unsigned?

Signed; is that really not stated anywhere in LangRef?

-Eli




More information about the llvm-dev mailing list