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" {


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to