mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
[AsmPrinter] Make AsmPrinter's OutStreamer member a unique_ptr.
AsmPrinter owns the OutStreamer, so an owning pointer makes sense here. Using a reference for this is crufty. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235752 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -434,15 +434,15 @@ void EHStreamer::emitExceptionTable() {
|
||||
// Sometimes we want not to emit the data into separate section (e.g. ARM
|
||||
// EHABI). In this case LSDASection will be NULL.
|
||||
if (LSDASection)
|
||||
Asm->OutStreamer.SwitchSection(LSDASection);
|
||||
Asm->OutStreamer->SwitchSection(LSDASection);
|
||||
Asm->EmitAlignment(2);
|
||||
|
||||
// Emit the LSDA.
|
||||
MCSymbol *GCCETSym =
|
||||
Asm->OutContext.GetOrCreateSymbol(Twine("GCC_except_table")+
|
||||
Twine(Asm->getFunctionNumber()));
|
||||
Asm->OutStreamer.EmitLabel(GCCETSym);
|
||||
Asm->OutStreamer.EmitLabel(Asm->getCurExceptionSym());
|
||||
Asm->OutStreamer->EmitLabel(GCCETSym);
|
||||
Asm->OutStreamer->EmitLabel(Asm->getCurExceptionSym());
|
||||
|
||||
// Emit the LSDA header.
|
||||
Asm->EmitEncodingByte(dwarf::DW_EH_PE_omit, "@LPStart");
|
||||
@@ -486,7 +486,7 @@ void EHStreamer::emitExceptionTable() {
|
||||
SizeAlign = 0;
|
||||
}
|
||||
|
||||
bool VerboseAsm = Asm->OutStreamer.isVerboseAsm();
|
||||
bool VerboseAsm = Asm->OutStreamer->isVerboseAsm();
|
||||
|
||||
// SjLj Exception handling
|
||||
if (IsSJLJ) {
|
||||
@@ -504,8 +504,8 @@ void EHStreamer::emitExceptionTable() {
|
||||
// Offset of the landing pad, counted in 16-byte bundles relative to the
|
||||
// @LPStart address.
|
||||
if (VerboseAsm) {
|
||||
Asm->OutStreamer.AddComment(">> Call Site " + Twine(idx) + " <<");
|
||||
Asm->OutStreamer.AddComment(" On exception at call site "+Twine(idx));
|
||||
Asm->OutStreamer->AddComment(">> Call Site " + Twine(idx) + " <<");
|
||||
Asm->OutStreamer->AddComment(" On exception at call site "+Twine(idx));
|
||||
}
|
||||
Asm->EmitULEB128(idx);
|
||||
|
||||
@@ -514,10 +514,10 @@ void EHStreamer::emitExceptionTable() {
|
||||
// the action table), and 0 indicates that there are no actions.
|
||||
if (VerboseAsm) {
|
||||
if (S.Action == 0)
|
||||
Asm->OutStreamer.AddComment(" Action: cleanup");
|
||||
Asm->OutStreamer->AddComment(" Action: cleanup");
|
||||
else
|
||||
Asm->OutStreamer.AddComment(" Action: " +
|
||||
Twine((S.Action - 1) / 2 + 1));
|
||||
Asm->OutStreamer->AddComment(" Action: " +
|
||||
Twine((S.Action - 1) / 2 + 1));
|
||||
}
|
||||
Asm->EmitULEB128(S.Action);
|
||||
}
|
||||
@@ -566,24 +566,24 @@ void EHStreamer::emitExceptionTable() {
|
||||
// number of 16-byte bundles. The first call site is counted relative to
|
||||
// the start of the procedure fragment.
|
||||
if (VerboseAsm)
|
||||
Asm->OutStreamer.AddComment(">> Call Site " + Twine(++Entry) + " <<");
|
||||
Asm->OutStreamer->AddComment(">> Call Site " + Twine(++Entry) + " <<");
|
||||
Asm->EmitLabelDifference(BeginLabel, EHFuncBeginSym, 4);
|
||||
if (VerboseAsm)
|
||||
Asm->OutStreamer.AddComment(Twine(" Call between ") +
|
||||
BeginLabel->getName() + " and " +
|
||||
EndLabel->getName());
|
||||
Asm->OutStreamer->AddComment(Twine(" Call between ") +
|
||||
BeginLabel->getName() + " and " +
|
||||
EndLabel->getName());
|
||||
Asm->EmitLabelDifference(EndLabel, BeginLabel, 4);
|
||||
|
||||
// Offset of the landing pad, counted in 16-byte bundles relative to the
|
||||
// @LPStart address.
|
||||
if (!S.LPad) {
|
||||
if (VerboseAsm)
|
||||
Asm->OutStreamer.AddComment(" has no landing pad");
|
||||
Asm->OutStreamer.EmitIntValue(0, 4/*size*/);
|
||||
Asm->OutStreamer->AddComment(" has no landing pad");
|
||||
Asm->OutStreamer->EmitIntValue(0, 4/*size*/);
|
||||
} else {
|
||||
if (VerboseAsm)
|
||||
Asm->OutStreamer.AddComment(Twine(" jumps to ") +
|
||||
S.LPad->LandingPadLabel->getName());
|
||||
Asm->OutStreamer->AddComment(Twine(" jumps to ") +
|
||||
S.LPad->LandingPadLabel->getName());
|
||||
Asm->EmitLabelDifference(S.LPad->LandingPadLabel, EHFuncBeginSym, 4);
|
||||
}
|
||||
|
||||
@@ -592,10 +592,10 @@ void EHStreamer::emitExceptionTable() {
|
||||
// the action table), and 0 indicates that there are no actions.
|
||||
if (VerboseAsm) {
|
||||
if (S.Action == 0)
|
||||
Asm->OutStreamer.AddComment(" On action: cleanup");
|
||||
Asm->OutStreamer->AddComment(" On action: cleanup");
|
||||
else
|
||||
Asm->OutStreamer.AddComment(" On action: " +
|
||||
Twine((S.Action - 1) / 2 + 1));
|
||||
Asm->OutStreamer->AddComment(" On action: " +
|
||||
Twine((S.Action - 1) / 2 + 1));
|
||||
}
|
||||
Asm->EmitULEB128(S.Action);
|
||||
}
|
||||
@@ -609,7 +609,7 @@ void EHStreamer::emitExceptionTable() {
|
||||
|
||||
if (VerboseAsm) {
|
||||
// Emit comments that decode the action table.
|
||||
Asm->OutStreamer.AddComment(">> Action Record " + Twine(++Entry) + " <<");
|
||||
Asm->OutStreamer->AddComment(">> Action Record " + Twine(++Entry) + " <<");
|
||||
}
|
||||
|
||||
// Type Filter
|
||||
@@ -618,13 +618,13 @@ void EHStreamer::emitExceptionTable() {
|
||||
// type of the catch clauses or the types in the exception specification.
|
||||
if (VerboseAsm) {
|
||||
if (Action.ValueForTypeID > 0)
|
||||
Asm->OutStreamer.AddComment(" Catch TypeInfo " +
|
||||
Twine(Action.ValueForTypeID));
|
||||
Asm->OutStreamer->AddComment(" Catch TypeInfo " +
|
||||
Twine(Action.ValueForTypeID));
|
||||
else if (Action.ValueForTypeID < 0)
|
||||
Asm->OutStreamer.AddComment(" Filter TypeInfo " +
|
||||
Twine(Action.ValueForTypeID));
|
||||
Asm->OutStreamer->AddComment(" Filter TypeInfo " +
|
||||
Twine(Action.ValueForTypeID));
|
||||
else
|
||||
Asm->OutStreamer.AddComment(" Cleanup");
|
||||
Asm->OutStreamer->AddComment(" Cleanup");
|
||||
}
|
||||
Asm->EmitSLEB128(Action.ValueForTypeID);
|
||||
|
||||
@@ -634,10 +634,10 @@ void EHStreamer::emitExceptionTable() {
|
||||
// or 0 if there is no next action record.
|
||||
if (VerboseAsm) {
|
||||
if (Action.NextAction == 0) {
|
||||
Asm->OutStreamer.AddComment(" No further actions");
|
||||
Asm->OutStreamer->AddComment(" No further actions");
|
||||
} else {
|
||||
unsigned NextAction = Entry + (Action.NextAction + 1) / 2;
|
||||
Asm->OutStreamer.AddComment(" Continue to action "+Twine(NextAction));
|
||||
Asm->OutStreamer->AddComment(" Continue to action "+Twine(NextAction));
|
||||
}
|
||||
}
|
||||
Asm->EmitSLEB128(Action.NextAction);
|
||||
@@ -652,13 +652,13 @@ void EHStreamer::emitTypeInfos(unsigned TTypeEncoding) {
|
||||
const std::vector<const GlobalValue *> &TypeInfos = MMI->getTypeInfos();
|
||||
const std::vector<unsigned> &FilterIds = MMI->getFilterIds();
|
||||
|
||||
bool VerboseAsm = Asm->OutStreamer.isVerboseAsm();
|
||||
bool VerboseAsm = Asm->OutStreamer->isVerboseAsm();
|
||||
|
||||
int Entry = 0;
|
||||
// Emit the Catch TypeInfos.
|
||||
if (VerboseAsm && !TypeInfos.empty()) {
|
||||
Asm->OutStreamer.AddComment(">> Catch TypeInfos <<");
|
||||
Asm->OutStreamer.AddBlankLine();
|
||||
Asm->OutStreamer->AddComment(">> Catch TypeInfos <<");
|
||||
Asm->OutStreamer->AddBlankLine();
|
||||
Entry = TypeInfos.size();
|
||||
}
|
||||
|
||||
@@ -666,14 +666,14 @@ void EHStreamer::emitTypeInfos(unsigned TTypeEncoding) {
|
||||
I = TypeInfos.rbegin(), E = TypeInfos.rend(); I != E; ++I) {
|
||||
const GlobalValue *GV = *I;
|
||||
if (VerboseAsm)
|
||||
Asm->OutStreamer.AddComment("TypeInfo " + Twine(Entry--));
|
||||
Asm->OutStreamer->AddComment("TypeInfo " + Twine(Entry--));
|
||||
Asm->EmitTTypeReference(GV, TTypeEncoding);
|
||||
}
|
||||
|
||||
// Emit the Exception Specifications.
|
||||
if (VerboseAsm && !FilterIds.empty()) {
|
||||
Asm->OutStreamer.AddComment(">> Filter TypeInfos <<");
|
||||
Asm->OutStreamer.AddBlankLine();
|
||||
Asm->OutStreamer->AddComment(">> Filter TypeInfos <<");
|
||||
Asm->OutStreamer->AddBlankLine();
|
||||
Entry = 0;
|
||||
}
|
||||
for (std::vector<unsigned>::const_iterator
|
||||
@@ -682,7 +682,7 @@ void EHStreamer::emitTypeInfos(unsigned TTypeEncoding) {
|
||||
if (VerboseAsm) {
|
||||
--Entry;
|
||||
if (isFilterEHSelector(TypeID))
|
||||
Asm->OutStreamer.AddComment("FilterInfo " + Twine(Entry));
|
||||
Asm->OutStreamer->AddComment("FilterInfo " + Twine(Entry));
|
||||
}
|
||||
|
||||
Asm->EmitULEB128(TypeID);
|
||||
|
Reference in New Issue
Block a user