mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-17 06:33:21 +00:00
Removing the HasBuiltinSetjmp flag and associated bits. Flagging the presence
of exception handling builtin sjlj targets in functions turns out not to be necessary. Marking the intrinsic implementation in the .td file as defining all registers is sufficient to get the context saved properly by the containing function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71743 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8308e8fae0
commit
2afb3b7251
@ -70,10 +70,6 @@ class MachineFunction : private Annotation {
|
||||
const Function *Fn;
|
||||
const TargetMachine &Target;
|
||||
|
||||
// HasBuiltinSetjmp - true if the function uses builtin_setjmp. Used to
|
||||
// adjust callee-saved register tracking.
|
||||
bool HasBuiltinSetjmp;
|
||||
|
||||
// RegInfo - Information about each register in use in the function.
|
||||
MachineRegisterInfo *RegInfo;
|
||||
|
||||
@ -127,14 +123,6 @@ public:
|
||||
///
|
||||
const TargetMachine &getTarget() const { return Target; }
|
||||
|
||||
/// doesHaveBuiltinSetjmp - Return whether this function uses builtin_setjmp
|
||||
///
|
||||
bool doesHaveBuiltinSetjmp() const { return HasBuiltinSetjmp; }
|
||||
|
||||
/// setHasBuiltinSetjmp - Mark whether this function uses builtin_setjmp
|
||||
///
|
||||
void setHasBuiltinSetjmp (bool flag) { HasBuiltinSetjmp = flag; }
|
||||
|
||||
/// getRegInfo - Return information about the registers currently in use.
|
||||
///
|
||||
MachineRegisterInfo &getRegInfo() { return *RegInfo; }
|
||||
|
@ -121,7 +121,6 @@ MachineFunction::MachineFunction(const Function *F,
|
||||
MachineRegisterInfo(*TM.getRegisterInfo());
|
||||
else
|
||||
RegInfo = 0;
|
||||
HasBuiltinSetjmp = false;
|
||||
MFInfo = 0;
|
||||
FrameInfo = new (Allocator.Allocate<MachineFrameInfo>())
|
||||
MachineFrameInfo(*TM.getFrameInfo());
|
||||
|
@ -180,7 +180,7 @@ void PEI::calculateCalleeSavedRegisters(MachineFunction &Fn) {
|
||||
std::vector<CalleeSavedInfo> CSI;
|
||||
for (unsigned i = 0; CSRegs[i]; ++i) {
|
||||
unsigned Reg = CSRegs[i];
|
||||
if (Fn.getRegInfo().isPhysRegUsed(Reg) || Fn.doesHaveBuiltinSetjmp()) {
|
||||
if (Fn.getRegInfo().isPhysRegUsed(Reg)) {
|
||||
// If the reg is modified, save it!
|
||||
CSI.push_back(CalleeSavedInfo(Reg, CSRegClasses[i]));
|
||||
} else {
|
||||
|
@ -3849,12 +3849,6 @@ SelectionDAGLowering::visitIntrinsicCall(CallInst &I, unsigned Intrinsic) {
|
||||
case Intrinsic::longjmp:
|
||||
return "_longjmp"+!TLI.usesUnderscoreLongJmp();
|
||||
break;
|
||||
case Intrinsic::builtinsetjmp:
|
||||
// Mark this function has using builtin_setjmp so context gets preserved
|
||||
DAG.getMachineFunction().setHasBuiltinSetjmp(true);
|
||||
// Turn it into a target intrinsic node for the codegen
|
||||
visitTargetIntrinsic(I, Intrinsic);
|
||||
return 0;
|
||||
case Intrinsic::memcpy: {
|
||||
SDValue Op1 = getValue(I.getOperand(1));
|
||||
SDValue Op2 = getValue(I.getOperand(2));
|
||||
|
Loading…
x
Reference in New Issue
Block a user