Add a new flag for targets where setjmp/longjmp saves/restores the signal mask,

and _setjmp/_longjmp should be used instead (for llvm.setjmp/llvm.longjmp).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23479 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2005-09-27 22:13:36 +00:00
parent 4531371960
commit 5e93fbe68c

View File

@@ -219,6 +219,12 @@ public:
bool allowsUnalignedMemoryAccesses() const
{ return allowUnalignedMemoryAccesses; }
/// usesUnderscoreSetJmpLongJmp - Determine if we should use _setjmp or setjmp
/// to implement llvm.setjmp.
bool usesUnderscoreSetJmpLongJmp() const {
return UseUnderscoreSetJmpLongJmp;
}
//===--------------------------------------------------------------------===//
// TargetLowering Configuration Methods - These methods should be invoked by
// the derived class constructor to configure this object for the target.
@@ -244,6 +250,13 @@ protected:
ShiftAmtHandling = OORSA;
}
/// setUseUnderscoreSetJmpLongJmp - Indicate whether this target prefers to
/// use _setjmp and _longjmp to or implement llvm.setjmp/llvm.longjmp or
/// the non _ versions. Defaults to false.
void setUseUnderscoreSetJmpLongJmp(bool Val) {
UseUnderscoreSetJmpLongJmp = Val;
}
/// setSetCCIxExpensive - This is a short term hack for targets that codegen
/// setcc as a conditional branch. This encourages the code generator to fold
/// setcc operations into other operations if possible.
@@ -380,6 +393,10 @@ private:
/// the result of a setcc comparison operation.
SetCCResultValue SetCCResultContents;
/// UseUnderscoreSetJmpLongJmp - This target prefers to use _setjmp and
/// _longjmp to implement llvm.setjmp/llvm.longjmp. Defaults to false.
bool UseUnderscoreSetJmpLongJmp;
/// RegClassForVT - This indicates the default register class to use for
/// each ValueType the target supports natively.
TargetRegisterClass *RegClassForVT[MVT::LAST_VALUETYPE];