This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: rs6000 -fdata-sections
On Wed, Dec 05, 2001 at 01:45:30PM -0800, Geoff Keating wrote:
>
> That's much better. This patch is OK (with suitable ChangeLog, and
> don't forget to say where you tested it).
* config/rs6000/rs6000.c (rs6000_unique_section): Simplify and
correct code selecting section.
Bootstrapped c,c++ powerpc-linux. Enabling objc currently kills
powerpc bootstraps due to the "2001-12-04 Andrew MacLeod" change.
flow.c:initialize_uninitialized_subregs hits
(insn 503 501 510 (set (zero_extract:SI (reg/v/j:SI 245)
(const_int 16 [0x10])
(const_int 16 [0x10]))
(reg:SI 247)) 101 {insvsi} (nil)
(nil))
and tries to "Initialize live on entry registers which are used in
subreg expressions" using
(insn 869 757 4 (set (zero_extract:SI (reg/v/j:SI 245)
(const_int 16 [0x10])
(const_int 16 [0x10]))
(const_int 0 [0x0])) -1 (nil)
(nil))
This bombs with "unrecognizable insn". Seems to me that i_u_s is
failing at its purpose according to the ChangeLog, and that
find_regno_partial needs to dig a little deeper or something.
Possibly like this (untested as yet) patch:
* flow.c (find_regno_partial): Return the reg rtx within the
partial reg rtx.
--
Alan Modra
--- gcc/flow.c~ Wed Dec 5 14:35:03 2001
+++ gcc/flow.c Thu Dec 6 21:57:37 2001
@@ -1327,7 +1327,7 @@ find_regno_partial (ptr, data)
case STRICT_LOW_PART:
if (GET_CODE (XEXP (*ptr, 0)) == REG && REGNO (XEXP (*ptr, 0)) == reg)
{
- param->retval = *ptr;
+ param->retval = XEXP (*ptr, 0);
return 1;
}
break;
@@ -1336,7 +1336,7 @@ find_regno_partial (ptr, data)
if (GET_CODE (SUBREG_REG (*ptr)) == REG
&& REGNO (SUBREG_REG (*ptr)) == reg)
{
- param->retval = *ptr;
+ param->retval = SUBREG_REG (*ptr);
return 1;
}
break;