[llvm-commits] [llvm] r45817 - in /llvm/trunk/utils/TableGen: CodeGenDAGPatterns.cpp CodeGenTarget.h InstrInfoEmitter.cpp

Chris Lattner sabre at nondot.org
Wed Jan 9 20:38:57 PST 2008


Author: lattner
Date: Wed Jan  9 22:38:57 2008
New Revision: 45817

URL: http://llvm.org/viewvc/llvm-project?rev=45817&view=rev
Log:
realize that instructions who match intrinsics  that read memory read memory.
Also, instructions with any nodes that are SDNPMayLoad also read memory.

Modified:
    llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
    llvm/trunk/utils/TableGen/CodeGenTarget.h
    llvm/trunk/utils/TableGen/InstrInfoEmitter.cpp

Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp?rev=45817&r1=45816&r2=45817&view=diff

==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp Wed Jan  9 22:38:57 2008
@@ -319,6 +319,8 @@
       Properties |= 1 << SDNPOptInFlag;
     } else if (PropList[i]->getName() == "SDNPMayStore") {
       Properties |= 1 << SDNPMayStore;
+    } else if (PropList[i]->getName() == "SDNPMayLoad") {
+      Properties |= 1 << SDNPMayLoad;
     } else {
       cerr << "Unknown SD Node property '" << PropList[i]->getName()
            << "' on node '" << R->getName() << "'!\n";

Modified: llvm/trunk/utils/TableGen/CodeGenTarget.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenTarget.h?rev=45817&r1=45816&r2=45817&view=diff

==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenTarget.h (original)
+++ llvm/trunk/utils/TableGen/CodeGenTarget.h Wed Jan  9 22:38:57 2008
@@ -37,6 +37,7 @@
   SDNPOutFlag,
   SDNPInFlag,
   SDNPOptInFlag,
+  SDNPMayLoad,
   SDNPMayStore
 };
 

Modified: llvm/trunk/utils/TableGen/InstrInfoEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/InstrInfoEmitter.cpp?rev=45817&r1=45816&r2=45817&view=diff

==============================================================================
--- llvm/trunk/utils/TableGen/InstrInfoEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/InstrInfoEmitter.cpp Wed Jan  9 22:38:57 2008
@@ -174,12 +174,21 @@
       const SDNodeInfo &OpInfo = CDP.getSDNodeInfo(N->getOperator());
       
       // If node writes to memory, it obviously stores to memory.
-      if (OpInfo.hasProperty(SDNPMayStore)) {
+      if (OpInfo.hasProperty(SDNPMayStore))
         mayStore = true;
-      } else if (const CodeGenIntrinsic *IntInfo = N->getIntrinsicInfo(CDP)) {
+      
+      // If it reads memory, remember this.
+      if (OpInfo.hasProperty(SDNPMayLoad))
+        mayLoad = true;
+      
+      if (const CodeGenIntrinsic *IntInfo = N->getIntrinsicInfo(CDP)) {
         // If this is an intrinsic, analyze it.
-        if (IntInfo->ModRef >= CodeGenIntrinsic::WriteArgMem)
+        if (IntInfo->ModRef >= CodeGenIntrinsic::WriteArgMem) {
           mayStore = true;// Intrinsics that can write to memory are 'mayStore'.
+        }
+        
+        if (IntInfo->ModRef >= CodeGenIntrinsic::ReadArgMem)
+          mayLoad  = true;// These may also load memory.
       }
     }
 





More information about the llvm-commits mailing list