On Jun  9, 2015, Alexandre Oliva <aol...@redhat.com> wrote:

> On Jun  9, 2015, David Edelsohn <dje....@gmail.com> wrote:
>> This also broke bootstrap on PPC64 LE Linux with the same error.

> Thanks for your reports.  I'm looking into the problem.

> I'd appreciate a preprocessed testcase from either of you to confirm the
> fix, if not to help debug it.

The first potential source for this problem that jumped at me would be
silenced with this change:

diff --git a/gcc/function.c b/gcc/function.c
index 8bcc352..9201ed9 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -2974,7 +2974,8 @@ assign_parm_setup_block (struct assign_parm_data_all *all,
        stack_parm = copy_rtx (stack_parm);
       if (GET_MODE_SIZE (GET_MODE (entry_parm)) == size)
        PUT_MODE (stack_parm, GET_MODE (entry_parm));
-      set_mem_attributes (stack_parm, parm, 1);
+      if (GET_CODE (stack_parm) == MEM)
+       set_mem_attributes (stack_parm, parm, 1);
     }
 
   /* If a BLKmode arrives in registers, copy it to a stack slot.  Handle

but I suspect there might be other similar issues lurking in function.c
after my attempt to turn parm assignment upside down ;-)

(namely, it used to assume it could pick stack slots and pseudos in a
whim, but after this change it must give way to out-of-SSA's partition
assignments.)

I'll look into cross-building some embedded targets and see if any
further issues surface.

-- 
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

Reply via email to