Yeah, I'd thought about throwing it into StartFunction or some such, just hadn't had time yet.
-eric On Wed, Apr 22, 2015 at 2:42 PM Reid Kleckner <[email protected]> wrote: > Let's make sure they all do the same thing. Thunks should already be > handled. Most things use CGFunctionInfos, so it usually works out. > > > On Wed, Apr 22, 2015 at 1:11 PM, Eric Christopher <[email protected]> > wrote: > >> 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 >> >> >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
