[PR67891] drop is_gimple_reg test from set_parm_rtl (was: [PR67766] reorder return value copying from PARALLELs and CONCATs)

Alexandre Oliva aoliva@redhat.com
Fri Oct 9 07:33:00 GMT 2015


On Oct  9, 2015, Alexandre Oliva <aoliva@redhat.com> wrote:

> This fixes fallout from the PR64164 expander revamp.

> Uroš kindly tested with an alpha-linux-gnu regstrap.

The one regression he mentioned from that run was gcc.dg/pr43300.c.  The
vector parameter there is handled by the emit_block_move case of
assign_parms_setup_block.  Alas, emit_block_move marks the decl as
addressable, which causes the subsequent is_gimple_reg test in
set_parm_rtl to return false.  This causes us to call set_rtl with the
parm decl, instead of its default def, and the latter would be required
to store the RTL in the partition holding the default def.

The good news it that we don't really need to call is_gimple_reg there,
though; testing whether there is a default def in place is enough, and
ssa_default_def will find the default def in spite of the parm's no
longer passing is_gimple_reg, and it won't complain if given a decl that
was never a gimple reg.

So, I'm dropping the test.  Regstrapped on x86_64-linux-gnu and
i686-linux-gnu.  Ok to install?


[PR67891] don't test is_gimple_reg after parm expansion

From: Alexandre Oliva <aoliva@redhat.com>

for  gcc/ChangeLog

	PR middle-end/67891
	* cfgexpand.c (set_parm_rtl): Drop is_gimple_reg test.
---
 gcc/cfgexpand.c |    3 ---
 1 file changed, 3 deletions(-)

diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 58e55d2..eaad859 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -1243,9 +1243,6 @@ set_parm_rtl (tree parm, rtx x)
       record_alignment_for_reg_var (align);
     }
 
-  if (!is_gimple_reg (parm))
-    return set_rtl (parm, x);
-
   tree ssa = ssa_default_def (cfun, parm);
   if (!ssa)
     return set_rtl (parm, x);


-- 
Alexandre Oliva, freedom fighter    http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/   FSF Latin America board member
Free Software Evangelist|Red Hat Brasil GNU Toolchain Engineer



More information about the Gcc-patches mailing list