r239426 - Attach attribute "disable-tail-calls" to the functions in the IR.
Akira Hatanaka
ahatanaka at apple.com
Tue Jun 9 12:04:37 PDT 2015
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
More information about the cfe-commits
mailing list