mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
Comment and whitespace cleanups. No intentional functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81436 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a2f6449a57
commit
28275fdf02
@ -7,7 +7,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file contains support for writing dwarf exception info into asm files.
|
||||
// This file contains support for writing DWARF exception info into asm files.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
using namespace llvm;
|
||||
|
||||
static TimerGroup &getDwarfTimerGroup() {
|
||||
static TimerGroup DwarfTimerGroup("Dwarf Exception");
|
||||
static TimerGroup DwarfTimerGroup("DWARF Exception");
|
||||
return DwarfTimerGroup;
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ DwarfException::DwarfException(raw_ostream &OS, AsmPrinter *A,
|
||||
shouldEmitTableModule(false), shouldEmitMovesModule(false),
|
||||
ExceptionTimer(0) {
|
||||
if (TimePassesIsEnabled)
|
||||
ExceptionTimer = new Timer("Dwarf Exception Writer",
|
||||
ExceptionTimer = new Timer("DWARF Exception Writer",
|
||||
getDwarfTimerGroup());
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@ unsigned DwarfException::SizeOfEncodedValue(unsigned Encoding) {
|
||||
return 8;
|
||||
}
|
||||
|
||||
llvm_unreachable("Invalid encoded value.");
|
||||
assert(0 && "Invalid encoded value.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -548,10 +548,10 @@ ComputeCallSiteTable(SmallVectorImpl<CallSiteEntry> &CallSites,
|
||||
/// site, each type ID is checked for a match to the current exception. If
|
||||
/// it matches then the exception and type id are passed on to the landing
|
||||
/// pad. Otherwise the next action is looked up. This chain is terminated
|
||||
/// with a next action of zero. If no type id is found the the frame is
|
||||
/// with a next action of zero. If no type id is found then the frame is
|
||||
/// unwound and handling continues.
|
||||
/// 3. Type ID table contains references to all the C++ typeinfo for all
|
||||
/// catches in the function. This tables is reversed indexed base 1.
|
||||
/// catches in the function. This tables is reverse indexed base 1.
|
||||
void DwarfException::EmitExceptionTable() {
|
||||
const std::vector<GlobalVariable *> &TypeInfos = MMI->getTypeInfos();
|
||||
const std::vector<unsigned> &FilterIds = MMI->getFilterIds();
|
||||
@ -572,11 +572,12 @@ void DwarfException::EmitExceptionTable() {
|
||||
// landing pad site.
|
||||
SmallVector<ActionEntry, 32> Actions;
|
||||
SmallVector<unsigned, 64> FirstActions;
|
||||
unsigned SizeActions = ComputeActionsTable(LandingPads, Actions, FirstActions);
|
||||
unsigned SizeActions = ComputeActionsTable(LandingPads, Actions,
|
||||
FirstActions);
|
||||
|
||||
// Invokes and nounwind calls have entries in PadMap (due to being bracketed
|
||||
// by try-range labels when lowered). Ordinary calls do not, so appropriate
|
||||
// try-ranges for them need be deduced when using Dwarf exception handling.
|
||||
// try-ranges for them need be deduced when using DWARF exception handling.
|
||||
RangeMapType PadMap;
|
||||
for (unsigned i = 0, N = LandingPads.size(); i != N; ++i) {
|
||||
const LandingPadInfo *LandingPad = LandingPads[i];
|
||||
@ -598,11 +599,9 @@ void DwarfException::EmitExceptionTable() {
|
||||
const unsigned SiteStartSize = SizeOfEncodedValue(dwarf::DW_EH_PE_udata4);
|
||||
const unsigned SiteLengthSize = SizeOfEncodedValue(dwarf::DW_EH_PE_udata4);
|
||||
const unsigned LandingPadSize = SizeOfEncodedValue(dwarf::DW_EH_PE_udata4);
|
||||
unsigned SizeSites;
|
||||
|
||||
bool IsSJLJ = MAI->getExceptionHandlingType() == ExceptionHandling::SjLj;
|
||||
|
||||
bool HaveTTData = IsSJLJ ? (!TypeInfos.empty() || !FilterIds.empty()) : true;
|
||||
unsigned SizeSites;
|
||||
|
||||
if (IsSJLJ)
|
||||
SizeSites = 0;
|
||||
@ -622,6 +621,8 @@ void DwarfException::EmitExceptionTable() {
|
||||
unsigned TypeFormatSize;
|
||||
|
||||
if (!HaveTTData) {
|
||||
// For SjLj exceptions, if there is no TypeInfo, then we just explicitly say
|
||||
// that we're omitting that bit.
|
||||
TTypeFormat = dwarf::DW_EH_PE_omit;
|
||||
TypeFormatSize = SizeOfEncodedValue(dwarf::DW_EH_PE_absptr);
|
||||
} else {
|
||||
@ -631,12 +632,15 @@ void DwarfException::EmitExceptionTable() {
|
||||
// mode, this reference will require a relocation by the dynamic linker.
|
||||
//
|
||||
// Because of this, we have a couple of options:
|
||||
//
|
||||
// 1) If we are in -static mode, we can always use an absolute reference
|
||||
// from the LSDA, because the static linker will resolve it.
|
||||
//
|
||||
// 2) Otherwise, if the LSDA section is writable, we can output the direct
|
||||
// reference to the typeinfo and allow the dynamic linker to relocate
|
||||
// it. Since it is in a writable section, the dynamic linker won't
|
||||
// have a problem.
|
||||
//
|
||||
// 3) Finally, if we're in PIC mode and the LDSA section isn't writable,
|
||||
// we need to use some form of indirection. For example, on Darwin,
|
||||
// we can output a statically-relocatable reference to a dyld stub. The
|
||||
@ -709,8 +713,6 @@ void DwarfException::EmitExceptionTable() {
|
||||
Asm->EmitInt8(dwarf::DW_EH_PE_omit);
|
||||
Asm->EOL("@LPStart format", dwarf::DW_EH_PE_omit);
|
||||
|
||||
// For SjLj exceptions, if there is no TypeInfo, then we just explicitly
|
||||
// say that we're omitting that bit.
|
||||
Asm->EmitInt8(TTypeFormat);
|
||||
Asm->EOL("@TType format", TTypeFormat);
|
||||
|
||||
@ -719,7 +721,7 @@ void DwarfException::EmitExceptionTable() {
|
||||
Asm->EOL("@TType base offset");
|
||||
}
|
||||
|
||||
// SjLj Exception handilng
|
||||
// SjLj Exception handling
|
||||
if (IsSJLJ) {
|
||||
Asm->EmitInt8(dwarf::DW_EH_PE_udata4);
|
||||
Asm->EOL("Call site format", dwarf::DW_EH_PE_udata4);
|
||||
@ -763,15 +765,7 @@ void DwarfException::EmitExceptionTable() {
|
||||
// * The first action record for that call site.
|
||||
//
|
||||
// A missing entry in the call-site table indicates that a call is not
|
||||
// supposed to throw. Such calls include:
|
||||
//
|
||||
// * Calls to destructors within cleanup code. C++ semantics forbids these
|
||||
// calls to throw.
|
||||
// * Calls to intrinsic routines in the standard library which are known
|
||||
// not to throw (sin, memcpy, et al).
|
||||
//
|
||||
// If the runtime does not find the call-site entry for a given call, it
|
||||
// will call `terminate()'.
|
||||
// supposed to throw.
|
||||
|
||||
// Emit the landing pad call site table.
|
||||
Asm->EmitInt8(dwarf::DW_EH_PE_udata4);
|
||||
@ -910,8 +904,8 @@ void DwarfException::EndModule() {
|
||||
|
||||
const std::vector<Function *> Personalities = MMI->getPersonalities();
|
||||
|
||||
for (unsigned i = 0, e = Personalities.size(); i < e; ++i)
|
||||
EmitCIE(Personalities[i], i);
|
||||
for (unsigned I = 0, E = Personalities.size(); I < E; ++I)
|
||||
EmitCIE(Personalities[I], I);
|
||||
|
||||
for (std::vector<FunctionEHFrameInfo>::iterator
|
||||
I = EHFrames.begin(), E = EHFrames.end(); I != E; ++I)
|
||||
@ -921,8 +915,8 @@ void DwarfException::EndModule() {
|
||||
ExceptionTimer->stopTimer();
|
||||
}
|
||||
|
||||
/// BeginFunction - Gather pre-function exception information. Assumes being
|
||||
/// emitted immediately after the function entry point.
|
||||
/// BeginFunction - Gather pre-function exception information. Assumes it's
|
||||
/// being emitted immediately after the function entry point.
|
||||
void DwarfException::BeginFunction(MachineFunction *MF) {
|
||||
if (TimePassesIsEnabled)
|
||||
ExceptionTimer->startTimer();
|
||||
|
Loading…
Reference in New Issue
Block a user