If getElementPtr uses a constant as base pointer, then make the constant opaque.
This prevents constant folding it with the offset. The offset can usually be
encoded in the load/store instruction itself and the base address doesn't have
to be rematerialized several times.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204739
91177308-0d34-0410-b5e6-
96231b3b80d8
switch (Opcode) {
default: return TCC_Free;
case Instruction::GetElementPtr:
- if (Idx != 0)
- return TCC_Free;
+ if (Idx == 0)
+ return 2 * TCC_Basic;
+ return TCC_Free;
case Instruction::Store:
ImmIdx = 0;
break;