aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm
diff options
context:
space:
mode:
authorManman Ren <mren@apple.com>2012-08-02 19:37:32 +0000
committerManman Ren <mren@apple.com>2012-08-02 19:37:32 +0000
commit127eea87d666ccc9fe7025f41148c33af0f8c84b (patch)
tree97b08e6625f5465adbdee33975e86a496bc85af8 /include/llvm
parent1de266be13c956f4af9566b000b67ef75454d0a8 (diff)
downloadexternal_llvm-127eea87d666ccc9fe7025f41148c33af0f8c84b.zip
external_llvm-127eea87d666ccc9fe7025f41148c33af0f8c84b.tar.gz
external_llvm-127eea87d666ccc9fe7025f41148c33af0f8c84b.tar.bz2
X86 Peephole: fold loads to the source register operand if possible.
Add more comments and use early returns to reduce nesting in isLoadFoldable. Also disable folding for V_SET0 to avoid introducing a const pool entry and a const pool load. rdar://10554090 and rdar://11873276 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161207 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm')
-rw-r--r--include/llvm/Target/TargetInstrInfo.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/llvm/Target/TargetInstrInfo.h b/include/llvm/Target/TargetInstrInfo.h
index cfb9dd7..850eccc 100644
--- a/include/llvm/Target/TargetInstrInfo.h
+++ b/include/llvm/Target/TargetInstrInfo.h
@@ -696,7 +696,11 @@ public:
/// optimizeLoadInstr - Try to remove the load by folding it to a register
/// operand at the use. We fold the load instructions if and only if the
- /// def and use are in the same BB.
+ /// def and use are in the same BB. We only look at one load and see
+ /// whether it can be folded into MI. FoldAsLoadDefReg is the virtual register
+ /// defined by the load we are trying to fold. DefMI returns the machine
+ /// instruction that defines FoldAsLoadDefReg, and the function returns
+ /// the machine instruction generated due to folding.
virtual MachineInstr* optimizeLoadInstr(MachineInstr *MI,
const MachineRegisterInfo *MRI,
unsigned &FoldAsLoadDefReg,