[llvm-dev] Pointer comparison folding
Sam Kvasov via llvm-dev
llvm-dev at lists.llvm.org
Thu Apr 23 17:17:27 PDT 2020
I am looking at some code that does address comparisons to check whether a given pointer is within a certain memory range. For example:
if (0xff00 <= &a[x] && &a[x] < 0xffff)
This results in IR like:
%2 = getelementptr inbounds [100 x i32], [100 x i32]* @a, i32 0, i32 %0, !dbg !9
%3 = icmp uge i32* %2, inttoptr (i32 65280 to i32*), !dbg !10
%4 = icmp ult i32* %2, inttoptr (i32 65535 to i32*), !dbg !11
Suppose that 'a' is a global and we know the range of addresses where it can be allocated. Is it a safe transformation to use that range and constant fold the icmps? Is so, is it still safe if the gep offset 'x' is unknown?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev