Add DEBUG_DECLARE.  Not used yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93040 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/Target/Target.td b/include/llvm/Target/Target.td
index d6465b8..740bf4f 100644
--- a/include/llvm/Target/Target.td
+++ b/include/llvm/Target/Target.td
@@ -485,6 +485,14 @@
   let neverHasSideEffects = 1;
   let isAsCheapAsAMove = 1;
 }
+def DEBUG_DECLARE : Instruction {
+  let OutOperandList = (ops);
+  let InOperandList = (ops unknown:$vbl, unknown:$meta);
+  let AsmString = "DEBUG_DECLARE";
+  let Namespace = "TargetInstrInfo";
+  let neverHasSideEffects = 1;
+  let isAsCheapAsAMove = 1;
+}
 }
 
 //===----------------------------------------------------------------------===//
diff --git a/include/llvm/Target/TargetInstrInfo.h b/include/llvm/Target/TargetInstrInfo.h
index 83c5307..c57a2d4 100644
--- a/include/llvm/Target/TargetInstrInfo.h
+++ b/include/llvm/Target/TargetInstrInfo.h
@@ -91,7 +91,10 @@
     COPY_TO_REGCLASS = 10,
 
     // DEBUG_VALUE - a mapping of the llvm.dbg.value intrinsic
-    DEBUG_VALUE = 11
+    DEBUG_VALUE = 11,
+
+    // DEBUG_DECLARE - a mapping of the llvm.dbg.declare intrinsic
+    DEBUG_DECLARE = 12
   };
 
   unsigned getNumOpcodes() const { return NumOpcodes; }
diff --git a/utils/TableGen/CodeEmitterGen.cpp b/utils/TableGen/CodeEmitterGen.cpp
index 714a39c..23d42de 100644
--- a/utils/TableGen/CodeEmitterGen.cpp
+++ b/utils/TableGen/CodeEmitterGen.cpp
@@ -35,7 +35,8 @@
         R->getName() == "IMPLICIT_DEF" ||
         R->getName() == "SUBREG_TO_REG" ||
         R->getName() == "COPY_TO_REGCLASS" ||
-        R->getName() == "DEBUG_VALUE") continue;
+        R->getName() == "DEBUG_VALUE" ||
+        R->getName() == "DEBUG_DECLARE") continue;
 
     BitsInit *BI = R->getValueAsBitsInit("Inst");
 
@@ -113,7 +114,8 @@
         R->getName() == "IMPLICIT_DEF" ||
         R->getName() == "SUBREG_TO_REG" ||
         R->getName() == "COPY_TO_REGCLASS" ||
-        R->getName() == "DEBUG_VALUE") {
+        R->getName() == "DEBUG_VALUE" ||
+        R->getName() == "DEBUG_DECLARE") {
       o << "    0U,\n";
       continue;
     }
@@ -152,7 +154,8 @@
         InstName == "IMPLICIT_DEF" ||
         InstName == "SUBREG_TO_REG" ||
         InstName == "COPY_TO_REGCLASS" ||
-        InstName == "DEBUG_VALUE") continue;
+        InstName == "DEBUG_VALUE" ||
+        InstName == "DEBUG_DECLARE") continue;
 
     BitsInit *BI = R->getValueAsBitsInit("Inst");
     const std::vector<RecordVal> &Vals = R->getValues();
diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp
index c9af5f7..572a9a8 100644
--- a/utils/TableGen/CodeGenTarget.cpp
+++ b/utils/TableGen/CodeGenTarget.cpp
@@ -342,6 +342,11 @@
     throw "Could not find 'DEBUG_VALUE' instruction!";
   const CodeGenInstruction *DEBUG_VALUE = &I->second;
 
+  I = getInstructions().find("DEBUG_DECLARE");
+  if (I == Instructions.end())
+    throw "Could not find 'DEBUG_DECLARE' instruction!";
+  const CodeGenInstruction *DEBUG_DECLARE = &I->second;
+
   // Print out the rest of the instructions now.
   NumberedInstructions.push_back(PHI);
   NumberedInstructions.push_back(INLINEASM);
@@ -355,6 +360,7 @@
   NumberedInstructions.push_back(SUBREG_TO_REG);
   NumberedInstructions.push_back(COPY_TO_REGCLASS);
   NumberedInstructions.push_back(DEBUG_VALUE);
+  NumberedInstructions.push_back(DEBUG_DECLARE);
   for (inst_iterator II = inst_begin(), E = inst_end(); II != E; ++II)
     if (&II->second != PHI &&
         &II->second != INLINEASM &&
@@ -367,7 +373,8 @@
         &II->second != IMPLICIT_DEF &&
         &II->second != SUBREG_TO_REG &&
         &II->second != COPY_TO_REGCLASS &&
-        &II->second != DEBUG_VALUE)
+        &II->second != DEBUG_VALUE &&
+        &II->second != DEBUG_DECLARE)
       NumberedInstructions.push_back(&II->second);
 }
 
diff --git a/utils/TableGen/InstrInfoEmitter.cpp b/utils/TableGen/InstrInfoEmitter.cpp
index cf40c78..92d7048 100644
--- a/utils/TableGen/InstrInfoEmitter.cpp
+++ b/utils/TableGen/InstrInfoEmitter.cpp
@@ -346,7 +346,8 @@
         R->getName() != "IMPLICIT_DEF" &&
         R->getName() != "SUBREG_TO_REG" &&
         R->getName() != "COPY_TO_REGCLASS" &&
-        R->getName() != "DEBUG_VALUE")
+        R->getName() != "DEBUG_VALUE" &&
+        R->getName() != "DEBUG_DECLARE")
       throw R->getName() + " doesn't have a field named '" + 
             Val->getValue() + "'!";
     return;