mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-15 07:59:57 +00:00
Remove a bit more cruft from the sjlj moving to a backend pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79272 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ae68a19ef9
commit
2962664227
@ -38,7 +38,6 @@
|
||||
<li><a href="#llvm_eh_sjlj_setjmp"><tt>llvm.eh.sjlj.setjmp</tt></a></li>
|
||||
<li><a href="#llvm_eh_sjlj_longjmp"><tt>llvm.eh.sjlj.longjmp</tt></a></li>
|
||||
<li><a href="#llvm_eh_sjlj_lsda"><tt>llvm.eh.sjlj.lsda</tt></a></li>
|
||||
<li><a href="#llvm_eh_sjlj_callsite"><tt>llvm.eh.sjlj.callsite</tt></a></li>
|
||||
</ol></li>
|
||||
<li><a href="#asm">Asm Table Formats</a>
|
||||
<ol>
|
||||
@ -471,24 +470,6 @@
|
||||
|
||||
</div>
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_subsubsection">
|
||||
<a name="llvm_eh_sjlj_callsite">llvm.eh.sjlj.callsite</a>
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<pre>
|
||||
void %<a href="#llvm_eh_sjlj_callsite">llvm.eh.sjlj.callsite</a>(i32)
|
||||
</pre>
|
||||
|
||||
<p>The SJLJ front-end allocates call site indices for invoke instrucitons.
|
||||
These values are passed to the back-end via the
|
||||
<a href="#llvm_eh_sjlj_callsite"><tt>llvm.eh.sjlj.callsite</tt></a>
|
||||
intrinsic, where they are used to build the LSDA call-site table.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_section">
|
||||
<a name="asm">Asm Table Formats</a>
|
||||
|
@ -115,15 +115,6 @@ class MachineFunction {
|
||||
// The alignment of the function.
|
||||
unsigned Alignment;
|
||||
|
||||
// The currently active call_site value
|
||||
unsigned CallSiteIndex;
|
||||
|
||||
// The largest call_site value encountered
|
||||
unsigned MaxCallSiteIndex;
|
||||
|
||||
// Call sites mapped to corresponding landing pads
|
||||
std::map<MachineBasicBlock*, unsigned> LandingPadCallSiteIndexMap;
|
||||
|
||||
public:
|
||||
MachineFunction(Function *Fn, const TargetMachine &TM);
|
||||
~MachineFunction();
|
||||
@ -169,41 +160,6 @@ public:
|
||||
///
|
||||
void setAlignment(unsigned A) { Alignment = A; }
|
||||
|
||||
/// getCallSiteIndex() - Get the current call site index
|
||||
///
|
||||
unsigned getCallSiteIndex() { return CallSiteIndex; }
|
||||
|
||||
/// setCallSiteIndex() - Set the current call site index
|
||||
///
|
||||
void setCallSiteIndex(unsigned Idx) {
|
||||
CallSiteIndex = Idx;
|
||||
if (CallSiteIndex > MaxCallSiteIndex)
|
||||
MaxCallSiteIndex = CallSiteIndex;
|
||||
}
|
||||
|
||||
/// getMaxCallSiteIndex() - Get the largest call site index issued
|
||||
///
|
||||
unsigned getMaxCallSiteIndex() { return MaxCallSiteIndex; }
|
||||
|
||||
/// setCallSiteIndexLandingPad() - Map the call site to a landing pad
|
||||
///
|
||||
void setLandingPadCallSiteIndex(MachineBasicBlock *LandingPad,
|
||||
unsigned CallSite) {
|
||||
LandingPadCallSiteIndexMap[LandingPad] = CallSite;
|
||||
}
|
||||
|
||||
/// getCallSiteIndexLandingPad() - Get landing pad for the call site index
|
||||
///
|
||||
unsigned getLandingPadCallSiteIndex(MachineBasicBlock *LandingPad) {
|
||||
return LandingPadCallSiteIndexMap[LandingPad];
|
||||
}
|
||||
|
||||
/// getCallSiteCount() - Get the count of call site entries
|
||||
///
|
||||
unsigned getCallSiteCount() {
|
||||
return LandingPadCallSiteIndexMap.size();
|
||||
}
|
||||
|
||||
/// MachineFunctionInfo - Keep track of various per-function pieces of
|
||||
/// information for backends that would like to do so.
|
||||
///
|
||||
|
@ -310,9 +310,6 @@ let Properties = [IntrNoMem] in {
|
||||
def int_eh_sjlj_longjmp : Intrinsic<[llvm_void_ty], [llvm_ptr_ty]>;
|
||||
def int_eh_sjlj_lsda : Intrinsic<[llvm_ptr_ty]>;
|
||||
}
|
||||
let Properties = [IntrWriteMem] in {
|
||||
def int_eh_sjlj_callsite: Intrinsic<[llvm_void_ty], [llvm_i32_ty]>;
|
||||
}
|
||||
|
||||
//===---------------- Generic Variable Attribute Intrinsics----------------===//
|
||||
//
|
||||
|
@ -640,9 +640,6 @@ void DwarfException::EmitExceptionTable() {
|
||||
Asm->EmitULEB128Bytes(SizeSites);
|
||||
Asm->EOL("Call-site table length");
|
||||
|
||||
|
||||
assert(MF->getCallSiteCount() == CallSites.size());
|
||||
|
||||
// Emit the landing pad site information.
|
||||
unsigned idx = 0;
|
||||
for (SmallVectorImpl<CallSiteEntry>::const_iterator
|
||||
|
@ -93,9 +93,6 @@ MachineFunction::MachineFunction(Function *F,
|
||||
MachineConstantPool(TM.getTargetData());
|
||||
Alignment = TM.getTargetLowering()->getFunctionAlignment(F);
|
||||
|
||||
CallSiteIndex = 0;
|
||||
MaxCallSiteIndex = 0;
|
||||
|
||||
// Set up jump table.
|
||||
const TargetData &TD = *TM.getTargetData();
|
||||
bool IsPic = TM.getRelocationModel() == Reloc::PIC_;
|
||||
|
@ -4084,11 +4084,6 @@ SelectionDAGLowering::visitIntrinsicCall(CallInst &I, unsigned Intrinsic) {
|
||||
Offset));
|
||||
return 0;
|
||||
}
|
||||
case Intrinsic::eh_sjlj_callsite: {
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
MF.setCallSiteIndex(cast<ConstantSDNode>(getValue(I.getOperand(1)))->getZExtValue());
|
||||
return 0;
|
||||
}
|
||||
case Intrinsic::convertff:
|
||||
case Intrinsic::convertfsi:
|
||||
case Intrinsic::convertfui:
|
||||
@ -4452,14 +4447,10 @@ void SelectionDAGLowering::LowerCallTo(CallSite CS, SDValue Callee,
|
||||
}
|
||||
|
||||
if (LandingPad && MMI) {
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
// Insert a label before the invoke call to mark the try range. This can be
|
||||
// used to detect deletion of the invoke via the MachineModuleInfo.
|
||||
BeginLabel = MMI->NextLabelID();
|
||||
|
||||
// Map this landing pad to the current call site entry
|
||||
MF.setLandingPadCallSiteIndex(LandingPad, MF.getCallSiteIndex());
|
||||
|
||||
// Both PendingLoads and PendingExports must be flushed here;
|
||||
// this call might not return.
|
||||
(void)getRoot();
|
||||
|
Loading…
Reference in New Issue
Block a user