summaryrefslogtreecommitdiff
path: root/utils/TableGen/CodeGenTarget.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2011-05-28 06:31:34 +0000
committerJohn McCall <rjmccall@apple.com>2011-05-28 06:31:34 +0000
commitbd0fa4c00d7870b1da36eac7b2181700381f2f96 (patch)
tree94141a5566eb6e3161e358be265493afbbd77081 /utils/TableGen/CodeGenTarget.cpp
parentf46337004ab08076774932785679460ec3d3bb9a (diff)
downloadllvm-bd0fa4c00d7870b1da36eac7b2181700381f2f96.tar.gz
llvm-bd0fa4c00d7870b1da36eac7b2181700381f2f96.tar.bz2
llvm-bd0fa4c00d7870b1da36eac7b2181700381f2f96.tar.xz
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
Diffstat (limited to 'utils/TableGen/CodeGenTarget.cpp')
-rw-r--r--utils/TableGen/CodeGenTarget.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp
index 0328c9ac91..b1c594449b 100644
--- a/utils/TableGen/CodeGenTarget.cpp
+++ b/utils/TableGen/CodeGenTarget.cpp
@@ -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());
}