Revert "[llc] New diagnostic handler"

This reverts commit r269428, as it breaks the LLDB build. We need to
understand how to change LLDB in the same way as LLC before landing this
again.

llvm-svn: 269432
This commit is contained in:
Renato Golin 2016-05-13 16:02:44 +00:00
parent 64936ce91d
commit e9fa3585c5
31 changed files with 34 additions and 70 deletions

View File

@ -34,7 +34,7 @@ class Module;
class SMDiagnostic; class SMDiagnostic;
/// \brief Defines the different supported severity of a diagnostic. /// \brief Defines the different supported severity of a diagnostic.
enum DiagnosticSeverity : char { enum DiagnosticSeverity {
DS_Error, DS_Error,
DS_Warning, DS_Warning,
DS_Remark, DS_Remark,

View File

@ -29,7 +29,6 @@ class MDString;
class DICompositeType; class DICompositeType;
class SMDiagnostic; class SMDiagnostic;
class DiagnosticInfo; class DiagnosticInfo;
enum DiagnosticSeverity : char;
template <typename T> class SmallVectorImpl; template <typename T> class SmallVectorImpl;
class Function; class Function;
class DebugLoc; class DebugLoc;
@ -173,10 +172,6 @@ public:
/// setDiagnosticContext. /// setDiagnosticContext.
void *getDiagnosticContext() const; void *getDiagnosticContext() const;
/// \brief Get the prefix that should be printed in front of a diagnostic of
/// the given \p Severity
static const char *getDiagnosticMessagePrefix(DiagnosticSeverity Severity);
/// \brief Report a message to the currently installed diagnostic handler. /// \brief Report a message to the currently installed diagnostic handler.
/// ///
/// This function returns, in particular in the case of error reporting /// This function returns, in particular in the case of error reporting

View File

@ -231,8 +231,7 @@ static bool isDiagnosticEnabled(const DiagnosticInfo &DI) {
return true; return true;
} }
const char * static const char *getDiagnosticMessagePrefix(DiagnosticSeverity Severity) {
LLVMContext::getDiagnosticMessagePrefix(DiagnosticSeverity Severity) {
switch (Severity) { switch (Severity) {
case DS_Error: case DS_Error:
return "error"; return "error";

View File

@ -1,4 +1,4 @@
; RUN: not llc -march=arm64 -exit-on-error < %s 2> %t ; RUN: not llc -march=arm64 < %s 2> %t
; RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s ; RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s
; Check for at least one invalid constant. ; Check for at least one invalid constant.

View File

@ -1,4 +1,4 @@
; RUN: not llc -march=arm64 -exit-on-error < %s 2> %t ; RUN: not llc -march=arm64 < %s 2> %t
; RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s ; RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s
; Check for at least one invalid constant. ; Check for at least one invalid constant.

View File

@ -1,4 +1,4 @@
; RUN: not llc -march=arm64 -exit-on-error < %s 2> %t ; RUN: not llc -march=arm64 < %s 2> %t
; RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s ; RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s
; Check for at least one invalid constant. ; Check for at least one invalid constant.

View File

@ -1,4 +1,4 @@
; RUN: not llc -march=arm64 -exit-on-error < %s 2> %t ; RUN: not llc -march=arm64 < %s 2> %t
; RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s ; RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s
; Check for at least one invalid constant. ; Check for at least one invalid constant.

View File

@ -1,4 +1,4 @@
; RUN: not llc -march=arm64 -exit-on-error < %s 2> %t ; RUN: not llc -march=arm64 < %s 2> %t
; RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s ; RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s
; Check for at least one invalid constant. ; Check for at least one invalid constant.

View File

@ -1,4 +1,4 @@
; RUN: not llc -march=arm64 -exit-on-error < %s 2> %t ; RUN: not llc -march=arm64 < %s 2> %t
; RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s ; RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s
; Check for at least one invalid constant. ; Check for at least one invalid constant.

View File

@ -1,6 +1,6 @@
; RUN: not llc -march=amdgcn -mcpu=SI -verify-machineinstrs -exit-on-error < %s 2>&1 | FileCheck %s ; RUN: not llc -march=amdgcn -mcpu=SI -verify-machineinstrs< %s 2>&1 | FileCheck %s
; RUN: not llc -march=amdgcn -mcpu=tonga -verify-machineinstrs -exit-on-error < %s 2>&1 | FileCheck %s ; RUN: not llc -march=amdgcn -mcpu=tonga -verify-machineinstrs< %s 2>&1 | FileCheck %s
; RUN: not llc -march=r600 -mcpu=cypress -exit-on-error < %s 2>&1 | FileCheck %s ; RUN: not llc -march=r600 -mcpu=cypress < %s 2>&1 | FileCheck %s
; CHECK: in function test_call_external{{.*}}: unsupported call to function external_function ; CHECK: in function test_call_external{{.*}}: unsupported call to function external_function

View File

@ -1,6 +1,6 @@
; RUN: not llc -march=amdgcn -mcpu=tahiti -mattr=+promote-alloca -verify-machineinstrs -exit-on-error < %s 2>&1 | FileCheck %s ; RUN: not llc -march=amdgcn -mcpu=tahiti -mattr=+promote-alloca -verify-machineinstrs < %s 2>&1 | FileCheck %s
; RUN: not llc -march=amdgcn -mcpu=tahiti -mattr=-promote-alloca -verify-machineinstrs -exit-on-error < %s 2>&1 | FileCheck %s ; RUN: not llc -march=amdgcn -mcpu=tahiti -mattr=-promote-alloca -verify-machineinstrs < %s 2>&1 | FileCheck %s
; RUN: not llc -march=r600 -mcpu=cypress -exit-on-error < %s 2>&1 | FileCheck %s ; RUN: not llc -march=r600 -mcpu=cypress < %s 2>&1 | FileCheck %s
; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca ; CHECK: in function test_dynamic_stackalloc{{.*}}: unsupported dynamic alloca

View File

@ -1,4 +1,4 @@
; RUN: not llc -march=amdgcn -mtriple=amdgcn-unknown-amdhsa -exit-on-error < %s 2>&1 | FileCheck %s ; RUN: not llc -march=amdgcn -mtriple=amdgcn-unknown-amdhsa < %s 2>&1 | FileCheck %s
; CHECK: in function pixel_s{{.*}}: unsupported non-compute shaders with HSA ; CHECK: in function pixel_s{{.*}}: unsupported non-compute shaders with HSA
define amdgpu_ps void @pixel_shader() #0 { define amdgpu_ps void @pixel_shader() #0 {

View File

@ -1,5 +1,5 @@
; RUN: not llc -verify-machineinstrs -march=amdgcn -mcpu=SI -exit-on-error %s -o /dev/null 2>&1 | FileCheck %s ; RUN: not llc -verify-machineinstrs -march=amdgcn -mcpu=SI %s -o /dev/null 2>&1 | FileCheck %s
; RUN: not llc -verify-machineinstrs -march=amdgcn -mcpu=tonga -exit-on-error %s -o /dev/null 2>&1 | FileCheck %s ; RUN: not llc -verify-machineinstrs -march=amdgcn -mcpu=tonga %s -o /dev/null 2>&1 | FileCheck %s
; Make sure promote alloca pass doesn't crash ; Make sure promote alloca pass doesn't crash

View File

@ -1,4 +1,4 @@
; RUN: not llc -march=amdgcn -exit-on-error < %s 2>&1 | FileCheck %s ; RUN: not llc -march=amdgcn < %s 2>&1 | FileCheck %s
; Make sure that AMDGPUPromoteAlloca doesn't crash if the called ; Make sure that AMDGPUPromoteAlloca doesn't crash if the called
; function is a constantexpr cast of a function. ; function is a constantexpr cast of a function.

View File

@ -1,4 +1,4 @@
; RUN: not llc -mtriple=arm-eabi -mcpu=cortex-a8 -exit-on-error %s -o - 2>&1 | FileCheck %s ; RUN: not llc -mtriple=arm-eabi -mcpu=cortex-a8 %s -o - 2>&1 | FileCheck %s
; Check for error message: ; Check for error message:
; CHECK: scalar-to-vector conversion failed, possible invalid constraint for vector type ; CHECK: scalar-to-vector conversion failed, possible invalid constraint for vector type

View File

@ -1,4 +1,4 @@
; RUN: not llc -march=bpf -exit-on-error < %s 2> %t1 ; RUN: not llc -march=bpf < %s 2> %t1
; RUN: FileCheck %s < %t1 ; RUN: FileCheck %s < %t1
; CHECK: too many args ; CHECK: too many args

View File

@ -1,4 +1,4 @@
; RUN: not llc -march=bpf -exit-on-error < %s 2> %t1 ; RUN: not llc -march=bpf < %s 2> %t1
; RUN: FileCheck %s < %t1 ; RUN: FileCheck %s < %t1
; CHECK: too many args ; CHECK: too many args

View File

@ -1,4 +1,4 @@
; RUN: not llc -march=bpf -exit-on-error < %s 2> %t1 ; RUN: not llc -march=bpf < %s 2> %t1
; RUN: FileCheck %s < %t1 ; RUN: FileCheck %s < %t1
; CHECK: only integer returns ; CHECK: only integer returns

View File

@ -1,4 +1,4 @@
; RUN: not llc -march=bpf -exit-on-error < %s 2> %t1 ; RUN: not llc -march=bpf < %s 2> %t1
; RUN: FileCheck %s < %t1 ; RUN: FileCheck %s < %t1
; CHECK: only small returns ; CHECK: only small returns

View File

@ -1,4 +1,4 @@
# RUN: not llc -start-after branch-folder -stop-after branch-folder -exit-on-error -o /dev/null %s 2>&1 | FileCheck %s # RUN: not llc -start-after branch-folder -stop-after branch-folder -o /dev/null %s 2>&1 | FileCheck %s
--- | --- |

View File

@ -1,4 +1,4 @@
# RUN: not llc -start-after branch-folder -stop-after branch-folder -exit-on-error -o /dev/null %s 2>&1 | FileCheck %s # RUN: not llc -start-after branch-folder -stop-after branch-folder -o /dev/null %s 2>&1 | FileCheck %s
# This test ensures an error is reported if the embedded LLVM IR contains an # This test ensures an error is reported if the embedded LLVM IR contains an
# error. # error.

View File

@ -1,4 +1,4 @@
# RUN: not llc -start-after branch-folder -stop-after branch-folder -exit-on-error -o /dev/null %s 2>&1 | FileCheck %s # RUN: not llc -start-after branch-folder -stop-after branch-folder -o /dev/null %s 2>&1 | FileCheck %s
# This test ensures that an error is reported when the mir file has LLVM IR and # This test ensures that an error is reported when the mir file has LLVM IR and
# one of the machine functions has a name that doesn't match any function in # one of the machine functions has a name that doesn't match any function in
# the LLVM IR. # the LLVM IR.

View File

@ -1,4 +1,4 @@
# RUN: not llc -start-after branch-folder -stop-after branch-folder -exit-on-error -o /dev/null %s 2>&1 | FileCheck %s # RUN: not llc -start-after branch-folder -stop-after branch-folder -o /dev/null %s 2>&1 | FileCheck %s
# This test ensures that an error is reported when a machine function doesn't # This test ensures that an error is reported when a machine function doesn't
# have a name attribute. # have a name attribute.

View File

@ -1,4 +1,4 @@
# RUN: not llc -start-after branch-folder -stop-after branch-folder -exit-on-error -o /dev/null %s 2>&1 | FileCheck %s # RUN: not llc -start-after branch-folder -stop-after branch-folder -o /dev/null %s 2>&1 | FileCheck %s
# This test ensures that the machine function errors are reported correctly. # This test ensures that the machine function errors are reported correctly.
--- ---

View File

@ -1,4 +1,4 @@
# RUN: not llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -exit-on-error -o /dev/null %s 2>&1 | FileCheck %s # RUN: not llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s 2>&1 | FileCheck %s
--- | --- |

View File

@ -1,4 +1,4 @@
# RUN: not llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -exit-on-error -o /dev/null %s 2>&1 | FileCheck %s # RUN: not llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s 2>&1 | FileCheck %s
--- | --- |

View File

@ -1,4 +1,4 @@
# RUN: not llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -exit-on-error -o /dev/null %s 2>&1 | FileCheck %s # RUN: not llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s 2>&1 | FileCheck %s
--- | --- |
define i32 @test(i32 %a) { define i32 @test(i32 %a) {

View File

@ -1,4 +1,4 @@
; RUN: not llc -mcpu=pwr7 -exit-on-error -o /dev/null %s 2>&1 | FileCheck %s ; RUN: not llc -mcpu=pwr7 -o /dev/null %s 2>&1 | FileCheck %s
target datalayout = "E-m:e-i64:64-n32:64" target datalayout = "E-m:e-i64:64-n32:64"
target triple = "powerpc64-unknown-linux-gnu" target triple = "powerpc64-unknown-linux-gnu"

View File

@ -1,4 +1,4 @@
; RUN: not llc -mcpu=pwr7 -exit-on-error -o /dev/null %s 2>&1 | FileCheck %s ; RUN: not llc -mcpu=pwr7 -o /dev/null %s 2>&1 | FileCheck %s
target datalayout = "E-m:e-i64:64-n32:64" target datalayout = "E-m:e-i64:64-n32:64"
target triple = "powerpc64-unknown-linux-gnu" target triple = "powerpc64-unknown-linux-gnu"

View File

@ -1,4 +1,4 @@
; RUN: not llc -exit-on-error -o /dev/null %s 2>&1 | FileCheck %s ; RUN: not llc -o /dev/null %s 2>&1 | FileCheck %s
target triple = "x86_64--" target triple = "x86_64--"
; CHECK: error: couldn't allocate output register for constraint '{ax}' ; CHECK: error: couldn't allocate output register for constraint '{ax}'

View File

@ -25,8 +25,6 @@
#include "llvm/CodeGen/MachineModuleInfo.h" #include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/TargetPassConfig.h" #include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/IR/DataLayout.h" #include "llvm/IR/DataLayout.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/DiagnosticPrinter.h"
#include "llvm/IR/IRPrintingPasses.h" #include "llvm/IR/IRPrintingPasses.h"
#include "llvm/IR/LLVMContext.h" #include "llvm/IR/LLVMContext.h"
#include "llvm/IR/LegacyPassManager.h" #include "llvm/IR/LegacyPassManager.h"
@ -113,11 +111,6 @@ static cl::opt<bool> DiscardValueNames(
cl::desc("Discard names from Value (other than GlobalValue)."), cl::desc("Discard names from Value (other than GlobalValue)."),
cl::init(false), cl::Hidden); cl::init(false), cl::Hidden);
static cl::opt<bool> ExitOnError(
"exit-on-error",
cl::desc("Exit as soon as an error is encountered."),
cl::init(false), cl::Hidden);
static int compileModule(char **, LLVMContext &); static int compileModule(char **, LLVMContext &);
static std::unique_ptr<tool_output_file> static std::unique_ptr<tool_output_file>
@ -188,17 +181,6 @@ GetOutputStream(const char *TargetName, Triple::OSType OS,
return FDOut; return FDOut;
} }
static void DiagnosticHandler(const DiagnosticInfo &DI, void *Context) {
bool *HasError = static_cast<bool *>(Context);
if (DI.getSeverity() == DS_Error)
*HasError = true;
DiagnosticPrinterRawOStream DP(errs());
errs() << LLVMContext::getDiagnosticMessagePrefix(DI.getSeverity()) << ": ";
DI.print(DP);
errs() << "\n";
}
// main - Entry point for the llc compiler. // main - Entry point for the llc compiler.
// //
int main(int argc, char **argv) { int main(int argc, char **argv) {
@ -233,12 +215,6 @@ int main(int argc, char **argv) {
Context.setDiscardValueNames(DiscardValueNames); Context.setDiscardValueNames(DiscardValueNames);
// Set a diagnostic handler that doesn't exit on the first error
if (!ExitOnError) {
bool HasError = false;
Context.setDiagnosticHandler(DiagnosticHandler, &HasError);
}
// Compile the module TimeCompilations times to give better compile time // Compile the module TimeCompilations times to give better compile time
// metrics. // metrics.
for (unsigned I = TimeCompilations; I; --I) for (unsigned I = TimeCompilations; I; --I)
@ -465,12 +441,6 @@ static int compileModule(char **argv, LLVMContext &Context) {
PM.run(*M); PM.run(*M);
if (!ExitOnError) {
auto HasError = *static_cast<bool *>(Context.getDiagnosticContext());
if (HasError)
return 1;
}
// Compare the two outputs and make sure they're the same // Compare the two outputs and make sure they're the same
if (CompileTwice) { if (CompileTwice) {
if (Buffer.size() != CompileTwiceBuffer.size() || if (Buffer.size() != CompileTwiceBuffer.size() ||