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.

llvm-svn: 71743
This commit is contained in:
Jim Grosbach 2009-05-13 23:50:53 +00:00
parent 43f21dde1e
commit 4f915313ed
4 changed files with 1 additions and 20 deletions

View File

@ -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; }

View File

@ -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());

View File

@ -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 {

View File

@ -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));