summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-04-10 22:59:13 +0000
committerReid Kleckner <reid@kleckner.net>2014-04-10 22:59:13 +0000
commitfb873af67ed23e6aa445b44d253fb156d07bdebc (patch)
tree85400130e6548f6f837e48e9695306aaab132ea9
parent9c6582129a34d68c6093817608eaf3a24daf10fa (diff)
downloadbcm5719-llvm-fb873af67ed23e6aa445b44d253fb156d07bdebc.tar.gz
bcm5719-llvm-fb873af67ed23e6aa445b44d253fb156d07bdebc.zip
Update Clang for LLVM split stack API changes in r205997
Patch by Alex Crichton! llvm-svn: 205998
-rw-r--r--clang/lib/CodeGen/BackendUtil.cpp1
-rw-r--r--clang/lib/CodeGen/CGCall.cpp2
-rw-r--r--clang/test/CodeGen/split-stacks.c18
3 files changed, 20 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp
index 17f5f4d6336..f0b3cdc50a4 100644
--- a/clang/lib/CodeGen/BackendUtil.cpp
+++ b/clang/lib/CodeGen/BackendUtil.cpp
@@ -491,7 +491,6 @@ TargetMachine *EmitAssemblyHelper::CreateTargetMachine(bool MustCreateTM) {
Options.DisableTailCalls = CodeGenOpts.DisableTailCalls;
Options.TrapFuncName = CodeGenOpts.TrapFuncName;
Options.PositionIndependentExecutable = LangOpts.PIELevel != 0;
- Options.EnableSegmentedStacks = CodeGenOpts.EnableSegmentedStacks;
TargetMachine *TM = TheTarget->createTargetMachine(Triple, TargetOpts.CPU,
FeaturesStr, Options,
diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp
index ca8b99a3cbd..e82b6defa6b 100644
--- a/clang/lib/CodeGen/CGCall.cpp
+++ b/clang/lib/CodeGen/CGCall.cpp
@@ -1090,6 +1090,8 @@ void CodeGenModule::ConstructAttributeList(const CGFunctionInfo &FI,
FuncAttrs.addAttribute(llvm::Attribute::NoRedZone);
if (CodeGenOpts.NoImplicitFloat)
FuncAttrs.addAttribute(llvm::Attribute::NoImplicitFloat);
+ if (CodeGenOpts.EnableSegmentedStacks)
+ FuncAttrs.addAttribute("split-stack");
if (AttrOnCallSite) {
// Attributes that should go on the call site only.
diff --git a/clang/test/CodeGen/split-stacks.c b/clang/test/CodeGen/split-stacks.c
new file mode 100644
index 00000000000..98112467a56
--- /dev/null
+++ b/clang/test/CodeGen/split-stacks.c
@@ -0,0 +1,18 @@
+// RUN: %clang -target x86_64-linux-gnu -fsplit-stack -S %s -emit-llvm -o - | FileCheck -check-prefix=CHECK-SEGSTK %s
+// RUN: %clang -target x86_64-linux-gnu -S %s -emit-llvm -o - | FileCheck -check-prefix=CHECK-NOSEGSTK %s
+
+int foo() {
+ return 0;
+}
+
+int main() {
+ return foo();
+}
+
+// CHECK-SEGSTK: define i32 @foo() #0 {
+// CHECK-SEGSTK: define i32 @main() #0 {
+// CHECK-SEGSTK: #0 = { {{.*}} "split-stack" {{.*}} }
+
+// CHECK-NOSEGSTK: define i32 @foo() #0 {
+// CHECK-NOSEGSTK: define i32 @main() #0 {
+// CHECK-NOSEGSTK-NOT: #0 = { {{.*}} "split-stack" {{.*}} }
OpenPOWER on IntegriCloud