Author: ahatanak Date: Tue Jun 9 14:04:36 2015 New Revision: 239426 URL: http://llvm.org/viewvc/llvm-project?rev=239426&view=rev Log: Attach attribute "disable-tail-calls" to the functions in the IR.
This commit adds back the code that seems to have been dropped unintentionally in r176985. rdar://problem/13752163 Differential Revision: http://reviews.llvm.org/D10100 Added: cfe/trunk/test/CodeGen/attr-disable-tail-calls.c Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp cfe/trunk/lib/CodeGen/CGCall.cpp cfe/trunk/test/CodeGen/2004-06-17-UnorderedCompares.c cfe/trunk/test/CodeGen/arm-interrupt-attr.c cfe/trunk/test/CodeGenCXX/ctor-globalopt.cpp Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=239426&r1=239425&r2=239426&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original) +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Tue Jun 9 14:04:36 2015 @@ -283,7 +283,6 @@ void EmitAssemblyHelper::CreatePasses() PMBuilder.SLPVectorize = CodeGenOpts.VectorizeSLP; PMBuilder.LoopVectorize = CodeGenOpts.VectorizeLoop; - PMBuilder.DisableTailCalls = CodeGenOpts.DisableTailCalls; PMBuilder.DisableUnitAtATime = !CodeGenOpts.UnitAtATime; PMBuilder.DisableUnrollLoops = !CodeGenOpts.UnrollLoops; PMBuilder.MergeFunctions = CodeGenOpts.MergeFunctions; @@ -521,7 +520,6 @@ TargetMachine *EmitAssemblyHelper::Creat Options.NoZerosInBSS = CodeGenOpts.NoZeroInitializedInBSS; Options.UnsafeFPMath = CodeGenOpts.UnsafeFPMath; Options.StackAlignmentOverride = CodeGenOpts.StackAlignment; - Options.DisableTailCalls = CodeGenOpts.DisableTailCalls; Options.TrapFuncName = CodeGenOpts.TrapFuncName; Options.PositionIndependentExecutable = LangOpts.PIELevel != 0; Options.FunctionSections = CodeGenOpts.FunctionSections; Modified: cfe/trunk/lib/CodeGen/CGCall.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCall.cpp?rev=239426&r1=239425&r2=239426&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGCall.cpp (original) +++ cfe/trunk/lib/CodeGen/CGCall.cpp Tue Jun 9 14:04:36 2015 @@ -1465,6 +1465,8 @@ void CodeGenModule::ConstructAttributeLi FuncAttrs.addAttribute("no-frame-pointer-elim-non-leaf"); } + FuncAttrs.addAttribute("disable-tail-calls", + llvm::toStringRef(CodeGenOpts.DisableTailCalls)); FuncAttrs.addAttribute("less-precise-fpmad", llvm::toStringRef(CodeGenOpts.LessPreciseFPMAD)); FuncAttrs.addAttribute("no-infs-fp-math", Modified: cfe/trunk/test/CodeGen/2004-06-17-UnorderedCompares.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2004-06-17-UnorderedCompares.c?rev=239426&r1=239425&r2=239426&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2004-06-17-UnorderedCompares.c (original) +++ cfe/trunk/test/CodeGen/2004-06-17-UnorderedCompares.c Tue Jun 9 14:04:36 2015 @@ -1,6 +1,6 @@ // RUN: %clang_cc1 -std=c99 %s -emit-llvm -o - | FileCheck %s // CHECK: @Test -// CHECK-NOT: call +// CHECK-NOT: call{{ }} _Bool A, B, C, D, E, F; void TestF(float X, float Y) { Modified: cfe/trunk/test/CodeGen/arm-interrupt-attr.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm-interrupt-attr.c?rev=239426&r1=239425&r2=239426&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/arm-interrupt-attr.c (original) +++ cfe/trunk/test/CodeGen/arm-interrupt-attr.c Tue Jun 9 14:04:36 2015 @@ -28,11 +28,11 @@ __attribute__((interrupt("UNDEF"))) void // CHECK: define arm_aapcscc void @test_undef_interrupt() [[UNDEF_ATTR:#[0-9]+]] } -// CHECK: attributes [[GENERIC_ATTR]] = { nounwind alignstack=8 {{"interrupt"[^=]}} -// CHECK: attributes [[IRQ_ATTR]] = { nounwind alignstack=8 "interrupt"="IRQ" -// CHECK: attributes [[FIQ_ATTR]] = { nounwind alignstack=8 "interrupt"="FIQ" -// CHECK: attributes [[SWI_ATTR]] = { nounwind alignstack=8 "interrupt"="SWI" -// CHECK: attributes [[ABORT_ATTR]] = { nounwind alignstack=8 "interrupt"="ABORT" -// CHECK: attributes [[UNDEF_ATTR]] = { nounwind alignstack=8 "interrupt"="UNDEF" +// CHECK: attributes [[GENERIC_ATTR]] = { {{.*}} {{"interrupt"[^=]}} +// CHECK: attributes [[IRQ_ATTR]] = { {{.*}} "interrupt"="IRQ" +// CHECK: attributes [[FIQ_ATTR]] = { {{.*}} "interrupt"="FIQ" +// CHECK: attributes [[SWI_ATTR]] = { {{.*}} "interrupt"="SWI" +// CHECK: attributes [[ABORT_ATTR]] = { {{.*}} "interrupt"="ABORT" +// CHECK: attributes [[UNDEF_ATTR]] = { {{.*}} "interrupt"="UNDEF" -// CHECK-APCS: attributes [[GENERIC_ATTR]] = { nounwind "interrupt" +// CHECK-APCS: attributes [[GENERIC_ATTR]] = { {{.*}} "interrupt" Added: cfe/trunk/test/CodeGen/attr-disable-tail-calls.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/attr-disable-tail-calls.c?rev=239426&view=auto ============================================================================== --- cfe/trunk/test/CodeGen/attr-disable-tail-calls.c (added) +++ cfe/trunk/test/CodeGen/attr-disable-tail-calls.c Tue Jun 9 14:04:36 2015 @@ -0,0 +1,11 @@ +// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 %s -emit-llvm -mdisable-tail-calls -o - | FileCheck %s -check-prefix=CHECK -check-prefix=DISABLE +// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 %s -emit-llvm -o - | FileCheck %s -check-prefix=CHECK -check-prefix=ENABLE + +// CHECK: define i32 @f1() [[ATTR:#[0-9]+]] { + +int f1() { + return 0; +} + +// DISABLE: attributes [[ATTR]] = { {{.*}} "disable-tail-calls"="true" {{.*}} } +// ENABLE: attributes [[ATTR]] = { {{.*}} "disable-tail-calls"="false" {{.*}} } Modified: cfe/trunk/test/CodeGenCXX/ctor-globalopt.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/ctor-globalopt.cpp?rev=239426&r1=239425&r2=239426&view=diff ============================================================================== --- cfe/trunk/test/CodeGenCXX/ctor-globalopt.cpp (original) +++ cfe/trunk/test/CodeGenCXX/ctor-globalopt.cpp Tue Jun 9 14:04:36 2015 @@ -13,7 +13,7 @@ // CHECK-LABEL: define internal void @_GLOBAL__sub_I_ctor_globalopt.cpp() // CHECK: call void @ -// CHECK-NOT: call +// CHECK-NOT: call{{ }} // O1: @llvm.global_ctors = appending global [0 x { i32, void ()*, i8* }] zeroinitializer _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
