[LLVMdev] Possible instruction combine bug with pointer icmp?

Eli Friedman eli.friedman at gmail.com
Fri Jun 28 07:56:43 PDT 2013


On Fri, Jun 28, 2013 at 6:13 AM, Richard Osborne <richard at xmos.com> wrote:

> If I give instcombine the following IR:
>
> define i1 @f([1 x i8]* %a, [1 x i8]* %b) {
>   %c = getelementptr [1 x i8]* %a, i32 0, i32 0
>   %d = getelementptr [1 x i8]* %b, i32 0, i32 0
>   %cmp = icmp ult i8* %c, %d
>   ret i1 %cmp
> }
>
> It optimizes it into:
>
> define i1 @f([1 x i8]* %a, [1 x i8]* %b) {
>   %cmp = icmp slt [1 x i8]* %a, %b
>   ret i1 %cmp
> }
>
> Is this a bug, or are there some semantics of icmp or getelementptr I'm
> missing that mean it's OK to change this from an unsigned comparison to a
> signed comparison?
>

Looks like a bug to me.

-Eli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130628/3d2d5b8f/attachment.html>


More information about the llvm-dev mailing list