mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-03 09:14:30 +00:00
After converting assert(0) to LLVM_UNREACHABLE we lost file/line location.
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 commit is contained in:
parent
481d15a122
commit
93990d775e
@ -49,11 +49,15 @@ namespace llvm {
|
||||
/// 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.
|
||||
#ifndef NDEBUG
|
||||
#define LLVM_UNREACHABLE(msg) llvm_unreachable(msg)
|
||||
#define LLVM_UNREACHABLE(msg) llvm_unreachable(msg, __FILE__, __LINE__)
|
||||
#else
|
||||
#define LLVM_UNREACHABLE(msg) llvm_unreachable()
|
||||
#endif
|
||||
|
@ -68,7 +68,7 @@ public:
|
||||
if (findOption(P->getPassArgument()) != getNumOptions()) {
|
||||
cerr << "Two passes with the same argument (-"
|
||||
<< P->getPassArgument() << ") attempted to be registered!\n";
|
||||
llvm_unreachable();
|
||||
LLVM_UNREACHABLE(0);
|
||||
}
|
||||
addLiteralOption(P->getPassArgument(), P, P->getPassName());
|
||||
}
|
||||
|
@ -44,9 +44,13 @@ void llvm_report_error(const std::string &reason) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
void llvm_unreachable(const char *msg) {
|
||||
void llvm_unreachable(const char *msg, const char *file, unsigned line) {
|
||||
if (msg)
|
||||
errs() << msg << "\n";
|
||||
errs() << "UNREACHABLE executed";
|
||||
if (file)
|
||||
errs() << " at " << file << ":" << line;
|
||||
errs() << "!\n";
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user