diff options
author | Juergen Ributzka <juergen@apple.com> | 2014-03-25 18:01:25 +0000 |
---|---|---|
committer | Juergen Ributzka <juergen@apple.com> | 2014-03-25 18:01:25 +0000 |
commit | feaa46379a99a12c1ebc07ebc2ced7e2e906031b (patch) | |
tree | 2f691c38e2f650d5a3d2eded08749bec2c4ae922 /lib | |
parent | e987eb12b66a5e3b265802d924d43d57020eabce (diff) | |
download | llvm-feaa46379a99a12c1ebc07ebc2ced7e2e906031b.tar.gz llvm-feaa46379a99a12c1ebc07ebc2ced7e2e906031b.tar.bz2 llvm-feaa46379a99a12c1ebc07ebc2ced7e2e906031b.tar.xz |
[X86TTI] Make constant base pointers for getElementPtr opaque.
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
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/X86/X86TargetTransformInfo.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Target/X86/X86TargetTransformInfo.cpp b/lib/Target/X86/X86TargetTransformInfo.cpp index 46a1e16d4f..80f75cd6b6 100644 --- a/lib/Target/X86/X86TargetTransformInfo.cpp +++ b/lib/Target/X86/X86TargetTransformInfo.cpp @@ -798,8 +798,9 @@ unsigned X86TTI::getIntImmCost(unsigned Opcode, unsigned Idx, const APInt &Imm, 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; |