diff options
author | Ian Lance Taylor <iant@golang.org> | 2017-06-09 18:44:28 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2017-06-09 18:44:28 +0000 |
commit | a1f427e9a5750602aca0419f947d1612729b5793 (patch) | |
tree | cc12d6764d5fc554e61f0f5dafc58ce91099a908 /gcc/go | |
parent | cb59f689a37fc39178b9ac5fa595c63b3d7eddc0 (diff) | |
download | gcc-a1f427e9a5750602aca0419f947d1612729b5793.zip gcc-a1f427e9a5750602aca0419f947d1612729b5793.tar.gz gcc-a1f427e9a5750602aca0419f947d1612729b5793.tar.bz2 |
opts.c (finish_options): If -fsplit-stack, disable implicit -forder-blocks-and-partition.
gcc/:
* opts.c (finish_options): If -fsplit-stack, disable implicit
-forder-blocks-and-partition.
* doc/invoke.texi (Optimize Options): Document that when using
-fsplit-stack -forder-blocks-and-partition is not implicitly
enabled.
gcc/go/:
* go-lang.c (go_langhook_post_options): If -fsplit-stack is turned
on, disable implicit -forder-blocks-and-partition.
gcc/testsuite/:
* gcc.dg/tree-prof/split-1.c: New test.
From-SVN: r249071
Diffstat (limited to 'gcc/go')
-rw-r--r-- | gcc/go/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/go/go-lang.c | 9 |
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index 59b4e6e..ac0dbe3 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,8 @@ +2017-06-09 Ian Lance Taylor <iant@golang.org> + + * go-lang.c (go_langhook_post_options): If -fsplit-stack is turned + on, disable implicit -forder-blocks-and-partition. + 2017-05-12 Than McIntosh <thanm@google.com> * go-gcc.cc (Gcc_backend::call_expression): Add caller parameter. diff --git a/gcc/go/go-lang.c b/gcc/go/go-lang.c index 780d737..09e4fea 100644 --- a/gcc/go/go-lang.c +++ b/gcc/go/go-lang.c @@ -304,6 +304,15 @@ go_langhook_post_options (const char **pfilename ATTRIBUTE_UNUSED) && targetm_common.supports_split_stack (false, &global_options)) global_options.x_flag_split_stack = 1; + /* If stack splitting is turned on, and the user did not explicitly + request function partitioning, turn off partitioning, as it + confuses the linker when trying to handle partitioned split-stack + code that calls a non-split-stack function. */ + if (global_options.x_flag_split_stack + && global_options.x_flag_reorder_blocks_and_partition + && !global_options_set.x_flag_reorder_blocks_and_partition) + global_options.x_flag_reorder_blocks_and_partition = 0; + /* Returning false means that the backend should be used. */ return false; } |