[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