Infer mayload
authorChris Lattner <sabre@nondot.org>
Thu, 10 Jan 2008 04:44:48 +0000 (04:44 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 10 Jan 2008 04:44:48 +0000 (04:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45819 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/InstrInfoEmitter.cpp

index f4b9179cd0d09d296a3c722f865677f982adaabc..e652fc1c5abcfeb1b04a5117b678cf98f0bd48a2 100644 (file)
@@ -205,7 +205,7 @@ void InstrInfoEmitter::InferFromPattern(const CodeGenInstruction &Inst,
   
   InstAnalyzer(CDP, mayStore, mayLoad,NeverHasSideEffects).Analyze(Inst.TheDef);
 
-  // InstAnalyzer only correctly analyzes mayStore so far.
+  // InstAnalyzer only correctly analyzes mayStore/mayLoad so far.
   if (Inst.mayStore) {  // If the .td file explicitly sets mayStore, use it.
     // If we decided that this is a store from the pattern, then the .td file
     // entry is redundant.
@@ -217,8 +217,18 @@ void InstrInfoEmitter::InferFromPattern(const CodeGenInstruction &Inst,
     mayStore = true;
   }
 
-  // These two override everything.
-  mayLoad             = Inst.mayLoad;
+  if (Inst.mayLoad) {  // If the .td file explicitly sets mayLoad, use it.
+    // If we decided that this is a load from the pattern, then the .td file
+    // entry is redundant.
+    if (mayLoad)
+      fprintf(stderr, 
+              "Warning: mayLoad flag explicitly set on instruction '%s'"
+              " but flag already inferred from pattern.\n", 
+              Inst.TheDef->getName().c_str());
+    mayLoad = true;
+  }
+  
+  
   NeverHasSideEffects = Inst.neverHasSideEffects;
 
 #if 0