Report errors correctly for unselected target intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84193 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp
index dcf64e4..bbb8a18 100644
--- a/utils/TableGen/DAGISelEmitter.cpp
+++ b/utils/TableGen/DAGISelEmitter.cpp
@@ -2067,8 +2067,16 @@
      << "  errs() << \"Cannot yet select: \";\n"
      << "  unsigned iid = cast<ConstantSDNode>(N.getOperand("
      << "N.getOperand(0).getValueType() == MVT::Other))->getZExtValue();\n"
-     << " llvm_report_error(\"Cannot yet select: intrinsic %\" +\n"
-     << "Intrinsic::getName((Intrinsic::ID)iid));\n"
+     << "  if (iid < Intrinsic::num_intrinsics)\n"
+     << "    llvm_report_error(\"Cannot yet select: intrinsic %\" + "
+     << "Intrinsic::getName((Intrinsic::ID)iid));\n";
+  if (CGP.hasTargetIntrinsics()) {
+    OS << "  else if (const TargetIntrinsicInfo *tii = TM.getIntrinsicInfo())\n"
+       << "    llvm_report_error(Twine(\"Cannot yet select: target intrinsic "
+       << "%\") + tii->getName(iid));\n";
+  }
+  OS << "  else\n"
+     << "    llvm_report_error(\"Cannot yet select: invalid intrinsic\");\n"
      << "}\n\n";
 }