From 39c3c89cdc20b541dee4b2ebb52c867d07982294 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Wed, 30 Nov 2016 23:48:26 +0000 Subject: MCStreamer: Use "cfi" for CFI related temp labels. Choosing a "cfi" name makes the intend a bit clearer in an assembly dump and more importantly the assembly dumps are slightly more stable as the numbers don't move around anymore when unrelated code calls createTempSymbol() more or less often. As they are temp labels the name doesn't influence the generated object code. Differential Revision: https://reviews.llvm.org/D27244 llvm-svn: 288290 --- llvm/lib/MC/MCStreamer.cpp | 43 ++++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 25 deletions(-) (limited to 'llvm/lib/MC/MCStreamer.cpp') diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp index e0b5310bfea..ab60731b9dc 100644 --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -341,13 +341,17 @@ void MCStreamer::EmitCFIEndProcImpl(MCDwarfFrameInfo &Frame) { Frame.End = (MCSymbol *) 1; } -MCSymbol *MCStreamer::EmitCFICommon() { - EnsureValidDwarfFrame(); - MCSymbol *Label = getContext().createTempSymbol(); +MCSymbol *MCStreamer::EmitCFILabel() { + MCSymbol *Label = getContext().createTempSymbol("cfi", true); EmitLabel(Label); return Label; } +MCSymbol *MCStreamer::EmitCFICommon() { + EnsureValidDwarfFrame(); + return EmitCFILabel(); +} + void MCStreamer::EmitCFIDefCfa(int64_t Register, int64_t Offset) { MCSymbol *Label = EmitCFICommon(); MCCFIInstruction Instruction = @@ -504,8 +508,7 @@ void MCStreamer::EmitWinCFIStartProc(const MCSymbol *Symbol) { if (CurrentWinFrameInfo && !CurrentWinFrameInfo->End) report_fatal_error("Starting a function before ending the previous one!"); - MCSymbol *StartProc = getContext().createTempSymbol(); - EmitLabel(StartProc); + MCSymbol *StartProc = EmitCFILabel(); WinFrameInfos.push_back(new WinEH::FrameInfo(Symbol, StartProc)); CurrentWinFrameInfo = WinFrameInfos.back(); @@ -517,16 +520,14 @@ void MCStreamer::EmitWinCFIEndProc() { if (CurrentWinFrameInfo->ChainedParent) report_fatal_error("Not all chained regions terminated!"); - MCSymbol *Label = getContext().createTempSymbol(); - EmitLabel(Label); + MCSymbol *Label = EmitCFILabel(); CurrentWinFrameInfo->End = Label; } void MCStreamer::EmitWinCFIStartChained() { EnsureValidWinFrameInfo(); - MCSymbol *StartProc = getContext().createTempSymbol(); - EmitLabel(StartProc); + MCSymbol *StartProc = EmitCFILabel(); WinFrameInfos.push_back(new WinEH::FrameInfo(CurrentWinFrameInfo->Function, StartProc, CurrentWinFrameInfo)); @@ -539,8 +540,7 @@ void MCStreamer::EmitWinCFIEndChained() { if (!CurrentWinFrameInfo->ChainedParent) report_fatal_error("End of a chained region outside a chained region!"); - MCSymbol *Label = getContext().createTempSymbol(); - EmitLabel(Label); + MCSymbol *Label = EmitCFILabel(); CurrentWinFrameInfo->End = Label; CurrentWinFrameInfo = @@ -604,8 +604,7 @@ void MCStreamer::EmitSyntaxDirective() {} void MCStreamer::EmitWinCFIPushReg(unsigned Register) { EnsureValidWinFrameInfo(); - MCSymbol *Label = getContext().createTempSymbol(); - EmitLabel(Label); + MCSymbol *Label = EmitCFILabel(); WinEH::Instruction Inst = Win64EH::Instruction::PushNonVol(Label, Register); CurrentWinFrameInfo->Instructions.push_back(Inst); @@ -620,8 +619,7 @@ void MCStreamer::EmitWinCFISetFrame(unsigned Register, unsigned Offset) { if (Offset > 240) report_fatal_error("Frame offset must be less than or equal to 240!"); - MCSymbol *Label = getContext().createTempSymbol(); - EmitLabel(Label); + MCSymbol *Label = EmitCFILabel(); WinEH::Instruction Inst = Win64EH::Instruction::SetFPReg(Label, Register, Offset); @@ -636,8 +634,7 @@ void MCStreamer::EmitWinCFIAllocStack(unsigned Size) { if (Size & 7) report_fatal_error("Misaligned stack allocation!"); - MCSymbol *Label = getContext().createTempSymbol(); - EmitLabel(Label); + MCSymbol *Label = EmitCFILabel(); WinEH::Instruction Inst = Win64EH::Instruction::Alloc(Label, Size); CurrentWinFrameInfo->Instructions.push_back(Inst); @@ -648,8 +645,7 @@ void MCStreamer::EmitWinCFISaveReg(unsigned Register, unsigned Offset) { if (Offset & 7) report_fatal_error("Misaligned saved register offset!"); - MCSymbol *Label = getContext().createTempSymbol(); - EmitLabel(Label); + MCSymbol *Label = EmitCFILabel(); WinEH::Instruction Inst = Win64EH::Instruction::SaveNonVol(Label, Register, Offset); @@ -661,8 +657,7 @@ void MCStreamer::EmitWinCFISaveXMM(unsigned Register, unsigned Offset) { if (Offset & 0x0F) report_fatal_error("Misaligned saved vector register offset!"); - MCSymbol *Label = getContext().createTempSymbol(); - EmitLabel(Label); + MCSymbol *Label = EmitCFILabel(); WinEH::Instruction Inst = Win64EH::Instruction::SaveXMM(Label, Register, Offset); @@ -674,8 +669,7 @@ void MCStreamer::EmitWinCFIPushFrame(bool Code) { if (CurrentWinFrameInfo->Instructions.size() > 0) report_fatal_error("If present, PushMachFrame must be the first UOP"); - MCSymbol *Label = getContext().createTempSymbol(); - EmitLabel(Label); + MCSymbol *Label = EmitCFILabel(); WinEH::Instruction Inst = Win64EH::Instruction::PushMachFrame(Label, Code); CurrentWinFrameInfo->Instructions.push_back(Inst); @@ -684,8 +678,7 @@ void MCStreamer::EmitWinCFIPushFrame(bool Code) { void MCStreamer::EmitWinCFIEndProlog() { EnsureValidWinFrameInfo(); - MCSymbol *Label = getContext().createTempSymbol(); - EmitLabel(Label); + MCSymbol *Label = EmitCFILabel(); CurrentWinFrameInfo->PrologEnd = Label; } -- cgit v1.2.3