summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/IPO/GlobalOpt.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2011-03-20 20:21:33 +0000
committerAnders Carlsson <andersca@mac.com>2011-03-20 20:21:33 +0000
commit336fd90f4d11d6e3f79b36be0652308dfba530d2 (patch)
treeeb500cfca3d160358822870fac7bc69db7d28a90 /llvm/lib/Transforms/IPO/GlobalOpt.cpp
parentfcec2f519a1582b5177e36b7faf8ca76a06d14b4 (diff)
downloadbcm5719-llvm-336fd90f4d11d6e3f79b36be0652308dfba530d2.tar.gz
bcm5719-llvm-336fd90f4d11d6e3f79b36be0652308dfba530d2.zip
Don't try to eliminate invokes to __cxa_atexit.
llvm-svn: 127976
Diffstat (limited to 'llvm/lib/Transforms/IPO/GlobalOpt.cpp')
-rw-r--r--llvm/lib/Transforms/IPO/GlobalOpt.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/GlobalOpt.cpp b/llvm/lib/Transforms/IPO/GlobalOpt.cpp
index 1a8b944363f..2b9b7f24302 100644
--- a/llvm/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/llvm/lib/Transforms/IPO/GlobalOpt.cpp
@@ -2780,6 +2780,12 @@ bool GlobalOpt::OptimizeEmptyGlobalCXXDtors(Function *CXAAtExitFn) {
if (!CS)
continue;
+ // We're only interested in calls. Theoretically, we could handle invoke
+ // instructions as well, but neither llvm-gcc nor clang generate invokes
+ // to __cxa_atexit.
+ if (!CS.isCall())
+ continue;
+
Function *DtorFn =
dyn_cast<Function>(CS.getArgument(0)->stripPointerCasts());
if (!DtorFn)
OpenPOWER on IntegriCloud