aboutsummaryrefslogtreecommitdiffstats
path: root/lib/VMCore/Instructions.cpp
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2007-12-03 20:06:50 +0000
committerDuncan Sands <baldrick@free.fr>2007-12-03 20:06:50 +0000
commit79d2887c7bd6fa2d4cd915d3f2b0e45e3dba83b2 (patch)
tree926575d8f1c3a0104fa7ea7236dd1842120e29cd /lib/VMCore/Instructions.cpp
parent36826bb460f085c67cff21f1b2f580e3dd5c7567 (diff)
downloadexternal_llvm-79d2887c7bd6fa2d4cd915d3f2b0e45e3dba83b2.zip
external_llvm-79d2887c7bd6fa2d4cd915d3f2b0e45e3dba83b2.tar.gz
external_llvm-79d2887c7bd6fa2d4cd915d3f2b0e45e3dba83b2.tar.bz2
Rather than having special rules like "intrinsics cannot
throw exceptions", just mark intrinsics with the nounwind attribute. Likewise, mark intrinsics as readnone/readonly and get rid of special aliasing logic (which didn't use anything more than this anyway). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44544 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/Instructions.cpp')
-rw-r--r--lib/VMCore/Instructions.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp
index 7ad588c..0df0466 100644
--- a/lib/VMCore/Instructions.cpp
+++ b/lib/VMCore/Instructions.cpp
@@ -53,7 +53,18 @@ bool CallSite::paramHasAttr(uint16_t i, ParameterAttributes attr) const {
else
return cast<InvokeInst>(I)->paramHasAttr(i, attr);
}
-
+bool CallSite::doesNotAccessMemory() const {
+ if (CallInst *CI = dyn_cast<CallInst>(I))
+ return CI->doesNotAccessMemory();
+ else
+ return cast<InvokeInst>(I)->doesNotAccessMemory();
+}
+bool CallSite::onlyReadsMemory() const {
+ if (CallInst *CI = dyn_cast<CallInst>(I))
+ return CI->onlyReadsMemory();
+ else
+ return cast<InvokeInst>(I)->onlyReadsMemory();
+}