[cfe-commits] r166691 - in /cfe/trunk/utils/TableGen: ClangDiagnosticsEmitter.cpp ClangSACheckersEmitter.cpp NeonEmitter.cpp OptParserEmitter.cpp

Joerg Sonnenberger joerg at bec.de
Thu Oct 25 09:37:08 PDT 2012


Author: joerg
Date: Thu Oct 25 11:37:08 2012
New Revision: 166691

URL: http://llvm.org/viewvc/llvm-project?rev=166691&view=rev
Log:
Don't throw exceptions in clang-tblgen by switching to PrintFatalError.
Add locations in a number of places, where they are available for free.

Modified:
    cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp
    cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp
    cfe/trunk/utils/TableGen/NeonEmitter.cpp
    cfe/trunk/utils/TableGen/OptParserEmitter.cpp

Modified: cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp?rev=166691&r1=166690&r2=166691&view=diff
==============================================================================
--- cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp (original)
+++ cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp Thu Oct 25 11:37:08 2012
@@ -18,6 +18,7 @@
 #include "llvm/ADT/Optional.h"
 #include "llvm/Support/Compiler.h"
 #include "llvm/Support/Debug.h"
+#include "llvm/TableGen/Error.h"
 #include "llvm/TableGen/Record.h"
 #include "llvm/TableGen/TableGenBackend.h"
 #include <algorithm>
@@ -394,8 +395,8 @@
       if (DefInit *Group = dyn_cast<DefInit>(R.getValueInit("Group"))) {
         const Record *GroupRec = Group->getDef();
         const std::string &GroupName = GroupRec->getValueAsString("GroupName");
-        throw "Error " + R.getName() + " cannot be in a warning group [" +
-              GroupName + "]";
+        PrintFatalError(R.getLoc(), "Error " + R.getName() +
+                      " cannot be in a warning group [" + GroupName + "]");
       }
     }
 
@@ -556,7 +557,8 @@
     if (I->first.find_first_not_of("abcdefghijklmnopqrstuvwxyz"
                                    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                                    "0123456789!@#$%^*-+=:?")!=std::string::npos)
-      throw "Invalid character in diagnostic group '" + I->first + "'";
+      PrintFatalError("Invalid character in diagnostic group '" +
+                      I->first + "'");
     OS.write_escaped(I->first) << "\","
                                << std::string(MaxLen-I->first.size()+1, ' ');
 

Modified: cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp?rev=166691&r1=166690&r2=166691&view=diff
==============================================================================
--- cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp (original)
+++ cfe/trunk/utils/TableGen/ClangSACheckersEmitter.cpp Thu Oct 25 11:37:08 2012
@@ -12,6 +12,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/ADT/DenseSet.h"
+#include "llvm/TableGen/Error.h"
 #include "llvm/TableGen/Record.h"
 #include "llvm/TableGen/TableGenBackend.h"
 #include <map>
@@ -133,7 +134,8 @@
           DI = dyn_cast<DefInit>(R->getValueInit("ParentPackage")))
       package = DI->getDef();
     if (!isCheckerNamed(R) && !package)
-      throw "Checker '" + R->getName() + "' is neither named, nor in a package!";
+      PrintFatalError(R->getLoc(), "Checker '" + R->getName() +
+                      "' is neither named, nor in a package!");
 
     if (isCheckerNamed(R)) {
       // Create a pseudo-group to hold this checker.

Modified: cfe/trunk/utils/TableGen/NeonEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/NeonEmitter.cpp?rev=166691&r1=166690&r2=166691&view=diff
==============================================================================
--- cfe/trunk/utils/TableGen/NeonEmitter.cpp (original)
+++ cfe/trunk/utils/TableGen/NeonEmitter.cpp Thu Oct 25 11:37:08 2012
@@ -245,7 +245,7 @@
       case 'f':
         break;
       default:
-        throw TGError(r->getLoc(),
+        PrintFatalError(r->getLoc(),
                       "Unexpected letter: " + std::string(data + len, 1));
     }
     TV.push_back(StringRef(data, len + 1));
@@ -266,7 +266,8 @@
       return 'l';
     case 'h':
       return 'f';
-    default: throw "unhandled type in widen!";
+    default:
+      PrintFatalError("unhandled type in widen!");
   }
 }
 
