Oddly I was just looking at this yesterday. As a question, what about the rest of things like thunks etc?
-eric On Wed, Apr 22, 2015 at 12:43 PM Reid Kleckner <[email protected]> wrote: > Author: rnk > Date: Wed Apr 22 14:37:32 2015 > New Revision: 235537 > > URL: http://llvm.org/viewvc/llvm-project?rev=235537&view=rev > Log: > Set normal LLVM function attributes on global initializer functions > > Otherwise -fno-omit-frame-pointer and other flags like it aren't > applied. > > Basic idea taken from Gao's patch, thanks! > > Differential Revision: http://reviews.llvm.org/D9203 > > Modified: > cfe/trunk/lib/CodeGen/CGDeclCXX.cpp > cfe/trunk/test/CodeGenCXX/global-dtor-no-atexit.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=235537&r1=235536&r2=235537&view=diff > > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGDeclCXX.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGDeclCXX.cpp Wed Apr 22 14:37:32 2015 > @@ -259,6 +259,8 @@ llvm::Function *CodeGenModule::CreateGlo > Fn->setSection(Section); > } > > + SetLLVMFunctionAttributes(nullptr, getTypes().arrangeNullaryFunction(), > Fn); > + > Fn->setCallingConv(getRuntimeCC()); > > if (!getLangOpts().Exceptions) > > Modified: cfe/trunk/test/CodeGenCXX/global-dtor-no-atexit.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/global-dtor-no-atexit.cpp?rev=235537&r1=235536&r2=235537&view=diff > > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/global-dtor-no-atexit.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/global-dtor-no-atexit.cpp Wed Apr 22 > 14:37:32 2015 > @@ -43,4 +43,4 @@ void func() { > static A a1, a2; > } > > -// CHECK: attributes [[NUW]] = { nounwind } > +// CHECK: attributes [[NUW]] = { nounwind{{.*}} } > > Modified: cfe/trunk/test/CodeGenCXX/global-init.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/global-init.cpp?rev=235537&r1=235536&r2=235537&view=diff > > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/global-init.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/global-init.cpp Wed Apr 22 14:37:32 2015 > @@ -1,5 +1,8 @@ > // 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 CHECK-NOEXC %s > +// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm \ > +// RUN: -momit-leaf-frame-pointer -mdisable-fp-elim %s -o - \ > +// RUN: | FileCheck -check-prefix CHECK-FP %s > > struct A { > A(); > @@ -195,11 +198,15 @@ namespace test7 { > // CHECK-NEXT: sub > // CHECK-NEXT: store i32 {{.*}}, i32* @_ZN5test1L1yE > > -// CHECK: define internal void @_GLOBAL__sub_I_global_init.cpp() section > "__TEXT,__StaticInit,regular,pure_instructions" { > +// CHECK: define internal void @_GLOBAL__sub_I_global_init.cpp() > #{{[0-9]+}} section "__TEXT,__StaticInit,regular,pure_instructions" { > // CHECK: call void [[TEST1_Y_INIT]] > // CHECK: call void [[TEST1_Z_INIT]] > > // rdar://problem/8090834: this should be nounwind > // CHECK-NOEXC: define internal void @_GLOBAL__sub_I_global_init.cpp() > [[NUW:#[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" { > > -// CHECK-NOEXC: attributes [[NUW]] = { nounwind } > +// CHECK-NOEXC: attributes [[NUW]] = { nounwind{{.*}} } > + > +// PR21811: attach the appropriate attribute to the global init function > +// CHECK-FP: define internal void @_GLOBAL__sub_I_global_init.cpp() > [[NUX:#[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" { > +// CHECK-FP: attributes [[NUX]] = { nounwind > {{.*}}"no-frame-pointer-elim-non-leaf"{{.*}} } > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
