diff options
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; } |