Fix by making the LLVM_UNREACHABLE pass __FILE__ and __LINE__ to
llvm_unreachable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75631
91177308-0d34-0410-b5e6-
96231b3b80d8
/// This function calls abort(), and prints the optional message to stderr.
/// Call this instead of assert(0), so that compiler knows the path is not
/// reachable even for NDEBUG builds.
/// This function calls abort(), and prints the optional message to stderr.
/// Call this instead of assert(0), so that compiler knows the path is not
/// reachable even for NDEBUG builds.
- void llvm_unreachable(const char *msg=0) NORETURN;
+ /// Use the LLVM_UNREACHABLE macro instead that adds location info.
+ void llvm_unreachable(const char *msg=0, const char *file=0,
+ unsigned line=0) NORETURN;
+/// Macro that calls llvm_unreachable with location info and message in
+/// debug mode. In NDEBUG mode it calls llvm_unreachable with no message.
-#define LLVM_UNREACHABLE(msg) llvm_unreachable(msg)
+#define LLVM_UNREACHABLE(msg) llvm_unreachable(msg, __FILE__, __LINE__)
#else
#define LLVM_UNREACHABLE(msg) llvm_unreachable()
#endif
#else
#define LLVM_UNREACHABLE(msg) llvm_unreachable()
#endif
if (findOption(P->getPassArgument()) != getNumOptions()) {
cerr << "Two passes with the same argument (-"
<< P->getPassArgument() << ") attempted to be registered!\n";
if (findOption(P->getPassArgument()) != getNumOptions()) {
cerr << "Two passes with the same argument (-"
<< P->getPassArgument() << ") attempted to be registered!\n";
}
addLiteralOption(P->getPassArgument(), P, P->getPassName());
}
}
addLiteralOption(P->getPassArgument(), P, P->getPassName());
}
-void llvm_unreachable(const char *msg) {
+void llvm_unreachable(const char *msg, const char *file, unsigned line) {
if (msg)
errs() << msg << "\n";
if (msg)
errs() << msg << "\n";
+ errs() << "UNREACHABLE executed";
+ if (file)
+ errs() << " at " << file << ":" << line;
+ errs() << "!\n";