diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h index c0ef133103a..37bc99d492b 100644 --- a/include/llvm/CodeGen/AsmPrinter.h +++ b/include/llvm/CodeGen/AsmPrinter.h @@ -104,14 +104,22 @@ namespace llvm { /// IsInTextSection - True if the current section we are emitting to is a /// text section. bool IsInTextSection; - + + /// VerboseAsm - Emit comments in assembly output if this is true. + /// + bool VerboseAsm; + protected: AsmPrinter(raw_ostream &o, TargetMachine &TM, - const TargetAsmInfo *T, bool F); + const TargetAsmInfo *T, bool F, bool V); public: virtual ~AsmPrinter(); - + + /// isVerbose - Return true if assembly output should contain comments. + /// + bool isVerbose() const { return VerboseAsm; } + /// SwitchToTextSection - Switch to the specified section of the executable /// if we are not already in it! If GV is non-null and if the global has an /// explicitly requested section, we switch to the section indicated for the diff --git a/include/llvm/Target/TargetMachine.h b/include/llvm/Target/TargetMachine.h index 0be3286f710..c4c0b0ec244 100644 --- a/include/llvm/Target/TargetMachine.h +++ b/include/llvm/Target/TargetMachine.h @@ -174,6 +174,7 @@ public: static Reloc::Model getRelocationModel(); /// setRelocationModel - Sets the code generation relocation model. + /// static void setRelocationModel(Reloc::Model Model); /// getCodeModel - Returns the code model. The choices are small, kernel, @@ -181,8 +182,17 @@ public: static CodeModel::Model getCodeModel(); /// setCodeModel - Sets the code model. + /// static void setCodeModel(CodeModel::Model Model); + /// getAsmVerbosityDefault - Returns the default value of asm verbosity. + /// + static bool getAsmVerbosityDefault(); + + /// setAsmVerbosityDefault - Set the default value of asm verbosity. Default + /// is false. + static void setAsmVerbosityDefault(bool); + /// CodeGenFileType - These enums are meant to be passed into /// addPassesToEmitFile to indicate what type of file to emit. enum CodeGenFileType { @@ -319,8 +329,8 @@ public: /// addAssemblyEmitter - This pass should be overridden by the target to add /// the asmprinter, if asm emission is supported. If this is not supported, /// 'true' should be returned. - virtual bool addAssemblyEmitter(PassManagerBase &, bool /*Fast*/, - raw_ostream &) { + virtual bool addAssemblyEmitter(PassManagerBase &, bool /*Fast*/, + bool /* VerboseAsmDefault */, raw_ostream &) { return true; } diff --git a/include/llvm/Target/TargetOptions.h b/include/llvm/Target/TargetOptions.h index 276ea135c78..e10384d7df7 100644 --- a/include/llvm/Target/TargetOptions.h +++ b/include/llvm/Target/TargetOptions.h @@ -104,10 +104,6 @@ namespace llvm { /// realigned, if needed. extern bool RealignStack; - /// VerboseAsm - When this flag is set, the asm printer prints additional - /// comments to asm directives. - extern bool VerboseAsm; - /// DisableJumpTables - This flag indicates jump tables should not be /// generated. extern bool DisableJumpTables; diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index e6205957c7f..48085d59a26 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -21,6 +21,7 @@ #include "llvm/CodeGen/MachineJumpTableInfo.h" #include "llvm/CodeGen/MachineModuleInfo.h" #include "llvm/CodeGen/DwarfWriter.h" +#include "llvm/Support/CommandLine.h" #include "llvm/Support/Mangler.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Target/TargetAsmInfo.h" @@ -35,13 +36,23 @@ #include using namespace llvm; +static cl::opt +AsmVerbose("asm-verbose", cl::desc("Add comments to directives."), + cl::init(cl::BOU_UNSET)); + char AsmPrinter::ID = 0; AsmPrinter::AsmPrinter(raw_ostream &o, TargetMachine &tm, - const TargetAsmInfo *T, bool F) + const TargetAsmInfo *T, bool F, bool VDef) : MachineFunctionPass(&ID), FunctionNumber(0), Fast(F), O(o), TM(tm), TAI(T), TRI(tm.getRegisterInfo()), IsInTextSection(false) -{} +{ + switch (AsmVerbose) { + case cl::BOU_UNSET: VerboseAsm = VDef; break; + case cl::BOU_TRUE: VerboseAsm = true; break; + case cl::BOU_FALSE: VerboseAsm = false; break; + } +} AsmPrinter::~AsmPrinter() { for (gcp_iterator I = GCMetadataPrinters.begin(), diff --git a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp index 4dbab67da71..ab4fe728bf0 100644 --- a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp @@ -1072,7 +1072,7 @@ public: Asm->EOL("Offset"); } else if (Reg < 64) { Asm->EmitInt8(DW_CFA_offset + Reg); - if (VerboseAsm) + if (Asm->isVerbose()) Asm->EOL("DW_CFA_offset + Reg (" + utostr(Reg) + ")"); else Asm->EOL(); @@ -2197,7 +2197,7 @@ private: // Emit the code (index) for the abbreviation. Asm->EmitULEB128Bytes(AbbrevNumber); - if (VerboseAsm) + if (Asm->isVerbose()) Asm->EOL(std::string("Abbrev [" + utostr(AbbrevNumber) + "] 0x" + utohexstr(Die->getOffset()) + @@ -2487,7 +2487,7 @@ private: // Isolate current sections line info. const std::vector &LineInfos = SectionSourceLines[j]; - if (VerboseAsm) { + if (Asm->isVerbose()) { const Section* S = SectionMap[j + 1]; O << '\t' << TAI->getCommentString() << " Section" << S->getName() << '\n'; @@ -2504,7 +2504,7 @@ private: unsigned LabelID = MMI->MappedLabel(LineInfo.getLabelID()); if (!LabelID) continue; - if (!VerboseAsm) + if (!Asm->isVerbose()) Asm->EOL(); else { std::pair SourceID = diff --git a/lib/CodeGen/LLVMTargetMachine.cpp b/lib/CodeGen/LLVMTargetMachine.cpp index f29944c7c90..086104912b7 100644 --- a/lib/CodeGen/LLVMTargetMachine.cpp +++ b/lib/CodeGen/LLVMTargetMachine.cpp @@ -76,7 +76,7 @@ LLVMTargetMachine::addPassesToEmitFile(PassManagerBase &PM, default: break; case TargetMachine::AssemblyFile: - if (addAssemblyEmitter(PM, Fast, Out)) + if (addAssemblyEmitter(PM, Fast, getAsmVerbosityDefault(), Out)) return FileModel::Error; return FileModel::AsmFile; case TargetMachine::ObjectFile: diff --git a/lib/Target/ARM/ARM.h b/lib/Target/ARM/ARM.h index 87d2cffe2aa..fa177420163 100644 --- a/lib/Target/ARM/ARM.h +++ b/lib/Target/ARM/ARM.h @@ -91,7 +91,7 @@ inline static const char *ARMCondCodeToString(ARMCC::CondCodes CC) { FunctionPass *createARMISelDag(ARMTargetMachine &TM); FunctionPass *createARMCodePrinterPass(raw_ostream &O, ARMTargetMachine &TM, - bool Fast); + bool Fast, bool Verbose); FunctionPass *createARMCodeEmitterPass(ARMTargetMachine &TM, MachineCodeEmitter &MCE); FunctionPass *createARMLoadStoreOptimizationPass(); diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp index 6bb0b2e3cca..9b6e51267fb 100644 --- a/lib/Target/ARM/ARMTargetMachine.cpp +++ b/lib/Target/ARM/ARMTargetMachine.cpp @@ -156,11 +156,11 @@ bool ARMTargetMachine::addPreEmitPass(PassManagerBase &PM, bool Fast) { } bool ARMTargetMachine::addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out) { + bool Verbose, raw_ostream &Out) { // Output assembly language. assert(AsmPrinterCtor && "AsmPrinter was not linked in"); if (AsmPrinterCtor) - PM.add(AsmPrinterCtor(Out, *this, Fast)); + PM.add(AsmPrinterCtor(Out, *this, Fast, Verbose)); return false; } @@ -177,7 +177,7 @@ bool ARMTargetMachine::addCodeEmitter(PassManagerBase &PM, bool Fast, if (DumpAsm) { assert(AsmPrinterCtor && "AsmPrinter was not linked in"); if (AsmPrinterCtor) - PM.add(AsmPrinterCtor(errs(), *this, Fast)); + PM.add(AsmPrinterCtor(errs(), *this, Fast, true)); } return false; @@ -190,7 +190,7 @@ bool ARMTargetMachine::addSimpleCodeEmitter(PassManagerBase &PM, bool Fast, if (DumpAsm) { assert(AsmPrinterCtor && "AsmPrinter was not linked in"); if (AsmPrinterCtor) - PM.add(AsmPrinterCtor(errs(), *this, Fast)); + PM.add(AsmPrinterCtor(errs(), *this, Fast, true)); } return false; diff --git a/lib/Target/ARM/ARMTargetMachine.h b/lib/Target/ARM/ARMTargetMachine.h index 54037407427..9a3d7ed5fef 100644 --- a/lib/Target/ARM/ARMTargetMachine.h +++ b/lib/Target/ARM/ARMTargetMachine.h @@ -41,7 +41,7 @@ protected: // set this functions to ctor pointer at startup time if they are linked in. typedef FunctionPass *(*AsmPrinterCtorFn)(raw_ostream &o, ARMTargetMachine &tm, - bool fast); + bool fast, bool verbose); static AsmPrinterCtorFn AsmPrinterCtor; public: @@ -72,7 +72,7 @@ public: virtual bool addInstSelector(PassManagerBase &PM, bool Fast); virtual bool addPreEmitPass(PassManagerBase &PM, bool Fast); virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out); + bool Verbose, raw_ostream &Out); virtual bool addCodeEmitter(PassManagerBase &PM, bool Fast, bool DumpAsm, MachineCodeEmitter &MCE); virtual bool addSimpleCodeEmitter(PassManagerBase &PM, bool Fast, diff --git a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp index 5da7e9e4459..e9997adda35 100644 --- a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp @@ -81,8 +81,8 @@ namespace { bool InCPMode; public: ARMAsmPrinter(raw_ostream &O, TargetMachine &TM, - const TargetAsmInfo *T, bool F) - : AsmPrinter(O, TM, T, F), DW(0), MMI(NULL), AFI(NULL), MCP(NULL), + const TargetAsmInfo *T, bool F, bool V) + : AsmPrinter(O, TM, T, F, V), DW(0), MMI(NULL), AFI(NULL), MCP(NULL), InCPMode(false) { Subtarget = &TM.getSubtarget(); } @@ -346,7 +346,8 @@ void ARMAsmPrinter::printOperand(const MachineInstr *MI, int opNum, } } -static void printSOImm(raw_ostream &O, int64_t V, const TargetAsmInfo *TAI) { +static void printSOImm(raw_ostream &O, int64_t V, bool VerboseAsm, + const TargetAsmInfo *TAI) { assert(V < (1 << 12) && "Not a valid so_imm value!"); unsigned Imm = ARM_AM::getSOImmValImm(V); unsigned Rot = ARM_AM::getSOImmValRot(V); @@ -369,7 +370,7 @@ static void printSOImm(raw_ostream &O, int64_t V, const TargetAsmInfo *TAI) { void ARMAsmPrinter::printSOImmOperand(const MachineInstr *MI, int OpNum) { const MachineOperand &MO = MI->getOperand(OpNum); assert(MO.isImm() && "Not a valid so_imm value!"); - printSOImm(O, MO.getImm(), TAI); + printSOImm(O, MO.getImm(), VerboseAsm, TAI); } /// printSOImm2PartOperand - SOImm is broken into two pieces using a 'mov' @@ -379,7 +380,7 @@ void ARMAsmPrinter::printSOImm2PartOperand(const MachineInstr *MI, int OpNum) { assert(MO.isImm() && "Not a valid so_imm value!"); unsigned V1 = ARM_AM::getSOImmTwoPartFirst(MO.getImm()); unsigned V2 = ARM_AM::getSOImmTwoPartSecond(MO.getImm()); - printSOImm(O, ARM_AM::getSOImmVal(V1), TAI); + printSOImm(O, ARM_AM::getSOImmVal(V1), VerboseAsm, TAI); O << "\n\torr"; printPredicateOperand(MI, 2); O << " "; @@ -387,7 +388,7 @@ void ARMAsmPrinter::printSOImm2PartOperand(const MachineInstr *MI, int OpNum) { O << ", "; printOperand(MI, 0); O << ", "; - printSOImm(O, ARM_AM::getSOImmVal(V2), TAI); + printSOImm(O, ARM_AM::getSOImmVal(V2), VerboseAsm, TAI); } // so_reg is a 4-operand unit corresponding to register forms of the A5.1 @@ -1057,8 +1058,8 @@ bool ARMAsmPrinter::doFinalization(Module &M) { /// FunctionPass *llvm::createARMCodePrinterPass(raw_ostream &o, ARMTargetMachine &tm, - bool fast) { - return new ARMAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); + bool fast, bool verbose) { + return new ARMAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast, verbose); } namespace { diff --git a/lib/Target/Alpha/Alpha.h b/lib/Target/Alpha/Alpha.h index e885c80b27a..d93394aa6fa 100644 --- a/lib/Target/Alpha/Alpha.h +++ b/lib/Target/Alpha/Alpha.h @@ -26,7 +26,7 @@ namespace llvm { FunctionPass *createAlphaISelDag(AlphaTargetMachine &TM); FunctionPass *createAlphaCodePrinterPass(raw_ostream &OS, TargetMachine &TM, - bool Fast); + bool Fast, bool Verbose); FunctionPass *createAlphaPatternInstructionSelector(TargetMachine &TM); FunctionPass *createAlphaCodeEmitterPass(AlphaTargetMachine &TM, MachineCodeEmitter &MCE); diff --git a/lib/Target/Alpha/AlphaTargetMachine.cpp b/lib/Target/Alpha/AlphaTargetMachine.cpp index db3567fa61a..cae91d8c4ef 100644 --- a/lib/Target/Alpha/AlphaTargetMachine.cpp +++ b/lib/Target/Alpha/AlphaTargetMachine.cpp @@ -85,17 +85,18 @@ bool AlphaTargetMachine::addPreEmitPass(PassManagerBase &PM, bool Fast) { PM.add(createAlphaBranchSelectionPass()); return false; } -bool AlphaTargetMachine::addAssemblyEmitter(PassManagerBase &PM, bool Fast, +bool AlphaTargetMachine::addAssemblyEmitter(PassManagerBase &PM, bool Fast, + bool Verbose, raw_ostream &Out) { PM.add(createAlphaLLRPPass(*this)); - PM.add(createAlphaCodePrinterPass(Out, *this, Fast)); + PM.add(createAlphaCodePrinterPass(Out, *this, Fast, Verbose)); return false; } bool AlphaTargetMachine::addCodeEmitter(PassManagerBase &PM, bool Fast, bool DumpAsm, MachineCodeEmitter &MCE) { PM.add(createAlphaCodeEmitterPass(*this, MCE)); if (DumpAsm) - PM.add(createAlphaCodePrinterPass(errs(), *this, Fast)); + PM.add(createAlphaCodePrinterPass(errs(), *this, Fast, true)); return false; } bool AlphaTargetMachine::addSimpleCodeEmitter(PassManagerBase &PM, diff --git a/lib/Target/Alpha/AlphaTargetMachine.h b/lib/Target/Alpha/AlphaTargetMachine.h index ff1e1d1924c..9a03baef3fa 100644 --- a/lib/Target/Alpha/AlphaTargetMachine.h +++ b/lib/Target/Alpha/AlphaTargetMachine.h @@ -61,7 +61,7 @@ public: virtual bool addInstSelector(PassManagerBase &PM, bool Fast); virtual bool addPreEmitPass(PassManagerBase &PM, bool Fast); virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out); + bool Verbose, raw_ostream &Out); virtual bool addCodeEmitter(PassManagerBase &PM, bool Fast, bool DumpAsm, MachineCodeEmitter &MCE); virtual bool addSimpleCodeEmitter(PassManagerBase &PM, bool Fast, diff --git a/lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp b/lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp index a654be9849a..0df7e809afe 100644 --- a/lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp +++ b/lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp @@ -37,8 +37,8 @@ namespace { /// AlphaAsmPrinter(raw_ostream &o, TargetMachine &tm, - const TargetAsmInfo *T, bool F) - : AsmPrinter(o, tm, T, F) {} + const TargetAsmInfo *T, bool F, bool V) + : AsmPrinter(o, tm, T, F, V) {} virtual const char *getPassName() const { return "Alpha Assembly Printer"; @@ -68,8 +68,8 @@ namespace { /// FunctionPass *llvm::createAlphaCodePrinterPass(raw_ostream &o, TargetMachine &tm, - bool fast) { - return new AlphaAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); + bool fast, bool verbose) { + return new AlphaAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast, verbose); } #include "AlphaGenAsmWriter.inc" diff --git a/lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp b/lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp index 9b6e5409192..788f737f355 100644 --- a/lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp +++ b/lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp @@ -49,8 +49,8 @@ namespace { std::set FnStubs, GVStubs; public: SPUAsmPrinter(raw_ostream &O, TargetMachine &TM, - const TargetAsmInfo *T, bool F) : - AsmPrinter(O, TM, T, F) {} + const TargetAsmInfo *T, bool F, bool V) : + AsmPrinter(O, TM, T, F, V) {} virtual const char *getPassName() const { return "STI CBEA SPU Assembly Printer"; @@ -289,8 +289,8 @@ namespace { MachineModuleInfo *MMI; public: LinuxAsmPrinter(raw_ostream &O, SPUTargetMachine &TM, - const TargetAsmInfo *T, bool F) - : SPUAsmPrinter(O, TM, T, F), DW(0), MMI(0) {} + const TargetAsmInfo *T, bool F, bool V) + : SPUAsmPrinter(O, TM, T, F, V), DW(0), MMI(0) {} virtual const char *getPassName() const { return "STI CBEA SPU Assembly Printer"; @@ -615,6 +615,6 @@ bool LinuxAsmPrinter::doFinalization(Module &M) { /// FunctionPass *llvm::createSPUAsmPrinterPass(raw_ostream &o, SPUTargetMachine &tm, - bool fast) { - return new LinuxAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); + bool fast, bool verbose) { + return new LinuxAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast, verbose); } diff --git a/lib/Target/CellSPU/SPU.h b/lib/Target/CellSPU/SPU.h index a7a9a771820..9bb199a16e1 100644 --- a/lib/Target/CellSPU/SPU.h +++ b/lib/Target/CellSPU/SPU.h @@ -25,7 +25,7 @@ namespace llvm { FunctionPass *createSPUISelDag(SPUTargetMachine &TM); FunctionPass *createSPUAsmPrinterPass(raw_ostream &o, SPUTargetMachine &tm, - bool fast); + bool fast, bool verbose); /*--== Utility functions/predicates/etc used all over the place: --==*/ //! Predicate test for a signed 10-bit value diff --git a/lib/Target/CellSPU/SPUTargetMachine.cpp b/lib/Target/CellSPU/SPUTargetMachine.cpp index ba5d2f2507c..5e69927356c 100644 --- a/lib/Target/CellSPU/SPUTargetMachine.cpp +++ b/lib/Target/CellSPU/SPUTargetMachine.cpp @@ -89,7 +89,7 @@ SPUTargetMachine::addInstSelector(PassManagerBase &PM, bool Fast) } bool SPUTargetMachine::addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out) { - PM.add(createSPUAsmPrinterPass(Out, *this, Fast)); + bool Verbose, raw_ostream &Out) { + PM.add(createSPUAsmPrinterPass(Out, *this, Fast, Verbose)); return false; } diff --git a/lib/Target/CellSPU/SPUTargetMachine.h b/lib/Target/CellSPU/SPUTargetMachine.h index 1396ff257d2..32eb7f23427 100644 --- a/lib/Target/CellSPU/SPUTargetMachine.h +++ b/lib/Target/CellSPU/SPUTargetMachine.h @@ -85,7 +85,7 @@ public: // Pass Pipeline Configuration virtual bool addInstSelector(PassManagerBase &PM, bool /*Fast*/); virtual bool addAssemblyEmitter(PassManagerBase &PM, bool /*Fast*/, - raw_ostream &Out); + bool /*Verbose*/, raw_ostream &Out); }; } // end namespace llvm diff --git a/lib/Target/IA64/IA64.h b/lib/Target/IA64/IA64.h index ab9e67764e1..9b31e258a20 100644 --- a/lib/Target/IA64/IA64.h +++ b/lib/Target/IA64/IA64.h @@ -37,7 +37,7 @@ FunctionPass *createIA64BundlingPass(IA64TargetMachine &TM); /// FunctionPass *createIA64CodePrinterPass(raw_ostream &o, IA64TargetMachine &tm, - bool fast); + bool fast, bool verbose); } // End llvm namespace diff --git a/lib/Target/IA64/IA64AsmPrinter.cpp b/lib/Target/IA64/IA64AsmPrinter.cpp index 2d4519abcf4..2e9f5e67c08 100644 --- a/lib/Target/IA64/IA64AsmPrinter.cpp +++ b/lib/Target/IA64/IA64AsmPrinter.cpp @@ -38,8 +38,8 @@ namespace { std::set ExternalFunctionNames, ExternalObjectNames; public: IA64AsmPrinter(raw_ostream &O, TargetMachine &TM, - const TargetAsmInfo *T, bool F) - : AsmPrinter(O, TM, T, F) {} + const TargetAsmInfo *T, bool F, bool V) + : AsmPrinter(O, TM, T, F, V) {} virtual const char *getPassName() const { return "IA64 Assembly Printer"; @@ -370,6 +370,6 @@ bool IA64AsmPrinter::doFinalization(Module &M) { /// FunctionPass *llvm::createIA64CodePrinterPass(raw_ostream &o, IA64TargetMachine &tm, - bool fast) { - return new IA64AsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); + bool fast, bool verbose) { + return new IA64AsmPrinter(o, tm, tm.getTargetAsmInfo(), fast, verbose); } diff --git a/lib/Target/IA64/IA64TargetMachine.cpp b/lib/Target/IA64/IA64TargetMachine.cpp index 1cac9e4ea69..58ae27a75e3 100644 --- a/lib/Target/IA64/IA64TargetMachine.cpp +++ b/lib/Target/IA64/IA64TargetMachine.cpp @@ -83,8 +83,8 @@ bool IA64TargetMachine::addPreEmitPass(PassManagerBase &PM, bool Fast) { return true; } bool IA64TargetMachine::addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out) { - PM.add(createIA64CodePrinterPass(Out, *this, Fast)); + bool Verbose, raw_ostream &Out) { + PM.add(createIA64CodePrinterPass(Out, *this, Fast, Verbose)); return false; } diff --git a/lib/Target/IA64/IA64TargetMachine.h b/lib/Target/IA64/IA64TargetMachine.h index 27fbcf7b3ec..2066e698ae9 100644 --- a/lib/Target/IA64/IA64TargetMachine.h +++ b/lib/Target/IA64/IA64TargetMachine.h @@ -54,7 +54,7 @@ public: virtual bool addInstSelector(PassManagerBase &PM, bool Fast); virtual bool addPreEmitPass(PassManagerBase &PM, bool Fast); virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out); + bool Verbose, raw_ostream &Out); }; } // End llvm namespace diff --git a/lib/Target/Mips/Mips.h b/lib/Target/Mips/Mips.h index 28c11b0eb91..e6e4c85286d 100644 --- a/lib/Target/Mips/Mips.h +++ b/lib/Target/Mips/Mips.h @@ -25,7 +25,7 @@ namespace llvm { FunctionPass *createMipsDelaySlotFillerPass(MipsTargetMachine &TM); FunctionPass *createMipsCodePrinterPass(raw_ostream &OS, MipsTargetMachine &TM, - bool Fast); + bool Fast, bool Verbose); } // end namespace llvm; // Defines symbolic names for Mips registers. This defines a mapping from diff --git a/lib/Target/Mips/MipsAsmPrinter.cpp b/lib/Target/Mips/MipsAsmPrinter.cpp index 816e8dce645..532c82df06f 100644 --- a/lib/Target/Mips/MipsAsmPrinter.cpp +++ b/lib/Target/Mips/MipsAsmPrinter.cpp @@ -50,8 +50,8 @@ namespace { const MipsSubtarget *Subtarget; public: MipsAsmPrinter(raw_ostream &O, MipsTargetMachine &TM, - const TargetAsmInfo *T, bool F) - : AsmPrinter(O, TM, T, F) { + const TargetAsmInfo *T, bool F, bool V) + : AsmPrinter(O, TM, T, F, V) { Subtarget = &TM.getSubtarget(); } @@ -91,8 +91,8 @@ namespace { /// regardless of whether the function is in SSA form. FunctionPass *llvm::createMipsCodePrinterPass(raw_ostream &o, MipsTargetMachine &tm, - bool fast) { - return new MipsAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); + bool fast, bool verbose) { + return new MipsAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast, verbose); } //===----------------------------------------------------------------------===// diff --git a/lib/Target/Mips/MipsTargetMachine.cpp b/lib/Target/Mips/MipsTargetMachine.cpp index 4b13b78d020..c4364a33d82 100644 --- a/lib/Target/Mips/MipsTargetMachine.cpp +++ b/lib/Target/Mips/MipsTargetMachine.cpp @@ -125,9 +125,9 @@ addPreEmitPass(PassManagerBase &PM, bool Fast) // true if AssemblyEmitter is supported bool MipsTargetMachine:: addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out) + bool Verbose, raw_ostream &Out) { // Output assembly language. - PM.add(createMipsCodePrinterPass(Out, *this, Fast)); + PM.add(createMipsCodePrinterPass(Out, *this, Fast, Verbose)); return false; } diff --git a/lib/Target/Mips/MipsTargetMachine.h b/lib/Target/Mips/MipsTargetMachine.h index ac55647aba4..95f8e023b51 100644 --- a/lib/Target/Mips/MipsTargetMachine.h +++ b/lib/Target/Mips/MipsTargetMachine.h @@ -60,7 +60,7 @@ namespace llvm { virtual bool addInstSelector(PassManagerBase &PM, bool Fast); virtual bool addPreEmitPass(PassManagerBase &PM, bool Fast); virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out); + bool Verbose, raw_ostream &Out); }; /// MipselTargetMachine - Mipsel target machine. diff --git a/lib/Target/PIC16/PIC16.h b/lib/Target/PIC16/PIC16.h index eb7fdf914ac..786081dc1d2 100644 --- a/lib/Target/PIC16/PIC16.h +++ b/lib/Target/PIC16/PIC16.h @@ -75,7 +75,7 @@ namespace PIC16CC { FunctionPass *createPIC16ISelDag(PIC16TargetMachine &TM); FunctionPass *createPIC16CodePrinterPass(raw_ostream &OS, PIC16TargetMachine &TM, - bool Fast); + bool Fast, bool Verbose); } // end namespace llvm; // Defines symbolic names for PIC16 registers. This defines a mapping from diff --git a/lib/Target/PIC16/PIC16AsmPrinter.cpp b/lib/Target/PIC16/PIC16AsmPrinter.cpp index cdd211b939f..3696d5afeb5 100644 --- a/lib/Target/PIC16/PIC16AsmPrinter.cpp +++ b/lib/Target/PIC16/PIC16AsmPrinter.cpp @@ -139,8 +139,8 @@ bool PIC16AsmPrinter::runOnMachineFunction(MachineFunction &MF) { /// FunctionPass *llvm::createPIC16CodePrinterPass(raw_ostream &o, PIC16TargetMachine &tm, - bool fast) { - return new PIC16AsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); + bool fast, bool verbose) { + return new PIC16AsmPrinter(o, tm, tm.getTargetAsmInfo(), fast, verbose); } void PIC16AsmPrinter::printOperand(const MachineInstr *MI, int opNum) { diff --git a/lib/Target/PIC16/PIC16AsmPrinter.h b/lib/Target/PIC16/PIC16AsmPrinter.h index 50d3dbcc33d..5479717a455 100644 --- a/lib/Target/PIC16/PIC16AsmPrinter.h +++ b/lib/Target/PIC16/PIC16AsmPrinter.h @@ -24,9 +24,9 @@ namespace llvm { struct VISIBILITY_HIDDEN PIC16AsmPrinter : public AsmPrinter { - PIC16AsmPrinter(raw_ostream &O, TargetMachine &TM, - const TargetAsmInfo *T, bool F) - : AsmPrinter(O, TM, T, F) { + PIC16AsmPrinter(raw_ostream &O, TargetMachine &TM, + const TargetAsmInfo *T, bool F, bool V) + : AsmPrinter(O, TM, T, F, V) { CurBank = ""; IsRomData = false; } diff --git a/lib/Target/PIC16/PIC16TargetMachine.cpp b/lib/Target/PIC16/PIC16TargetMachine.cpp index 8ca0727ffac..a8d92490e7b 100644 --- a/lib/Target/PIC16/PIC16TargetMachine.cpp +++ b/lib/Target/PIC16/PIC16TargetMachine.cpp @@ -62,9 +62,10 @@ bool PIC16TargetMachine::addInstSelector(PassManagerBase &PM, bool Fast) { } bool PIC16TargetMachine:: -addAssemblyEmitter(PassManagerBase &PM, bool Fast, raw_ostream &Out) { +addAssemblyEmitter(PassManagerBase &PM, bool Fast, bool Verbose, + raw_ostream &Out) { // Output assembly language. - PM.add(createPIC16CodePrinterPass(Out, *this, Fast)); + PM.add(createPIC16CodePrinterPass(Out, *this, Fast, Verbose)); return false; } diff --git a/lib/Target/PIC16/PIC16TargetMachine.h b/lib/Target/PIC16/PIC16TargetMachine.h index 85e14c1915d..0ac358f0bdc 100644 --- a/lib/Target/PIC16/PIC16TargetMachine.h +++ b/lib/Target/PIC16/PIC16TargetMachine.h @@ -59,7 +59,7 @@ public: virtual bool addInstSelector(PassManagerBase &PM, bool Fast); virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out); + bool Verbose, raw_ostream &Out); }; // PIC16TargetMachine. /// CooperTargetMachine diff --git a/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp b/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp index 91a832eec44..827c4f92b56 100644 --- a/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp @@ -55,8 +55,8 @@ namespace { const PPCSubtarget &Subtarget; public: PPCAsmPrinter(raw_ostream &O, TargetMachine &TM, - const TargetAsmInfo *T, bool F) - : AsmPrinter(O, TM, T, F), + const TargetAsmInfo *T, bool F, bool V) + : AsmPrinter(O, TM, T, F, V), Subtarget(TM.getSubtarget()) {} virtual const char *getPassName() const { @@ -298,8 +298,8 @@ namespace { MachineModuleInfo *MMI; public: PPCLinuxAsmPrinter(raw_ostream &O, PPCTargetMachine &TM, - const TargetAsmInfo *T, bool F) - : PPCAsmPrinter(O, TM, T, F), DW(0), MMI(0) {} + const TargetAsmInfo *T, bool F, bool V) + : PPCAsmPrinter(O, TM, T, F, V), DW(0), MMI(0) {} virtual const char *getPassName() const { return "Linux PPC Assembly Printer"; @@ -327,8 +327,8 @@ namespace { raw_ostream &OS; public: PPCDarwinAsmPrinter(raw_ostream &O, PPCTargetMachine &TM, - const TargetAsmInfo *T, bool F) - : PPCAsmPrinter(O, TM, T, F), DW(0), MMI(0), OS(O) {} + const TargetAsmInfo *T, bool F, bool V) + : PPCAsmPrinter(O, TM, T, F, V), DW(0), MMI(0), OS(O) {} virtual const char *getPassName() const { return "Darwin PPC Assembly Printer"; @@ -1175,13 +1175,13 @@ bool PPCDarwinAsmPrinter::doFinalization(Module &M) { /// FunctionPass *llvm::createPPCAsmPrinterPass(raw_ostream &o, PPCTargetMachine &tm, - bool fast) { + bool fast, bool verbose) { const PPCSubtarget *Subtarget = &tm.getSubtarget(); if (Subtarget->isDarwin()) { - return new PPCDarwinAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); + return new PPCDarwinAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast, verbose); } else { - return new PPCLinuxAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); + return new PPCLinuxAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast, verbose); } } diff --git a/lib/Target/PowerPC/PPC.h b/lib/Target/PowerPC/PPC.h index 09809285f71..3ffb680fdc0 100644 --- a/lib/Target/PowerPC/PPC.h +++ b/lib/Target/PowerPC/PPC.h @@ -28,7 +28,7 @@ FunctionPass *createPPCBranchSelectionPass(); FunctionPass *createPPCISelDag(PPCTargetMachine &TM); FunctionPass *createPPCAsmPrinterPass(raw_ostream &OS, PPCTargetMachine &TM, - bool Fast); + bool Fast, bool Verbose); FunctionPass *createPPCCodeEmitterPass(PPCTargetMachine &TM, MachineCodeEmitter &MCE); } // end namespace llvm; diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp index d142fd161d6..1d3787faa6d 100644 --- a/lib/Target/PowerPC/PPCTargetMachine.cpp +++ b/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -143,10 +143,10 @@ bool PPCTargetMachine::addPreEmitPass(PassManagerBase &PM, bool Fast) { } bool PPCTargetMachine::addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out) { + bool Verbose, raw_ostream &Out) { assert(AsmPrinterCtor && "AsmPrinter was not linked in"); if (AsmPrinterCtor) - PM.add(AsmPrinterCtor(Out, *this, Fast)); + PM.add(AsmPrinterCtor(Out, *this, Fast, Verbose)); return false; } @@ -176,7 +176,7 @@ bool PPCTargetMachine::addCodeEmitter(PassManagerBase &PM, bool Fast, if (DumpAsm) { assert(AsmPrinterCtor && "AsmPrinter was not linked in"); if (AsmPrinterCtor) - PM.add(AsmPrinterCtor(errs(), *this, Fast)); + PM.add(AsmPrinterCtor(errs(), *this, Fast, true)); } return false; @@ -189,7 +189,7 @@ bool PPCTargetMachine::addSimpleCodeEmitter(PassManagerBase &PM, bool Fast, if (DumpAsm) { assert(AsmPrinterCtor && "AsmPrinter was not linked in"); if (AsmPrinterCtor) - PM.add(AsmPrinterCtor(errs(), *this, Fast)); + PM.add(AsmPrinterCtor(errs(), *this, Fast, true)); } return false; diff --git a/lib/Target/PowerPC/PPCTargetMachine.h b/lib/Target/PowerPC/PPCTargetMachine.h index 7cee5937317..d33eb797648 100644 --- a/lib/Target/PowerPC/PPCTargetMachine.h +++ b/lib/Target/PowerPC/PPCTargetMachine.h @@ -46,7 +46,7 @@ protected: // set this functions to ctor pointer at startup time if they are linked in. typedef FunctionPass *(*AsmPrinterCtorFn)(raw_ostream &o, PPCTargetMachine &tm, - bool fast); + bool fast, bool verbose); static AsmPrinterCtorFn AsmPrinterCtor; public: @@ -79,7 +79,7 @@ public: virtual bool addInstSelector(PassManagerBase &PM, bool Fast); virtual bool addPreEmitPass(PassManagerBase &PM, bool Fast); virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out); + bool Verbose, raw_ostream &Out); virtual bool addCodeEmitter(PassManagerBase &PM, bool Fast, bool DumpAsm, MachineCodeEmitter &MCE); virtual bool addSimpleCodeEmitter(PassManagerBase &PM, bool Fast, diff --git a/lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp b/lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp index ec4e6b25b44..ccb0dd9a6c6 100644 --- a/lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp +++ b/lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp @@ -49,8 +49,8 @@ namespace { ValueMapTy NumberForBB; public: SparcAsmPrinter(raw_ostream &O, TargetMachine &TM, - const TargetAsmInfo *T, bool F) - : AsmPrinter(O, TM, T, F) {} + const TargetAsmInfo *T, bool F, bool V) + : AsmPrinter(O, TM, T, F, V) {} virtual const char *getPassName() const { return "Sparc Assembly Printer"; @@ -82,8 +82,8 @@ namespace { /// FunctionPass *llvm::createSparcCodePrinterPass(raw_ostream &o, TargetMachine &tm, - bool fast) { - return new SparcAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); + bool fast, bool verbose) { + return new SparcAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast, verbose); } /// runOnMachineFunction - This uses the printInstruction() diff --git a/lib/Target/Sparc/Sparc.h b/lib/Target/Sparc/Sparc.h index c48118a0f11..0a139f6a073 100644 --- a/lib/Target/Sparc/Sparc.h +++ b/lib/Target/Sparc/Sparc.h @@ -24,8 +24,8 @@ namespace llvm { class raw_ostream; FunctionPass *createSparcISelDag(SparcTargetMachine &TM); - FunctionPass *createSparcCodePrinterPass(raw_ostream &OS, - TargetMachine &TM, bool Fast); + FunctionPass *createSparcCodePrinterPass(raw_ostream &OS, TargetMachine &TM, + bool Fast, bool Verbose); FunctionPass *createSparcDelaySlotFillerPass(TargetMachine &TM); FunctionPass *createSparcFPMoverPass(TargetMachine &TM); } // end namespace llvm; diff --git a/lib/Target/Sparc/SparcTargetMachine.cpp b/lib/Target/Sparc/SparcTargetMachine.cpp index 784800fd922..4ebca3f6bba 100644 --- a/lib/Target/Sparc/SparcTargetMachine.cpp +++ b/lib/Target/Sparc/SparcTargetMachine.cpp @@ -83,8 +83,8 @@ bool SparcTargetMachine::addPreEmitPass(PassManagerBase &PM, bool Fast) { } bool SparcTargetMachine::addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out) { + bool Verbose, raw_ostream &Out) { // Output assembly language. - PM.add(createSparcCodePrinterPass(Out, *this, Fast)); + PM.add(createSparcCodePrinterPass(Out, *this, Fast, Verbose)); return false; } diff --git a/lib/Target/Sparc/SparcTargetMachine.h b/lib/Target/Sparc/SparcTargetMachine.h index eca5f28a801..e775448e45d 100644 --- a/lib/Target/Sparc/SparcTargetMachine.h +++ b/lib/Target/Sparc/SparcTargetMachine.h @@ -54,7 +54,7 @@ public: virtual bool addInstSelector(PassManagerBase &PM, bool Fast); virtual bool addPreEmitPass(PassManagerBase &PM, bool Fast); virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out); + bool Verbose, raw_ostream &Out); }; } // end namespace llvm diff --git a/lib/Target/TargetMachine.cpp b/lib/Target/TargetMachine.cpp index 870fe61bc81..1b042ddef9b 100644 --- a/lib/Target/TargetMachine.cpp +++ b/lib/Target/TargetMachine.cpp @@ -39,10 +39,10 @@ namespace llvm { bool PerformTailCallOpt; unsigned StackAlignment; bool RealignStack; - bool VerboseAsm; bool DisableJumpTables; bool StrongPHIElim; bool DisableRedZone; + bool AsmVerbosityDefault(false); } static cl::opt @@ -154,10 +154,6 @@ EnableRealignStack("realign-stack", cl::location(RealignStack), cl::init(true)); static cl::opt -AsmVerbose("asm-verbose", cl::desc("Add comments to directives."), - cl::location(VerboseAsm), - cl::init(false)); -static cl::opt DisableSwitchTables(cl::Hidden, "disable-jump-tables", cl::desc("Do not generate jump tables."), cl::location(DisableJumpTables), @@ -203,6 +199,14 @@ void TargetMachine::setCodeModel(CodeModel::Model Model) { CMModel = Model; } +bool TargetMachine::getAsmVerbosityDefault() { + return AsmVerbosityDefault; +} + +void TargetMachine::setAsmVerbosityDefault(bool V) { + AsmVerbosityDefault = V; +} + namespace llvm { /// LessPreciseFPMAD - This flag return true when -enable-fp-mad option /// is specified on the command line. When this flag is off(default), the diff --git a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h index 35407343dc0..4da8076af5a 100644 --- a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h +++ b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h @@ -34,8 +34,8 @@ class VISIBILITY_HIDDEN X86ATTAsmPrinter : public AsmPrinter { const X86Subtarget *Subtarget; public: X86ATTAsmPrinter(raw_ostream &O, X86TargetMachine &TM, - const TargetAsmInfo *T, bool F) - : AsmPrinter(O, TM, T, F), DW(0), MMI(0) { + const TargetAsmInfo *T, bool F, bool V) + : AsmPrinter(O, TM, T, F, V), DW(0), MMI(0) { Subtarget = &TM.getSubtarget(); } diff --git a/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp b/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp index 9282f5f33d7..d64aaa6edb8 100644 --- a/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp +++ b/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp @@ -25,13 +25,13 @@ using namespace llvm; /// FunctionPass *llvm::createX86CodePrinterPass(raw_ostream &o, X86TargetMachine &tm, - bool fast) { + bool fast, bool verbose) { const X86Subtarget *Subtarget = &tm.getSubtarget(); if (Subtarget->isFlavorIntel()) { - return new X86IntelAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); + return new X86IntelAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast, verbose); } else { - return new X86ATTAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); + return new X86ATTAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast, verbose); } } diff --git a/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h b/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h index 5a399b3a4a4..ae84df22b76 100644 --- a/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h +++ b/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h @@ -26,8 +26,8 @@ namespace llvm { struct VISIBILITY_HIDDEN X86IntelAsmPrinter : public AsmPrinter { X86IntelAsmPrinter(raw_ostream &O, X86TargetMachine &TM, - const TargetAsmInfo *T, bool F) - : AsmPrinter(O, TM, T, F) {} + const TargetAsmInfo *T, bool F, bool V) + : AsmPrinter(O, TM, T, F, V) {} virtual const char *getPassName() const { return "X86 Intel-Style Assembly Printer"; diff --git a/lib/Target/X86/X86.h b/lib/Target/X86/X86.h index 76fc4ffc83f..72ff02ba6f6 100644 --- a/lib/Target/X86/X86.h +++ b/lib/Target/X86/X86.h @@ -44,7 +44,7 @@ FunctionPass *createX87FPRegKillInserterPass(); /// FunctionPass *createX86CodePrinterPass(raw_ostream &o, X86TargetMachine &tm, - bool fast); + bool fast, bool Verbose); /// createX86CodeEmitterPass - Return a pass that emits the collected X86 code /// to the specified MCE object. diff --git a/lib/Target/X86/X86TargetMachine.cpp b/lib/Target/X86/X86TargetMachine.cpp index 5fbe71e0b33..a20e1c44896 100644 --- a/lib/Target/X86/X86TargetMachine.cpp +++ b/lib/Target/X86/X86TargetMachine.cpp @@ -207,10 +207,10 @@ bool X86TargetMachine::addPostRegAlloc(PassManagerBase &PM, bool Fast) { } bool X86TargetMachine::addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out) { + bool Verbose, raw_ostream &Out) { assert(AsmPrinterCtor && "AsmPrinter was not linked in"); if (AsmPrinterCtor) - PM.add(AsmPrinterCtor(Out, *this, Fast)); + PM.add(AsmPrinterCtor(Out, *this, Fast, Verbose)); return false; } @@ -236,7 +236,7 @@ bool X86TargetMachine::addCodeEmitter(PassManagerBase &PM, bool Fast, if (DumpAsm) { assert(AsmPrinterCtor && "AsmPrinter was not linked in"); if (AsmPrinterCtor) - PM.add(AsmPrinterCtor(errs(), *this, Fast)); + PM.add(AsmPrinterCtor(errs(), *this, Fast, true)); } return false; @@ -248,7 +248,7 @@ bool X86TargetMachine::addSimpleCodeEmitter(PassManagerBase &PM, bool Fast, if (DumpAsm) { assert(AsmPrinterCtor && "AsmPrinter was not linked in"); if (AsmPrinterCtor) - PM.add(AsmPrinterCtor(errs(), *this, Fast)); + PM.add(AsmPrinterCtor(errs(), *this, Fast, true)); } return false; diff --git a/lib/Target/X86/X86TargetMachine.h b/lib/Target/X86/X86TargetMachine.h index 49cf163e6ff..fdc00fa1ef9 100644 --- a/lib/Target/X86/X86TargetMachine.h +++ b/lib/Target/X86/X86TargetMachine.h @@ -45,7 +45,7 @@ protected: // set this functions to ctor pointer at startup time if they are linked in. typedef FunctionPass *(*AsmPrinterCtorFn)(raw_ostream &o, X86TargetMachine &tm, - bool fast); + bool fast, bool verbose); static AsmPrinterCtorFn AsmPrinterCtor; public: @@ -78,7 +78,7 @@ public: virtual bool addPreRegAlloc(PassManagerBase &PM, bool Fast); virtual bool addPostRegAlloc(PassManagerBase &PM, bool Fast); virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out); + bool Verbose, raw_ostream &Out); virtual bool addCodeEmitter(PassManagerBase &PM, bool Fast, bool DumpAsm, MachineCodeEmitter &MCE); virtual bool addSimpleCodeEmitter(PassManagerBase &PM, bool Fast, diff --git a/lib/Target/XCore/XCore.h b/lib/Target/XCore/XCore.h index 361a2ee2bb8..62cf4032d68 100644 --- a/lib/Target/XCore/XCore.h +++ b/lib/Target/XCore/XCore.h @@ -24,7 +24,7 @@ namespace llvm { FunctionPass *createXCoreISelDag(XCoreTargetMachine &TM); FunctionPass *createXCoreCodePrinterPass(raw_ostream &OS, XCoreTargetMachine &TM, - bool Fast); + bool Fast, bool Verbose); } // end namespace llvm; // Defines symbolic names for XCore registers. This defines a mapping from diff --git a/lib/Target/XCore/XCoreAsmPrinter.cpp b/lib/Target/XCore/XCoreAsmPrinter.cpp index 67121a7b94b..a3907e9fe6a 100644 --- a/lib/Target/XCore/XCoreAsmPrinter.cpp +++ b/lib/Target/XCore/XCoreAsmPrinter.cpp @@ -58,8 +58,8 @@ namespace { const XCoreSubtarget &Subtarget; public: XCoreAsmPrinter(raw_ostream &O, XCoreTargetMachine &TM, - const TargetAsmInfo *T, bool F) - : AsmPrinter(O, TM, T, F), DW(0), + const TargetAsmInfo *T, bool F, bool V) + : AsmPrinter(O, TM, T, F, V), DW(0), Subtarget(*TM.getSubtargetImpl()) {} virtual const char *getPassName() const { @@ -105,8 +105,8 @@ namespace { /// FunctionPass *llvm::createXCoreCodePrinterPass(raw_ostream &o, XCoreTargetMachine &tm, - bool fast) { - return new XCoreAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast); + bool fast, bool verbose) { + return new XCoreAsmPrinter(o, tm, tm.getTargetAsmInfo(), fast, verbose); } // PrintEscapedString - Print each character of the specified string, escaping diff --git a/lib/Target/XCore/XCoreTargetMachine.cpp b/lib/Target/XCore/XCoreTargetMachine.cpp index 74ae3e0fcc5..1bfd7af1de2 100644 --- a/lib/Target/XCore/XCoreTargetMachine.cpp +++ b/lib/Target/XCore/XCoreTargetMachine.cpp @@ -61,8 +61,8 @@ bool XCoreTargetMachine::addInstSelector(PassManagerBase &PM, bool Fast) { } bool XCoreTargetMachine::addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out) { + bool Verbose, raw_ostream &Out) { // Output assembly language. - PM.add(createXCoreCodePrinterPass(Out, *this, Fast)); + PM.add(createXCoreCodePrinterPass(Out, *this, Fast, Verbose)); return false; } diff --git a/lib/Target/XCore/XCoreTargetMachine.h b/lib/Target/XCore/XCoreTargetMachine.h index 4fa200a66a4..081bdbdaf2e 100644 --- a/lib/Target/XCore/XCoreTargetMachine.h +++ b/lib/Target/XCore/XCoreTargetMachine.h @@ -54,7 +54,7 @@ public: // Pass Pipeline Configuration virtual bool addInstSelector(PassManagerBase &PM, bool Fast); virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast, - raw_ostream &Out); + bool Verbose, raw_ostream &Out); }; } // end namespace llvm diff --git a/test/CodeGen/X86/2007-06-04-tailmerge4.ll b/test/CodeGen/X86/2007-06-04-tailmerge4.ll index 0ad539664c9..497a83aa34a 100644 --- a/test/CodeGen/X86/2007-06-04-tailmerge4.ll +++ b/test/CodeGen/X86/2007-06-04-tailmerge4.ll @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | llc -enable-eh -asm-verbose | grep invcont131 +; RUN: llvm-as < %s | llc -enable-eh | grep invcont131 ; PR 1496: tail merge was incorrectly removing this block ; ModuleID = 'report.1.bc' diff --git a/test/CodeGen/X86/2008-03-23-DarwinAsmComments.ll b/test/CodeGen/X86/2008-03-23-DarwinAsmComments.ll index 6cf731b0e9b..3d5a86cd243 100644 --- a/test/CodeGen/X86/2008-03-23-DarwinAsmComments.ll +++ b/test/CodeGen/X86/2008-03-23-DarwinAsmComments.ll @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin -asm-verbose | grep {#} | not grep -v {##} +; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin | grep {#} | not grep -v {##} %struct.AGenericCall = type { %struct.AGenericManager*, %struct.ComponentParameters*, i32* } %struct.AGenericManager = type <{ i8 }> diff --git a/test/CodeGen/X86/2009-03-16-PHIElimInLPad.ll b/test/CodeGen/X86/2009-03-16-PHIElimInLPad.ll index 091aab41d29..c079ae73725 100644 --- a/test/CodeGen/X86/2009-03-16-PHIElimInLPad.ll +++ b/test/CodeGen/X86/2009-03-16-PHIElimInLPad.ll @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | llc -march=x86 -asm-verbose | grep -A 1 lpad | grep Llabel +; RUN: llvm-as < %s | llc -march=x86 | grep -A 1 lpad | grep Llabel ; Check that register copies in the landing pad come after the EH_LABEL declare i32 @f() diff --git a/test/CodeGen/X86/aliases.ll b/test/CodeGen/X86/aliases.ll index 3578c96c65c..3aadd05d05e 100644 --- a/test/CodeGen/X86/aliases.ll +++ b/test/CodeGen/X86/aliases.ll @@ -1,5 +1,5 @@ ; RUN: llvm-as < %s | \ -; RUN: llc -mtriple=i686-pc-linux-gnu -o %t -f +; RUN: llc -mtriple=i686-pc-linux-gnu -asm-verbose=false -o %t -f ; RUN: grep set %t | count 7 ; RUN: grep globl %t | count 6 ; RUN: grep weak %t | count 1 diff --git a/test/CodeGen/X86/pic_jumptable.ll b/test/CodeGen/X86/pic_jumptable.ll index 553021dc90d..1731feb58e9 100644 --- a/test/CodeGen/X86/pic_jumptable.ll +++ b/test/CodeGen/X86/pic_jumptable.ll @@ -1,6 +1,6 @@ -; RUN: llvm-as < %s | llc -relocation-model=pic -mtriple=i386-linux-gnu | not grep -F .text -; RUN: llvm-as < %s | llc -relocation-model=pic -mtriple=i686-apple-darwin | not grep lea -; RUN: llvm-as < %s | llc -relocation-model=pic -mtriple=i686-apple-darwin | grep add | count 2 +; RUN: llvm-as < %s | llc -relocation-model=pic -mtriple=i386-linux-gnu -asm-verbose=false | not grep -F .text +; RUN: llvm-as < %s | llc -relocation-model=pic -mtriple=i686-apple-darwin -asm-verbose=false | not grep lea +; RUN: llvm-as < %s | llc -relocation-model=pic -mtriple=i686-apple-darwin -asm-verbose=false | grep add | count 2 declare void @_Z3bari(i32)