1 //===-- llvm/CodeGen/DwarfWriter.cpp - Dwarf Framework --------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file contains support for writing dwarf info into asm files.
12 //===----------------------------------------------------------------------===//
14 #include "llvm/CodeGen/DwarfWriter.h"
15 #include "DwarfDebug.h"
16 #include "DwarfException.h"
17 #include "llvm/CodeGen/MachineModuleInfo.h"
21 static RegisterPass<DwarfWriter>
22 X("dwarfwriter", "DWARF Information Writer");
23 char DwarfWriter::ID = 0;
25 //===----------------------------------------------------------------------===//
26 /// DwarfWriter Implementation
29 DwarfWriter::DwarfWriter()
30 : ImmutablePass(&ID), DD(0), DE(0) {}
32 DwarfWriter::~DwarfWriter() {
37 /// BeginModule - Emit all Dwarf sections that should come prior to the
39 void DwarfWriter::BeginModule(Module *M, AsmPrinter *A) {
40 DE = new DwarfException(A);
41 DD = new DwarfDebug(A);
46 /// EndModule - Emit all Dwarf sections that should come after the content.
48 void DwarfWriter::EndModule() {
55 /// BeginFunction - Gather pre-function debug information. Assumes being
56 /// emitted immediately after the function entry point.
57 void DwarfWriter::BeginFunction(const MachineFunction *MF) {
58 DE->BeginFunction(MF);
59 DD->beginFunction(MF);
62 /// EndFunction - Gather and emit post-function debug information.
64 void DwarfWriter::EndFunction(const MachineFunction *MF) {
68 if (MachineModuleInfo *MMI = DE->getMMI())
69 // Clear function debug information.
73 /// ShouldEmitDwarfDebug - Returns true if Dwarf debugging declarations should
75 bool DwarfWriter::ShouldEmitDwarfDebug() const {
76 return DD && DD->ShouldEmitDwarfDebug();
79 void DwarfWriter::BeginScope(const MachineInstr *MI) {
82 void DwarfWriter::EndScope(const MachineInstr *MI) {