diff options
author | Anders Carlsson <andersca@mac.com> | 2011-03-20 20:21:33 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2011-03-20 20:21:33 +0000 |
commit | 336fd90f4d11d6e3f79b36be0652308dfba530d2 (patch) | |
tree | eb500cfca3d160358822870fac7bc69db7d28a90 /llvm/lib/Transforms/IPO/GlobalOpt.cpp | |
parent | fcec2f519a1582b5177e36b7faf8ca76a06d14b4 (diff) | |
download | bcm5719-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.cpp | 6 |
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) |