[cfe-commits] r107639 - in /cfe/trunk: lib/CodeGen/CGDeclCXX.cpp test/CodeGenCXX/global-init.cpp

John McCall rjmccall at apple.com
Mon Jul 5 21:38:10 PDT 2010


Author: rjmccall
Date: Mon Jul  5 23:38:10 2010
New Revision: 107639

URL: http://llvm.org/viewvc/llvm-project?rev=107639&view=rev
Log:
When creating functions to run global initializers and destructors, mark them
as nounwind in -fno-exceptions.  Fixes rdar://problem/8090834.


Modified:
    cfe/trunk/lib/CodeGen/CGDeclCXX.cpp
    cfe/trunk/test/CodeGenCXX/global-init.cpp

Modified: cfe/trunk/lib/CodeGen/CGDeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDeclCXX.cpp?rev=107639&r1=107638&r2=107639&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGDeclCXX.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDeclCXX.cpp Mon Jul  5 23:38:10 2010
@@ -152,6 +152,9 @@
         CGM.getContext().Target.getStaticInitSectionSpecifier())
     Fn->setSection(Section);
 
+  if (!CGM.getLangOptions().Exceptions)
+    Fn->setDoesNotThrow();
+
   return Fn;
 }
 

Modified: cfe/trunk/test/CodeGenCXX/global-init.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/global-init.cpp?rev=107639&r1=107638&r2=107639&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/global-init.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/global-init.cpp Mon Jul  5 23:38:10 2010
@@ -1,4 +1,5 @@
-// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm %s -o - |FileCheck %s
+// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm -fexceptions %s -o - |FileCheck %s
+// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm %s -o - |FileCheck -check-prefix NOEXC %s
 
 struct A {
   A();
@@ -30,3 +31,5 @@
 
 // CHECK: define internal void @_GLOBAL__I_a() section "__TEXT,__StaticInit,regular,pure_instructions" {
 
+// rdar://problem/8090834: this should be nounwind
+// CHECK-NOEXC: define internal void @_GLOBAL__I_a() nounwind section "__TEXT,__StaticInit,regular,pure_instructions" {





More information about the cfe-commits mailing list