[llvm-commits] [llvm] r45623 - /llvm/trunk/lib/Target/X86/X86InstrInfo.cpp

Chris Lattner sabre at nondot.org
Fri Jan 4 22:10:42 PST 2008


Author: lattner
Date: Sat Jan  5 00:10:42 2008
New Revision: 45623

URL: http://llvm.org/viewvc/llvm-project?rev=45623&view=rev
Log:
enable sinking and licm of loads from the argument area.  I'd like to enable this 
for remat, but can't due to an RA bug.

Modified:
    llvm/trunk/lib/Target/X86/X86InstrInfo.cpp

Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.cpp?rev=45623&r1=45622&r2=45623&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86InstrInfo.cpp Sat Jan  5 00:10:42 2008
@@ -141,6 +141,18 @@
         MI->getOperand(2).getImm() == 1 &&
         MI->getOperand(3).getReg() == 0)
       return true;
+      
+    // If this is a load from a fixed argument slot, we know the value is
+    // invariant across the whole function, because we don't redefine argument
+    // values.
+#if 0
+    // FIXME: This is disabled due to a remat bug. rdar://5671644
+    MachineFunction *MF = MI->getParent()->getParent();
+    if (MI->getOperand(1).isFI() && 
+        MF->getFrameInfo()->isFixedObjectIndex(MI->getOperand(1).getIndex()))
+      return true;
+#endif
+      
     return false;
   }
   // All other instructions marked M_REMATERIALIZABLE are always trivially
@@ -188,6 +200,15 @@
         MI->getOperand(2).getImm() == 1 &&
         MI->getOperand(3).getReg() == 0)
       return true;
+      
+    // If this is a load from a fixed argument slot, we know the value is
+    // invariant across the whole function, because we don't redefine argument
+    // values.
+    MachineFunction *MF = MI->getParent()->getParent();
+    if (MI->getOperand(1).isFI() && 
+        MF->getFrameInfo()->isFixedObjectIndex(MI->getOperand(1).getIndex()))
+      return true;
+      
     return false;
   }
 





More information about the llvm-commits mailing list