mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
Dead code elimination.
llvm-svn: 130984
This commit is contained in:
parent
e4a7007565
commit
59462d8ae3
@ -269,9 +269,6 @@ namespace llvm {
|
||||
/// SupportsExceptionHandling - True if target supports exception handling.
|
||||
ExceptionHandling::ExceptionsType ExceptionsType; // Defaults to None
|
||||
|
||||
/// RequiresFrameSection - true if the Dwarf2 output needs a frame section
|
||||
bool DwarfRequiresFrameSection; // Defaults to true.
|
||||
|
||||
/// DwarfUsesInlineInfoSection - True if DwarfDebugInlineSection is used to
|
||||
/// encode inline subroutine information.
|
||||
bool DwarfUsesInlineInfoSection; // Defaults to false.
|
||||
@ -465,10 +462,6 @@ namespace llvm {
|
||||
(ExceptionsType == ExceptionHandling::DwarfCFI ||
|
||||
ExceptionsType == ExceptionHandling::ARM);
|
||||
}
|
||||
|
||||
bool doesDwarfRequireFrameSection() const {
|
||||
return DwarfRequiresFrameSection;
|
||||
}
|
||||
bool doesDwarfUsesInlineInfoSection() const {
|
||||
return DwarfUsesInlineInfoSection;
|
||||
}
|
||||
|
@ -596,7 +596,7 @@ bool AsmPrinter::needsCFIMoves() {
|
||||
if (UnwindTablesMandatory)
|
||||
return true;
|
||||
|
||||
if (MMI->hasDebugInfo() && !MAI->doesDwarfRequireFrameSection())
|
||||
if (MMI->hasDebugInfo())
|
||||
return true;
|
||||
|
||||
if (MF->getFunction()->doesNotThrow())
|
||||
@ -608,8 +608,7 @@ bool AsmPrinter::needsCFIMoves() {
|
||||
void AsmPrinter::emitPrologLabel(const MachineInstr &MI) {
|
||||
MCSymbol *Label = MI.getOperand(0).getMCSymbol();
|
||||
|
||||
if (MAI->doesDwarfRequireFrameSection() ||
|
||||
MAI->getExceptionHandlingType() != ExceptionHandling::DwarfCFI)
|
||||
if (MAI->getExceptionHandlingType() != ExceptionHandling::DwarfCFI)
|
||||
OutStreamer.EmitLabel(Label);
|
||||
|
||||
if (MAI->getExceptionHandlingType() != ExceptionHandling::DwarfCFI)
|
||||
|
@ -256,7 +256,7 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
|
||||
CurrentFnDbgScope(0), PrevLabel(NULL) {
|
||||
NextStringPoolNumber = 0;
|
||||
|
||||
DwarfFrameSectionSym = DwarfInfoSectionSym = DwarfAbbrevSectionSym = 0;
|
||||
DwarfInfoSectionSym = DwarfAbbrevSectionSym = 0;
|
||||
DwarfStrSectionSym = TextSectionSym = 0;
|
||||
DwarfDebugRangeSectionSym = DwarfDebugLocSectionSym = 0;
|
||||
FunctionBeginSym = FunctionEndSym = 0;
|
||||
@ -1261,14 +1261,6 @@ void DwarfDebug::endModule() {
|
||||
Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("section_end", i));
|
||||
}
|
||||
|
||||
// Emit common frame information.
|
||||
emitCommonDebugFrame();
|
||||
|
||||
// Emit function debug frame information
|
||||
for (std::vector<FunctionDebugFrameInfo>::iterator I = DebugFrames.begin(),
|
||||
E = DebugFrames.end(); I != E; ++I)
|
||||
emitFunctionDebugFrame(*I);
|
||||
|
||||
// Compute DIE offsets and sizes.
|
||||
computeSizeAndOffsets();
|
||||
|
||||
@ -2261,11 +2253,6 @@ void DwarfDebug::EmitSectionLabels() {
|
||||
const TargetLoweringObjectFile &TLOF = Asm->getObjFileLowering();
|
||||
|
||||
// Dwarf sections base addresses.
|
||||
if (Asm->MAI->doesDwarfRequireFrameSection()) {
|
||||
DwarfFrameSectionSym =
|
||||
EmitSectionSym(Asm, TLOF.getDwarfFrameSection(), "section_debug_frame");
|
||||
}
|
||||
|
||||
DwarfInfoSectionSym =
|
||||
EmitSectionSym(Asm, TLOF.getDwarfInfoSection(), "section_info");
|
||||
DwarfAbbrevSectionSym =
|
||||
@ -2473,91 +2460,6 @@ void DwarfDebug::emitEndOfLineMatrix(unsigned SectionEnd) {
|
||||
Asm->EmitInt8(1);
|
||||
}
|
||||
|
||||
/// emitCommonDebugFrame - Emit common frame info into a debug frame section.
|
||||
///
|
||||
void DwarfDebug::emitCommonDebugFrame() {
|
||||
if (!Asm->MAI->doesDwarfRequireFrameSection())
|
||||
return;
|
||||
|
||||
int stackGrowth = Asm->getTargetData().getPointerSize();
|
||||
if (Asm->TM.getFrameLowering()->getStackGrowthDirection() ==
|
||||
TargetFrameLowering::StackGrowsDown)
|
||||
stackGrowth *= -1;
|
||||
|
||||
// Start the dwarf frame section.
|
||||
Asm->OutStreamer.SwitchSection(
|
||||
Asm->getObjFileLowering().getDwarfFrameSection());
|
||||
|
||||
Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("debug_frame_common"));
|
||||
Asm->OutStreamer.AddComment("Length of Common Information Entry");
|
||||
Asm->EmitLabelDifference(Asm->GetTempSymbol("debug_frame_common_end"),
|
||||
Asm->GetTempSymbol("debug_frame_common_begin"), 4);
|
||||
|
||||
Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("debug_frame_common_begin"));
|
||||
Asm->OutStreamer.AddComment("CIE Identifier Tag");
|
||||
Asm->EmitInt32((int)dwarf::DW_CIE_ID);
|
||||
Asm->OutStreamer.AddComment("CIE Version");
|
||||
Asm->EmitInt8(dwarf::DW_CIE_VERSION);
|
||||
Asm->OutStreamer.AddComment("CIE Augmentation");
|
||||
Asm->OutStreamer.EmitIntValue(0, 1, /*addrspace*/0); // nul terminator.
|
||||
Asm->EmitULEB128(1, "CIE Code Alignment Factor");
|
||||
Asm->EmitSLEB128(stackGrowth, "CIE Data Alignment Factor");
|
||||
Asm->OutStreamer.AddComment("CIE RA Column");
|
||||
const TargetRegisterInfo *RI = Asm->TM.getRegisterInfo();
|
||||
const TargetFrameLowering *TFI = Asm->TM.getFrameLowering();
|
||||
Asm->EmitInt8(RI->getDwarfRegNum(RI->getRARegister(), false));
|
||||
|
||||
std::vector<MachineMove> Moves;
|
||||
TFI->getInitialFrameState(Moves);
|
||||
|
||||
Asm->EmitFrameMoves(Moves, 0, false);
|
||||
|
||||
Asm->EmitAlignment(2);
|
||||
Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("debug_frame_common_end"));
|
||||
}
|
||||
|
||||
/// emitFunctionDebugFrame - Emit per function frame info into a debug frame
|
||||
/// section.
|
||||
void DwarfDebug::
|
||||
emitFunctionDebugFrame(const FunctionDebugFrameInfo &DebugFrameInfo) {
|
||||
if (!Asm->MAI->doesDwarfRequireFrameSection())
|
||||
return;
|
||||
|
||||
// Start the dwarf frame section.
|
||||
Asm->OutStreamer.SwitchSection(
|
||||
Asm->getObjFileLowering().getDwarfFrameSection());
|
||||
|
||||
Asm->OutStreamer.AddComment("Length of Frame Information Entry");
|
||||
MCSymbol *DebugFrameBegin =
|
||||
Asm->GetTempSymbol("debug_frame_begin", DebugFrameInfo.Number);
|
||||
MCSymbol *DebugFrameEnd =
|
||||
Asm->GetTempSymbol("debug_frame_end", DebugFrameInfo.Number);
|
||||
Asm->EmitLabelDifference(DebugFrameEnd, DebugFrameBegin, 4);
|
||||
|
||||
Asm->OutStreamer.EmitLabel(DebugFrameBegin);
|
||||
|
||||
Asm->OutStreamer.AddComment("FDE CIE offset");
|
||||
Asm->EmitSectionOffset(Asm->GetTempSymbol("debug_frame_common"),
|
||||
DwarfFrameSectionSym);
|
||||
|
||||
Asm->OutStreamer.AddComment("FDE initial location");
|
||||
MCSymbol *FuncBeginSym =
|
||||
Asm->GetTempSymbol("func_begin", DebugFrameInfo.Number);
|
||||
Asm->OutStreamer.EmitSymbolValue(FuncBeginSym,
|
||||
Asm->getTargetData().getPointerSize(),
|
||||
0/*AddrSpace*/);
|
||||
|
||||
|
||||
Asm->OutStreamer.AddComment("FDE address range");
|
||||
Asm->EmitLabelDifference(Asm->GetTempSymbol("func_end",DebugFrameInfo.Number),
|
||||
FuncBeginSym, Asm->getTargetData().getPointerSize());
|
||||
|
||||
Asm->EmitFrameMoves(DebugFrameInfo.Moves, FuncBeginSym, false);
|
||||
|
||||
Asm->EmitAlignment(2);
|
||||
Asm->OutStreamer.EmitLabel(DebugFrameEnd);
|
||||
}
|
||||
|
||||
/// emitDebugPubNames - Emit visible names into a debug pubnames section.
|
||||
///
|
||||
void DwarfDebug::emitDebugPubNames() {
|
||||
|
@ -269,7 +269,7 @@ class DwarfDebug {
|
||||
// Section Symbols: these are assembler temporary labels that are emitted at
|
||||
// the beginning of each supported dwarf section. These are used to form
|
||||
// section offsets and are created by EmitSectionLabels.
|
||||
MCSymbol *DwarfFrameSectionSym, *DwarfInfoSectionSym, *DwarfAbbrevSectionSym;
|
||||
MCSymbol *DwarfInfoSectionSym, *DwarfAbbrevSectionSym;
|
||||
MCSymbol *DwarfStrSectionSym, *TextSectionSym, *DwarfDebugRangeSectionSym;
|
||||
MCSymbol *DwarfDebugLocSectionSym;
|
||||
MCSymbol *FunctionBeginSym, *FunctionEndSym;
|
||||
@ -338,14 +338,6 @@ private:
|
||||
///
|
||||
void emitEndOfLineMatrix(unsigned SectionEnd);
|
||||
|
||||
/// emitCommonDebugFrame - Emit common frame info into a debug frame section.
|
||||
///
|
||||
void emitCommonDebugFrame();
|
||||
|
||||
/// emitFunctionDebugFrame - Emit per function frame info into a debug frame
|
||||
/// section.
|
||||
void emitFunctionDebugFrame(const FunctionDebugFrameInfo &DebugFrameInfo);
|
||||
|
||||
/// emitDebugPubNames - Emit visible names into a debug pubnames section.
|
||||
///
|
||||
void emitDebugPubNames();
|
||||
|
@ -74,7 +74,6 @@ MCAsmInfo::MCAsmInfo() {
|
||||
HasLEB128 = false;
|
||||
SupportsDebugInformation = false;
|
||||
ExceptionsType = ExceptionHandling::None;
|
||||
DwarfRequiresFrameSection = false;
|
||||
DwarfUsesInlineInfoSection = false;
|
||||
DwarfRequiresRelocationForStmtList = true;
|
||||
DwarfSectionOffsetDirective = 0;
|
||||
|
@ -70,8 +70,6 @@ ARMELFMCAsmInfo::ARMELFMCAsmInfo() {
|
||||
WeakRefDirective = "\t.weak\t";
|
||||
HasLCOMMDirective = true;
|
||||
|
||||
DwarfRequiresFrameSection = false;
|
||||
|
||||
SupportsDebugInformation = true;
|
||||
|
||||
// Exceptions handling
|
||||
|
@ -108,8 +108,6 @@ X86ELFMCAsmInfo::X86ELFMCAsmInfo(const Triple &T) {
|
||||
// Exceptions handling
|
||||
ExceptionsType = ExceptionHandling::DwarfCFI;
|
||||
|
||||
DwarfRequiresFrameSection = false;
|
||||
|
||||
// OpenBSD has buggy support for .quad in 32-bit mode, just split into two
|
||||
// .words.
|
||||
if (T.getOS() == Triple::OpenBSD && T.getArch() == Triple::x86)
|
||||
|
Loading…
Reference in New Issue
Block a user