From 336fd90f4d11d6e3f79b36be0652308dfba530d2 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Sun, 20 Mar 2011 20:21:33 +0000 Subject: Don't try to eliminate invokes to __cxa_atexit. llvm-svn: 127976 --- llvm/lib/Transforms/IPO/GlobalOpt.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'llvm/lib/Transforms/IPO/GlobalOpt.cpp') 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(CS.getArgument(0)->stripPointerCasts()); if (!DtorFn) -- cgit v1.2.3