diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2016-12-06 22:47:00 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2016-12-06 22:47:00 +0000 |
commit | 78bcf3dc722bce75c02eb05f351daf3447896c9d (patch) | |
tree | a0f3522e79b59be083f1a83810c5b0e45025813a /gcc | |
parent | a5a56d88a1040a42a1bfc22587364f3bfb1efa76 (diff) | |
download | gcc-78bcf3dc722bce75c02eb05f351daf3447896c9d.zip gcc-78bcf3dc722bce75c02eb05f351daf3447896c9d.tar.gz gcc-78bcf3dc722bce75c02eb05f351daf3447896c9d.tar.bz2 |
re PR middle-end/78700 (gccgo testcases stack.go, recover.go, crypto/tls fails)
PR middle-end/78700
* calls.c (expand_call): Move back call to prepare_call_address.
From-SVN: r243322
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/calls.c | 10 |
2 files changed, 8 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 463dc1a..61eeea3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-12-06 Eric Botcazou <ebotcazou@adacore.com> + + PR middle-end/78700 + * calls.c (expand_call): Move back call to prepare_call_address. + 2016-12-06 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/78658 diff --git a/gcc/calls.c b/gcc/calls.c index 21385ce..7941869 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -3427,13 +3427,6 @@ expand_call (tree exp, rtx target, int ignore) if (STRICT_ALIGNMENT) store_unaligned_arguments_into_pseudos (args, num_actuals); - /* Prepare the address of the call. This must be done before any - register parameters is loaded for find_first_parameter_load to - work properly in the presence of descriptors. */ - funexp = prepare_call_address (fndecl ? fndecl : fntype, funexp, - static_chain_value, &call_fusage, - reg_parm_seen, flags); - /* Now store any partially-in-registers parm. This is the last place a block-move can happen. */ if (reg_parm_seen) @@ -3544,6 +3537,9 @@ expand_call (tree exp, rtx target, int ignore) } after_args = get_last_insn (); + funexp = prepare_call_address (fndecl ? fndecl : fntype, funexp, + static_chain_value, &call_fusage, + reg_parm_seen, flags); load_register_parameters (args, num_actuals, &call_fusage, flags, pass == 0, &sibcall_failure); |