diff gcc/config/pa/pa64-regs.h @ 67:f6334be47118

update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 22 Mar 2011 17:18:12 +0900
parents a06113de4d67
children 04ced10e8804
line wrap: on
line diff
--- a/gcc/config/pa/pa64-regs.h	Tue May 25 18:58:51 2010 +0900
+++ b/gcc/config/pa/pa64-regs.h	Tue Mar 22 17:18:12 2011 +0900
@@ -1,5 +1,5 @@
 /* Configuration for GCC-compiler for PA-RISC.
-   Copyright (C) 1999, 2000, 2003, 2004, 2007, 2008
+   Copyright (C) 1999, 2000, 2003, 2004, 2007, 2008, 2010
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -38,8 +38,8 @@
    issue as using the halves independently triggers false dependency stalls
    anyway.  */
 
-#define FIRST_PSEUDO_REGISTER 61  /* 32 general regs + 28 fp regs +
-				     + 1 shift reg */
+#define FIRST_PSEUDO_REGISTER 62  /* 32 general regs + 28 fp regs +
+				     + 1 shift reg + frame pointer */
 
 /* 1 for registers that have pervasive standard uses
    and are not available for the register allocator.
@@ -79,8 +79,8 @@
   0, 0, 0, 0, 0, 0, 0, 0, \
   0, 0, 0, 0, 0, 0, 0, 0, \
   0, 0, 0, 0,		  \
-  /* shift register */	  \
-  0}
+  /* shift register and soft frame pointer */	  \
+  0, 1}
 
 /* 1 for registers not available across function calls.
    These must include the FIXED_REGISTERS and also any
@@ -98,20 +98,8 @@
   0, 0, 0, 0, 0, 0, 0, 0, \
   0, 0, 1, 1, 1, 1, 1, 1, \
   1, 1, 1, 1, 		  \
-  /* shift register */    \
-  1}
-
-#define CONDITIONAL_REGISTER_USAGE \
-{						\
-  int i;					\
-  if (TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT)\
-    {						\
-      for (i = FP_REG_FIRST; i <= FP_REG_LAST; i++)\
-	fixed_regs[i] = call_used_regs[i] = 1; 	\
-    }						\
-  if (flag_pic)					\
-    fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1;	\
-}
+  /* shift register and soft frame pointer */    \
+  1, 1}
 
 /* Allocate the call used registers first.  This should minimize
    the number of registers that need to be saved (as call used
@@ -137,7 +125,7 @@
    3,  4,  5,  6,  7,  8,  9, 10, 	\
   11, 12, 13, 14, 15, 16, 17, 18,	\
   /* special registers.  */		\
-   1, 27, 30,  0, 60}
+   1, 27, 30,  0, 60, 61}
 
 
 /* Return number of consecutive hard regs needed starting at reg REGNO
@@ -235,12 +223,12 @@
 #define REG_CLASS_CONTENTS	\
  {{0x00000000, 0x00000000},	/* NO_REGS */			\
   {0x00000002, 0x00000000},	/* R1_REGS */			\
-  {0xfffffffe, 0x00000000},	/* GENERAL_REGS */		\
+  {0xfffffffe, 0x20000000},	/* GENERAL_REGS */		\
   {0x00000000, 0x00000000},	/* FPUPPER_REGS */		\
   {0x00000000, 0x0fffffff},	/* FP_REGS */			\
-  {0xfffffffe, 0x0fffffff},	/* GENERAL_OR_FP_REGS */	\
+  {0xfffffffe, 0x2fffffff},	/* GENERAL_OR_FP_REGS */	\
   {0x00000000, 0x10000000},	/* SHIFT_REGS */		\
-  {0xfffffffe, 0x1fffffff}}	/* ALL_REGS */
+  {0xfffffffe, 0x3fffffff}}	/* ALL_REGS */
 
 /* The following macro defines cover classes for Integrated Register
    Allocator.  Cover classes is a set of non-intersected register
@@ -267,7 +255,7 @@
 #define REGNO_REG_CLASS(REGNO)						\
   ((REGNO) == 0 ? NO_REGS 						\
    : (REGNO) == 1 ? R1_REGS						\
-   : (REGNO) < 32 ? GENERAL_REGS					\
+   : (REGNO) < 32 || (REGNO) == 61 ? GENERAL_REGS			\
    : (REGNO) < 60 ? FP_REGS						\
    : SHIFT_REGS)
 
@@ -293,7 +281,7 @@
  "%fr4",  "%fr5",   "%fr6",  "%fr7",   "%fr8",  "%fr9",   "%fr10", "%fr11",  \
  "%fr12", "%fr13",  "%fr14", "%fr15",  "%fr16", "%fr17",  "%fr18", "%fr19",  \
  "%fr20", "%fr21",  "%fr22", "%fr23",  "%fr24", "%fr25",  "%fr26", "%fr27",  \
- "%fr28", "%fr29",  "%fr30", "%fr31", "SAR"}
+ "%fr28", "%fr29",  "%fr30", "%fr31",  "SAR",   "sfp"}
 
 #define ADDITIONAL_REGISTER_NAMES \
  {{"%cr11",60}}