This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]