mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 08:17:40 +00:00
Change how tblgen generates attributes for intrinsics to use a single
switch. With this newfound organization, teach tblgen how not to give all intrinsics the 'nounwind' attribute. Introduce a new intrinsic, llvm.eh.resume, which does not have this attribute. Documentation and uses to follow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132252 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -460,6 +460,7 @@ CodeGenIntrinsic::CodeGenIntrinsic(Record *R) {
|
||||
ModRef = ReadWriteMem;
|
||||
isOverloaded = false;
|
||||
isCommutative = false;
|
||||
canThrow = false;
|
||||
|
||||
if (DefName.size() <= 4 ||
|
||||
std::string(DefName.begin(), DefName.begin() + 4) != "int_")
|
||||
@@ -582,10 +583,15 @@ CodeGenIntrinsic::CodeGenIntrinsic(Record *R) {
|
||||
ModRef = ReadWriteArgMem;
|
||||
else if (Property->getName() == "Commutative")
|
||||
isCommutative = true;
|
||||
else if (Property->getName() == "Throws")
|
||||
canThrow = true;
|
||||
else if (Property->isSubClassOf("NoCapture")) {
|
||||
unsigned ArgNo = Property->getValueAsInt("ArgNo");
|
||||
ArgumentAttributes.push_back(std::make_pair(ArgNo, NoCapture));
|
||||
} else
|
||||
assert(0 && "Unknown property!");
|
||||
}
|
||||
|
||||
// Sort the argument attributes for later benefit.
|
||||
std::sort(ArgumentAttributes.begin(), ArgumentAttributes.end());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user