diff options
Diffstat (limited to 'llvm/tools/llvm-lto')
| -rw-r--r-- | llvm/tools/llvm-lto/llvm-lto.cpp | 26 | 
1 files changed, 26 insertions, 0 deletions
| diff --git a/llvm/tools/llvm-lto/llvm-lto.cpp b/llvm/tools/llvm-lto/llvm-lto.cpp index 2f19090dfc9..2bfd9594555 100644 --- a/llvm/tools/llvm-lto/llvm-lto.cpp +++ b/llvm/tools/llvm-lto/llvm-lto.cpp @@ -38,6 +38,10 @@ static cl::opt<bool>  DisableGVNLoadPRE("disable-gvn-loadpre", cl::init(false),    cl::desc("Do not run the GVN load PRE pass")); +static cl::opt<bool> +UseDiagnosticHandler("use-diagnostic-handler", cl::init(false), +  cl::desc("Use a diagnostic handler to test the handler interface")); +  static cl::list<std::string>  InputFilenames(cl::Positional, cl::OneOrMore,    cl::desc("<input bitcode files>")); @@ -63,6 +67,25 @@ struct ModuleInfo {  };  } +void handleDiagnostics(lto_codegen_diagnostic_severity_t Severity, +                       const char *Msg, void *) { +  switch (Severity) { +  case LTO_DS_NOTE: +    errs() << "note: "; +    break; +  case LTO_DS_REMARK: +    errs() << "remark: "; +    break; +  case LTO_DS_ERROR: +    errs() << "error: "; +    break; +  case LTO_DS_WARNING: +    errs() << "warning: "; +    break; +  } +  errs() << Msg << "\n"; +} +  int main(int argc, char **argv) {    // Print a stack trace if we signal out.    sys::PrintStackTraceOnErrorSignal(); @@ -84,6 +107,9 @@ int main(int argc, char **argv) {    LTOCodeGenerator CodeGen; +  if (UseDiagnosticHandler) +    CodeGen.setDiagnosticHandler(handleDiagnostics, nullptr); +    switch (RelocModel) {    case Reloc::Static:      CodeGen.setCodePICModel(LTO_CODEGEN_PIC_MODEL_STATIC); | 

