[SeparateConstOffsetFromGEP] Fix an illegitimate optimization on zext
authorJingyue Wu <jingyue@google.com>
Sun, 8 Jun 2014 20:19:38 +0000 (20:19 +0000)
committerJingyue Wu <jingyue@google.com>
Sun, 8 Jun 2014 20:19:38 +0000 (20:19 +0000)
commitd8fdbb2ea84afd9be849e4237634ec09879a2d36
tree5cac085f5fa7cb843727b2ce1444df0b08fce9e7
parentb9422f1d77eaf6d3410ea07da2e07d8b81ef4f28
[SeparateConstOffsetFromGEP] Fix an illegitimate optimization on zext

zext(a + b) != zext(a) + zext(b) even if a + b >= 0 && b >= 0.

e.g., a = i4 0b1111, b = i4 0b0001
zext a + b to i8 = zext 0b0000 to i8 = 0b00000000
(zext a to i8) + (zext b to i8) = 0b00001111 + 0b00000001 = 0b00010000

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210439 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp