re PR ipa/65540 (internal error on s-fatllf.ads at -O2)

PR ipa/65540
	* calls.c (initialize_argument_information): When producing tail
	call also turn SSA_NAMES passed by references to original PARM_DECLs
	* gcc.c-torture/compile/pr65540.c: New.

From-SVN: r221910
This commit is contained in:
Jan Hubicka 2015-04-07 23:02:12 +02:00 committed by Jan Hubicka
parent 4209b6d00f
commit 006e317a14
4 changed files with 41 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2015-04-07 Jan Hubicka <hubicka@ucw.cz>
PR ipa/65540
* calls.c (initialize_argument_information): When producing tail
call also turn SSA_NAMES passed by references to original PARM_DECLs
2015-04-07 Vladimir Makarov <vmakarov@redhat.com>
PR target/65648

View File

@ -1321,6 +1321,15 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED,
&& TREE_CODE (base) != SSA_NAME
&& (!DECL_P (base) || MEM_P (DECL_RTL (base)))))
{
/* We may have turned the parameter value into an SSA name.
Go back to the original parameter so we can take the
address. */
if (TREE_CODE (args[i].tree_value) == SSA_NAME)
{
gcc_assert (SSA_NAME_IS_DEFAULT_DEF (args[i].tree_value));
args[i].tree_value = SSA_NAME_VAR (args[i].tree_value);
gcc_assert (TREE_CODE (args[i].tree_value) == PARM_DECL);
}
/* Argument setup code may have copied the value to register. We
revert that optimization now because the tail call code must
use the original location. */

View File

@ -1,3 +1,8 @@
2015-04-07 Jan Hubicka <hubicka@ucw.cz>
PR ipa/65540
* gcc.c-torture/compile/pr65540.c: New.
2015-04-07 Alan Lawrence <alan.lawrence@arm.com>
* gcc.target/aarch64/c-output-template-3.c: Add -O, remove

View File

@ -0,0 +1,21 @@
long double func1 (long double x)
{
if (x > 0.0)
return x;
else if (x < 0.0)
return -x;
else
return x;
}
long double func2 (long double x)
{
if (x > 0.0)
return x;
else if (x < 0.0)
return -x;
else
return x;
}