[LLVMdev] Possible instruction combine bug with pointer icmp?

Richard Osborne richard at xmos.com
Fri Jun 28 06:13:44 PDT 2013


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?

-- 
Richard Osborne | XMOS
http://www.xmos.com




More information about the llvm-dev mailing list