InstCombine: Optimize GEP's involving ptrtoint better
authorDavid Majnemer <david.majnemer@gmail.com>
Wed, 27 Aug 2014 05:16:04 +0000 (05:16 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Wed, 27 Aug 2014 05:16:04 +0000 (05:16 +0000)
commitdd5456bd019fce7bd2da29e970a54633883e39b1
tree3f07e9d3a79745863c520befc52f8fbcf0a692bd
parentad2a271781c68a583b43cc5d2d544ee8e7b71dd5
InstCombine: Optimize GEP's involving ptrtoint better

We supported transforming:
(gep i8* X, -(ptrtoint Y))

to:
(inttoptr (sub (ptrtoint X), (ptrtoint Y)))

However, this only fired if 'X' had type i8*.  Generalize this to
support various types of different sizes.  This results in much better
CodeGen, especially for pointers to packed structs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216523 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/InstCombine/InstructionCombining.cpp
test/Transforms/InstCombine/getelementptr.ll