From a7adbbcbc3ad385e2b54716ce410c79a42ac5bce Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 5 Jul 2011 15:47:40 +0000 Subject: [PATCH] Promote the function argument before checking non-legitimate constant. 2011-07-05 H.J. Lu PR middle-end/47715 * calls.c (precompute_register_parameters): Promote the function argument before checking non-legitimate constant. From-SVN: r175864 --- gcc/ChangeLog | 6 ++++++ gcc/calls.c | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 418f5dce6a7..03313681666 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-07-05 H.J. Lu + + PR middle-end/47715 + * calls.c (precompute_register_parameters): Promote the function + argument before checking non-legitimate constant. + 2011-07-05 Sebastian Pop PR tree-optimization/47654 diff --git a/gcc/calls.c b/gcc/calls.c index bba477ce274..7538e4e5040 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -702,12 +702,6 @@ precompute_register_parameters (int num_actuals, struct arg_data *args, pop_temp_slots (); } - /* If the value is a non-legitimate constant, force it into a - pseudo now. TLS symbols sometimes need a call to resolve. */ - if (CONSTANT_P (args[i].value) - && !targetm.legitimate_constant_p (args[i].mode, args[i].value)) - args[i].value = force_reg (args[i].mode, args[i].value); - /* If we are to promote the function arg to a wider mode, do it now. */ @@ -717,6 +711,12 @@ precompute_register_parameters (int num_actuals, struct arg_data *args, TYPE_MODE (TREE_TYPE (args[i].tree_value)), args[i].value, args[i].unsignedp); + /* If the value is a non-legitimate constant, force it into a + pseudo now. TLS symbols sometimes need a call to resolve. */ + if (CONSTANT_P (args[i].value) + && !targetm.legitimate_constant_p (args[i].mode, args[i].value)) + args[i].value = force_reg (args[i].mode, args[i].value); + /* If we're going to have to load the value by parts, pull the parts into pseudos. The part extraction process can involve non-trivial computation. */ -- 2.30.2