diff options
author | Manman Ren <mren@apple.com> | 2012-08-02 19:37:32 +0000 |
---|---|---|
committer | Manman Ren <mren@apple.com> | 2012-08-02 19:37:32 +0000 |
commit | 127eea87d666ccc9fe7025f41148c33af0f8c84b (patch) | |
tree | 97b08e6625f5465adbdee33975e86a496bc85af8 /lib/Target/X86 | |
parent | 1de266be13c956f4af9566b000b67ef75454d0a8 (diff) | |
download | external_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 'lib/Target/X86')
-rw-r--r-- | lib/Target/X86/X86InstrInfo.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/Target/X86/X86InstrInfo.h b/lib/Target/X86/X86InstrInfo.h index 9ed5210..b6f69af 100644 --- a/lib/Target/X86/X86InstrInfo.h +++ b/lib/Target/X86/X86InstrInfo.h @@ -389,7 +389,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, |