Index: llvm/test/Linker/apple-version.ll =================================================================== --- llvm/test/Linker/apple-version.ll +++ llvm/test/Linker/apple-version.ll @@ -11,14 +11,14 @@ ; warnings are issued when the Triples differ only in version numbers. ; CHECK1: target triple = "x86_64-apple-macosx10.10.0" -; WARN1-NOT: WARNING +; WARN1-NOT: warning ; CHECK2: target triple = "x86_64-apple-macosx10.9.0" -; WARN2-NOT: WARNING +; WARN2-NOT: warning ; i386 and x86_64 map to different ArchType enums. -; WARN3: WARNING: Linking two modules of different target triples +; WARN3: warning: Linking two modules of different target triples ; x86_64h and x86_64 map to the same ArchType enum. -; WARN4-NOT: WARNING +; WARN4-NOT: warning target triple = "x86_64-apple-macosx10.9.0" Index: llvm/test/Linker/datalayout.ll =================================================================== --- llvm/test/Linker/datalayout.ll +++ llvm/test/Linker/datalayout.ll @@ -8,6 +8,6 @@ target datalayout = "e" -; WARN-A-NOT: WARNING +; WARN-A-NOT: warning -; WARN-B: WARNING: Linking two modules of different data layouts: +; WARN-B: warning: Linking two modules of different data layouts: Index: llvm/test/Linker/drop-debug.ll =================================================================== --- llvm/test/Linker/drop-debug.ll +++ llvm/test/Linker/drop-debug.ll @@ -3,4 +3,4 @@ ;; drop-debug.bc was created from "void f(void) {}" with clang 3.5 and ; -gline-tables-only, so it contains old debug info. -; CHECK: WARNING: ignoring debug info with an invalid version (1) in {{.*}}/Inputs/drop-debug.bc +; CHECK: warning: ignoring debug info with an invalid version (1) in {{.*}}/Inputs/drop-debug.bc Index: llvm/test/Linker/redefinition.ll =================================================================== --- llvm/test/Linker/redefinition.ll +++ llvm/test/Linker/redefinition.ll @@ -2,5 +2,5 @@ ; in different modules. ; RUN: not llvm-link %s %s -o %t.bc 2>&1 | FileCheck %s ; RUN: not llvm-link %s %S/Inputs/redefinition.ll -o %t.bc 2>&1 | FileCheck %s -; CHECK: ERROR: Linking globals named 'foo': symbol multiply defined! +; CHECK: error: Linking globals named 'foo': symbol multiply defined! define void @foo() { ret void } Index: llvm/test/Linker/targettriple.ll =================================================================== --- llvm/test/Linker/targettriple.ll +++ llvm/test/Linker/targettriple.ll @@ -13,10 +13,10 @@ ; CHECK: target triple = "x86_64-unknown-linux-gnu" -; WARN-A-NOT: WARNING +; WARN-A-NOT: warning ; i386 and x86_64 map to different ArchType enums. -; WARN-B: WARNING: Linking two modules of different target triples: +; WARN-B: warning: Linking two modules of different target triples: ; x86_64h and x86_64 map to the same ArchType enum. -; WARN-C-NOT: WARNING +; WARN-C-NOT: warning Index: llvm/tools/llvm-link/llvm-link.cpp =================================================================== --- llvm/tools/llvm-link/llvm-link.cpp +++ llvm/tools/llvm-link/llvm-link.cpp @@ -31,6 +31,7 @@ #include "llvm/Support/SourceMgr.h" #include "llvm/Support/SystemUtils.h" #include "llvm/Support/ToolOutputFile.h" +#include "llvm/Support/WithColor.h" #include "llvm/Transforms/IPO/FunctionImport.h" #include "llvm/Transforms/IPO/Internalize.h" #include "llvm/Transforms/Utils/FunctionImportUtils.h" @@ -39,9 +40,8 @@ #include using namespace llvm; -static cl::list -InputFilenames(cl::Positional, cl::OneOrMore, - cl::desc("")); +static cl::list InputFilenames(cl::Positional, cl::OneOrMore, + cl::desc("")); static cl::list OverridingInputs( "override", cl::ZeroOrMore, cl::value_desc("filename"), @@ -64,39 +64,38 @@ SummaryIndex("summary-index", cl::desc("Module summary index filename"), cl::init(""), cl::value_desc("filename")); -static cl::opt -OutputFilename("o", cl::desc("Override output filename"), cl::init("-"), - cl::value_desc("filename")); +static cl::opt OutputFilename("o", + cl::desc("Override output filename"), + cl::init("-"), + cl::value_desc("filename")); -static cl::opt -Internalize("internalize", cl::desc("Internalize linked symbols")); +static cl::opt Internalize("internalize", + cl::desc("Internalize linked symbols")); static cl::opt DisableDITypeMap("disable-debug-info-type-map", cl::desc("Don't use a uniquing type map for debug info")); -static cl::opt -OnlyNeeded("only-needed", cl::desc("Link only needed symbols")); +static cl::opt OnlyNeeded("only-needed", + cl::desc("Link only needed symbols")); -static cl::opt -Force("f", cl::desc("Enable binary output on terminals")); +static cl::opt Force("f", cl::desc("Enable binary output on terminals")); -static cl::opt - DisableLazyLoad("disable-lazy-loading", - cl::desc("Disable lazy module loading")); +static cl::opt DisableLazyLoad("disable-lazy-loading", + cl::desc("Disable lazy module loading")); static cl::opt OutputAssembly("S", cl::desc("Write output as LLVM assembly"), cl::Hidden); -static cl::opt -Verbose("v", cl::desc("Print information about actions taken")); +static cl::opt Verbose("v", + cl::desc("Print information about actions taken")); -static cl::opt -DumpAsm("d", cl::desc("Print assembly as linked"), cl::Hidden); +static cl::opt DumpAsm("d", cl::desc("Print assembly as linked"), + cl::Hidden); -static cl::opt -SuppressWarnings("suppress-warnings", cl::desc("Suppress all linking warnings"), - cl::init(false)); +static cl::opt SuppressWarnings("suppress-warnings", + cl::desc("Suppress all linking warnings"), + cl::init(false)); static cl::opt PreserveBitcodeUseListOrder( "preserve-bc-uselistorder", @@ -118,7 +117,8 @@ LLVMContext &Context, bool MaterializeMetadata = true) { SMDiagnostic Err; - if (Verbose) errs() << "Loading '" << FN << "'\n"; + if (Verbose) + errs() << "Loading '" << FN << "'\n"; std::unique_ptr Result; if (DisableLazyLoad) Result = parseIRFile(FN, Err, Context); @@ -186,12 +186,12 @@ unsigned Severity = DI.getSeverity(); switch (Severity) { case DS_Error: - errs() << "ERROR: "; + WithColor::error(); break; case DS_Warning: if (SuppressWarnings) return true; - errs() << "WARNING: "; + WithColor::warning(); break; case DS_Remark: case DS_Note: @@ -204,7 +204,7 @@ return true; } }; -} +} // namespace /// Import any functions requested via the -import option. static bool importFunctions(const char *argv0, Module &DestModule) { @@ -236,8 +236,8 @@ auto &SrcModule = ModuleLoaderCache(argv0, FileName); if (verifyModule(SrcModule, &errs())) { - errs() << argv0 << ": " << FileName - << ": error: input module is broken!\n"; + errs() << argv0 << ": " << FileName; + WithColor::error() << "input module is broken!\n"; return false; } @@ -272,8 +272,7 @@ } static bool linkFiles(const char *argv0, LLVMContext &Context, Linker &L, - const cl::list &Files, - unsigned Flags) { + const cl::list &Files, unsigned Flags) { // Filter out flags that don't apply to the first file we load. unsigned ApplicableFlags = Flags & Linker::Flags::OverrideFromSrc; // Similar to some flags, internalization doesn't apply to the first file. @@ -281,7 +280,8 @@ for (const auto &File : Files) { std::unique_ptr M = loadFile(argv0, File, Context); if (!M.get()) { - errs() << argv0 << ": error loading file '" << File << "'\n"; + errs() << argv0 << ": "; + WithColor::error() << " loading file '" << File << "'\n"; return false; } @@ -289,7 +289,8 @@ // doing that debug metadata in the src module might already be pointing to // the destination. if (DisableDITypeMap && verifyModule(*M, &errs())) { - errs() << argv0 << ": " << File << ": error: input module is broken!\n"; + errs() << argv0 << ": " << File << ": "; + WithColor::error() << "input module is broken!\n"; return false; } @@ -347,8 +348,8 @@ ExitOnErr.setBanner(std::string(argv[0]) + ": "); LLVMContext Context; - Context.setDiagnosticHandler( - llvm::make_unique(), true); + Context.setDiagnosticHandler(llvm::make_unique(), + true); cl::ParseCommandLineOptions(argc, argv, "llvm linker\n"); if (!DisableDITypeMap) @@ -374,21 +375,24 @@ if (!importFunctions(argv[0], *Composite)) return 1; - if (DumpAsm) errs() << "Here's the assembly:\n" << *Composite; + if (DumpAsm) + errs() << "Here's the assembly:\n" << *Composite; std::error_code EC; ToolOutputFile Out(OutputFilename, EC, sys::fs::F_None); if (EC) { - errs() << EC.message() << '\n'; + WithColor::error() << EC.message() << '\n'; return 1; } if (verifyModule(*Composite, &errs())) { - errs() << argv[0] << ": error: linked module is broken!\n"; + errs() << argv[0] << ": "; + WithColor::error() << "linked module is broken!\n"; return 1; } - if (Verbose) errs() << "Writing bitcode...\n"; + if (Verbose) + errs() << "Writing bitcode...\n"; if (OutputAssembly) { Composite->print(Out.os(), nullptr, PreserveAssemblyUseListOrder); } else if (Force || !CheckBitcodeOutputToConsole(Out.os(), true))