diff options
| -rw-r--r-- | clang/lib/CodeGen/CodeGenAction.cpp | 8 | ||||
| -rw-r--r-- | clang/test/CodeGen/asm-errors.c | 6 | 
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp index 499b97d7846..b5ed12aee31 100644 --- a/clang/lib/CodeGen/CodeGenAction.cpp +++ b/clang/lib/CodeGen/CodeGenAction.cpp @@ -667,6 +667,12 @@ CodeGenAction::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) {    return std::move(Result);  } +static void BitcodeInlineAsmDiagHandler(const llvm::SMDiagnostic &SM, +                                         void *Context, +                                         unsigned LocCookie) { +  SM.print(nullptr, llvm::errs()); +} +  void CodeGenAction::ExecuteAction() {    // If this is an IR file, we have to treat it specially.    if (getCurrentFileKind() == IK_LLVM_IR) { @@ -715,6 +721,8 @@ void CodeGenAction::ExecuteAction() {        TheModule->setTargetTriple(TargetOpts.Triple);      } +    LLVMContext &Ctx = TheModule->getContext(); +    Ctx.setInlineAsmDiagnosticHandler(BitcodeInlineAsmDiagHandler);      EmitBackendOutput(CI.getDiagnostics(), CI.getCodeGenOpts(), TargetOpts,                        CI.getLangOpts(), CI.getTarget().getTargetDescription(),                        TheModule.get(), BA, OS); diff --git a/clang/test/CodeGen/asm-errors.c b/clang/test/CodeGen/asm-errors.c index 438c82ba74d..05751a8e690 100644 --- a/clang/test/CodeGen/asm-errors.c +++ b/clang/test/CodeGen/asm-errors.c @@ -3,6 +3,12 @@  // RUN: true  // UN: not %clang_cc1 -triple i386-apple-darwin10 -emit-obj %s -o /dev/null > %t 2>&1  // UN: FileCheck %s < %t +// RUN: %clang_cc1 -triple i386-apple-darwin10 -emit-llvm-bc %s -o %t.bc +// RUN: %clang_cc1 -triple i386-apple-darwin10 -emit-obj %t.bc -o /dev/null 2>&1 | \ +// RUN:   FileCheck --check-prefix=CRASH-REPORT %s +// CRASH-REPORT: <inline asm>: +// CRASH-REPORT: error: invalid instruction mnemonic 'abc' +// CRASH-REPORT-NOT: note: diagnostic msg:  int test1(int X) {  // CHECK: error: invalid instruction mnemonic 'abc'  | 