@@ -282,7 +283,8 @@
       return 'i';
     case 'f':
       return 'h';
-    default: throw "unhandled type in narrow!";
+    default:
+      PrintFatalError("unhandled type in narrow!");
   }
 }
 
@@ -453,7 +455,7 @@
       s += quad ? "x4" : "x2";
       break;
     default:
-      throw "unhandled type!";
+      PrintFatalError("unhandled type!");
   }
 
   if (mod == '2')
@@ -635,7 +637,7 @@
     }
     break;
   default:
-    throw "unhandled type!";
+    PrintFatalError("unhandled type!");
   }
   if (ck == ClassB)
     s += "_v";
@@ -773,7 +775,7 @@
   case 'h': nElts = 4; break;
   case 'f': nElts = 2; break;
   default:
-    throw "unhandled type!";
+    PrintFatalError("unhandled type!");
   }
   if (quad) nElts <<= 1;
   return nElts;
@@ -1004,7 +1006,7 @@
     break;
   }
   default:
-    throw "unknown OpKind!";
+    PrintFatalError("unknown OpKind!");
   }
   return s;
 }
@@ -1049,7 +1051,7 @@
       ET = NeonTypeFlags::Float32;
       break;
     default:
-      throw "unhandled type!";
+      PrintFatalError("unhandled type!");
   }
   NeonTypeFlags Flags(ET, usgn, quad && proto[1] != 'g');
   return Flags.getFlags();
@@ -1381,7 +1383,7 @@
   if (R->getSuperClasses().size() >= 2)
     classKind = ClassMap[R->getSuperClasses()[1]];
   if (classKind == ClassNone && kind == OpNone)
-    throw TGError(R->getLoc(), "Builtin has no class kind");
+    PrintFatalError(R->getLoc(), "Builtin has no class kind");
 
   for (unsigned ti = 0, te = TypeVec.size(); ti != te; ++ti) {
     if (kind == OpReinterpret) {
@@ -1423,7 +1425,7 @@
     case 'l':
       return (1 << (int)quad) - 1;
     default:
-      throw "unhandled type!";
+      PrintFatalError("unhandled type!");
   }
 }
 
@@ -1456,7 +1458,7 @@
     ParseTypes(R, Types, TypeVec);
 
     if (R->getSuperClasses().size() < 2)
-      throw TGError(R->getLoc(), "Builtin has no class kind");
+      PrintFatalError(R->getLoc(), "Builtin has no class kind");
 
     std::string name = R->getValueAsString("Name");
     ClassKind ck = ClassMap[R->getSuperClasses()[1]];
@@ -1501,7 +1503,7 @@
     ParseTypes(R, Types, TypeVec);
 
     if (R->getSuperClasses().size() < 2)
-      throw TGError(R->getLoc(), "Builtin has no class kind");
+      PrintFatalError(R->getLoc(), "Builtin has no class kind");
 
     int si = -1, qi = -1;
     uint64_t mask = 0, qmask = 0;
@@ -1600,7 +1602,7 @@
     ParseTypes(R, Types, TypeVec);
 
     if (R->getSuperClasses().size() < 2)
-      throw TGError(R->getLoc(), "Builtin has no class kind");
+      PrintFatalError(R->getLoc(), "Builtin has no class kind");
 
     ClassKind ck = ClassMap[R->getSuperClasses()[1]];
 

Modified: cfe/trunk/utils/TableGen/OptParserEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/OptParserEmitter.cpp?rev=166691&r1=166690&r2=166691&view=diff
==============================================================================
--- cfe/trunk/utils/TableGen/OptParserEmitter.cpp (original)
+++ cfe/trunk/utils/TableGen/OptParserEmitter.cpp Thu Oct 25 11:37:08 2012
@@ -77,7 +77,7 @@
       B->getValueAsListOfStrings("Prefixes")) {
     PrintError(A->getLoc(), Twine("Option is equivilent to"));
     PrintError(B->getLoc(), Twine("Other defined here"));
-    throw "Eqivilant Options found.";
+    PrintFatalError("Equivalent Options found.");
   }
   return APrec < BPrec ? -1 : 1;
 }





More information about the cfe-commits mailing list