diff options
author | Reid Kleckner <reid@kleckner.net> | 2014-04-10 22:59:13 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2014-04-10 22:59:13 +0000 |
commit | fb873af67ed23e6aa445b44d253fb156d07bdebc (patch) | |
tree | 85400130e6548f6f837e48e9695306aaab132ea9 | |
parent | 9c6582129a34d68c6093817608eaf3a24daf10fa (diff) | |
download | bcm5719-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.cpp | 1 | ||||
-rw-r--r-- | clang/lib/CodeGen/CGCall.cpp | 2 | ||||
-rw-r--r-- | clang/test/CodeGen/split-stacks.c | 18 |
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" {{.*}} } |