#include "llvm/Module.h"
#include "llvm/Type.h"
#include "llvm/CodeGen/AsmPrinter.h"
-#include "llvm/CodeGen/MachineDebugInfoDesc.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineLocation.h"
///
AsmPrinter *Asm;
- /// TAI - Target Asm Printer.
+ /// TAI - Target asm information.
const TargetAsmInfo *TAI;
/// TD - Target data.
// Emit the code (index) for the abbreviation.
Asm->EmitULEB128Bytes(AbbrevNumber);
- Asm->EOL(std::string("Abbrev [" +
- utostr(AbbrevNumber) +
- "] 0x" + utohexstr(Die->getOffset()) +
- ":0x" + utohexstr(Die->getSize()) + " " +
- TagString(Abbrev->getTag())));
+
+ if (VerboseAsm)
+ Asm->EOL(std::string("Abbrev [" +
+ utostr(AbbrevNumber) +
+ "] 0x" + utohexstr(Die->getOffset()) +
+ ":0x" + utohexstr(Die->getSize()) + " " +
+ TagString(Abbrev->getTag())));
+ else
+ Asm->EOL();
SmallVector<DIEValue*, 32> &Values = Die->getValues();
const SmallVector<DIEAbbrevData, 8> &AbbrevData = Abbrev->getData();
Asm->EmitInt8(1); Asm->EOL("DW_LNS_fixed_advance_pc arg count");
const UniqueVector<std::string> &Directories = MMI->getDirectories();
- const UniqueVector<SourceFileInfo>
- &SourceFiles = MMI->getSourceFiles();
+ const UniqueVector<SourceFileInfo> &SourceFiles = MMI->getSourceFiles();
// Emit directories.
for (unsigned DirectoryID = 1, NDID = Directories.size();
for (unsigned j = 0, M = SectionSourceLines.size(); j < M; ++j) {
// Isolate current sections line info.
const std::vector<SourceLineInfo> &LineInfos = SectionSourceLines[j];
-
- Asm->EOL(std::string("Section ") + SectionMap[j + 1]);
+
+ if (VerboseAsm)
+ Asm->EOL(std::string("Section ") + SectionMap[j + 1]);
+ else
+ Asm->EOL();
// Dwarf assumes we start with first line of first source file.
unsigned Source = 1;
unsigned SourceID = LineInfo.getSourceID();
const SourceFileInfo &SourceFile = SourceFiles[SourceID];
unsigned DirectoryID = SourceFile.getDirectoryID();
- Asm->EOL(Directories[DirectoryID]
- + SourceFile.getName()
- + ":"
- + utostr_32(LineInfo.getLine()));
+ if (VerboseAsm)
+ Asm->EOL(Directories[DirectoryID]
+ + SourceFile.getName()
+ + ":"
+ + utostr_32(LineInfo.getLine()));
+ else
+ Asm->EOL();
// Define the line address.
Asm->EmitInt8(0); Asm->EOL("Extended Op");
/// ConstructGlobalDIEs - Create DIEs for each of the externally visible
/// global variables.
void ConstructGlobalDIEs() {
- std::vector<void*> GlobalVariables;
- GlobalVariableDesc GVD;
- MMI->getAnchoredDescriptors(*M, &GVD, GlobalVariables);
+ std::vector<GlobalVariableDesc *> GlobalVariables;
+ MMI->getAnchoredDescriptors<GlobalVariableDesc>(*M, GlobalVariables);
- for (unsigned i = 0, N = GlobalVariables.size(); i < N; ++i)
- NewGlobalVariable((GlobalVariableDesc *)GlobalVariables[i]);
+ for (unsigned i = 0, N = GlobalVariables.size(); i < N; ++i) {
+ GlobalVariableDesc *GVD = GlobalVariables[i];
+ NewGlobalVariable(GVD);
+ }
}
/// ConstructSubprogramDIEs - Create DIEs for each of the externally visible
/// subprograms.
void ConstructSubprogramDIEs() {
- std::vector<void*> Subprograms;
- SubprogramDesc SPD;
- MMI->getAnchoredDescriptors(*M, &SPD, Subprograms);
+ std::vector<SubprogramDesc *> Subprograms;
+ MMI->getAnchoredDescriptors<SubprogramDesc>(*M, Subprograms);
- for (unsigned i = 0, N = Subprograms.size(); i < N; ++i)
- NewSubprogram((SubprogramDesc*)Subprograms[i]);
+ for (unsigned i = 0, N = Subprograms.size(); i < N; ++i) {
+ SubprogramDesc *SPD = Subprograms[i];
+ NewSubprogram(SPD);
+ }
}
public:
/// content.
void BeginModule(Module *M) {
this->M = M;
-
- if (!ShouldEmitDwarf()) return;
}
/// EndModule - Emit all Dwarf sections that should come after the content.
shouldEmitTable = true;
// See if we need frame move info.
- if (MMI->hasDebugInfo() ||
- !MF->getFunction()->doesNotThrow() ||
- UnwindTablesMandatory)
+ if (!MF->getFunction()->doesNotThrow() || UnwindTablesMandatory)
shouldEmitMoves = true;
if (shouldEmitMoves || shouldEmitTable)