This is the mail archive of the gcc-bugs@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]

Re: PATCH 2: Re: BOOTSTRAP FAILURE: segementation fault in genattrtab


> I see two independent patches here.  You need to separate them.

Here is the clean up to the pa machine definition that can be done as
a result of improving the basereg_operand test.  It depends on the
following patches being installed:

<http://gcc.gnu.org/ml/gcc-patches/2000-11/msg01358.html>
<http://gcc.gnu.org/ml/gcc-patches/2000-11/msg01508.html>

Tested with a complete bootstrap and check under hpux 10.20.  Please
review and install if OK.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)

2000-11-24  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.md: Remove hack from all index insns to reverse the operand
	order of frame and stack pointer references incorrectly created
	in the reload pass.
	
--- pa.md.orig	Fri Nov 24 16:28:19 2000
+++ pa.md	Fri Nov 24 16:37:57 2000
@@ -2144,17 +2144,7 @@
 	(mem:SI (plus:SI (match_operand:SI 1 "basereg_operand" "r")
 			 (match_operand:SI 2 "register_operand" "r"))))]
   "! TARGET_DISABLE_INDEXING"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[2] == hard_frame_pointer_rtx
-      || operands[2] == stack_pointer_rtx)
-    return \"{ldwx|ldw} %1(%2),%0\";
-  else
-    return \"{ldwx|ldw} %2(%1),%0\";
-}"
+  "{ldwx|ldw} %2(%1),%0"
   [(set_attr "type" "load")
    (set_attr "length" "4")])
 
@@ -2163,17 +2153,7 @@
 	(mem:SI (plus:SI (match_operand:SI 1 "register_operand" "r")
 			 (match_operand:SI 2 "basereg_operand" "r"))))]
   "! TARGET_DISABLE_INDEXING"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[1] == hard_frame_pointer_rtx
-      || operands[1] == stack_pointer_rtx)
-    return \"{ldwx|ldw} %2(%1),%0\";
-  else
-    return \"{ldwx|ldw} %1(%2),%0\";
-}"
+  "{ldwx|ldw} %1(%2),%0"
   [(set_attr "type" "load")
    (set_attr "length" "4")])
 
@@ -2594,17 +2574,7 @@
 	(mem:HI (plus:SI (match_operand:SI 1 "basereg_operand" "r")
 			 (match_operand:SI 2 "register_operand" "r"))))]
   "! TARGET_DISABLE_INDEXING"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[2] == hard_frame_pointer_rtx
-      || operands[2] == stack_pointer_rtx)
-    return \"{ldhx|ldh} %1(%2),%0\";
-  else
-    return \"{ldhx|ldh} %2(%1),%0\";
-}"
+  "{ldhx|ldh} %2(%1),%0"
   [(set_attr "type" "load")
    (set_attr "length" "4")])
 
@@ -2613,17 +2583,7 @@
 	(mem:HI (plus:SI (match_operand:SI 1 "register_operand" "r")
 			 (match_operand:SI 2 "basereg_operand" "r"))))]
   "! TARGET_DISABLE_INDEXING"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[1] == hard_frame_pointer_rtx
-      || operands[1] == stack_pointer_rtx)
-    return \"{ldhx|ldh} %2(%1),%0\";
-  else
-    return \"{ldhx|ldh} %1(%2),%0\";
-}"
+  "{ldhx|ldh} %1(%2),%0"
   [(set_attr "type" "load")
    (set_attr "length" "4")])
 
@@ -2635,17 +2595,7 @@
 			    (match_operand:SI 1 "basereg_operand" "r")
 			    (match_operand:SI 2 "register_operand" "r")))))]
   "! TARGET_DISABLE_INDEXING"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[2] == hard_frame_pointer_rtx
-      || operands[2] == stack_pointer_rtx)
-    return \"{ldhx|ldh} %1(%2),%0\";
-  else
-    return \"{ldhx|ldh} %2(%1),%0\";
-}"
+  "{ldhx|ldh} %2(%1),%0"
   [(set_attr "type" "load")
    (set_attr "length" "4")])
 
@@ -2656,17 +2606,7 @@
 			     (match_operand:SI 1 "register_operand" "r")
 			     (match_operand:SI 2 "basereg_operand" "r")))))]
   "! TARGET_DISABLE_INDEXING"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[1] == hard_frame_pointer_rtx
-      || operands[1] == stack_pointer_rtx)
-    return \"{ldhx|ldh} %2(%1),%0\";
-  else
-    return \"{ldhx|ldh} %1(%2),%0\";
-}"
+  "{ldhx|ldh} %1(%2),%0"
   [(set_attr "type" "load")
    (set_attr "length" "4")])
 
@@ -2756,17 +2696,7 @@
 	(mem:QI (plus:SI (match_operand:SI 1 "basereg_operand" "r")
 			 (match_operand:SI 2 "register_operand" "r"))))]
   "! TARGET_DISABLE_INDEXING"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[2] == hard_frame_pointer_rtx
-      || operands[2] == stack_pointer_rtx)
-    return \"{ldbx|ldb} %1(%2),%0\";
-  else
-    return \"{ldbx|ldb} %2(%1),%0\";
-}"
+  "{ldbx|ldb} %2(%1),%0"
   [(set_attr "type" "load")
    (set_attr "length" "4")])
 
@@ -2775,17 +2705,7 @@
 	(mem:QI (plus:SI (match_operand:SI 1 "register_operand" "r")
 			 (match_operand:SI 2 "basereg_operand" "r"))))]
   "! TARGET_DISABLE_INDEXING"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[1] == hard_frame_pointer_rtx
-      || operands[1] == stack_pointer_rtx)
-    return \"{ldbx|ldb} %2(%1),%0\";
-  else
-    return \"{ldbx|ldb} %1(%2),%0\";
-}"
+  "{ldbx|ldb} %1(%2),%0"
   [(set_attr "type" "load")
    (set_attr "length" "4")])
 
@@ -2797,17 +2717,7 @@
 			    (match_operand:SI 1 "basereg_operand" "r")
 			    (match_operand:SI 2 "register_operand" "r")))))]
   "! TARGET_DISABLE_INDEXING"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[2] == hard_frame_pointer_rtx
-      || operands[2] == stack_pointer_rtx)
-    return \"{ldbx|ldb} %1(%2),%0\";
-  else
-    return \"{ldbx|ldb} %2(%1),%0\";
-}"
+  "{ldbx|ldb} %2(%1),%0"
   [(set_attr "type" "load")
    (set_attr "length" "4")])
 
@@ -2818,17 +2728,7 @@
 			    (match_operand:SI 1 "register_operand" "r")
 			    (match_operand:SI 2 "basereg_operand" "r")))))]
   "! TARGET_DISABLE_INDEXING"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[1] == hard_frame_pointer_rtx
-      || operands[1] == stack_pointer_rtx)
-    return \"{ldbx|ldb} %2(%1),%0\";
-  else
-    return \"{ldbx|ldb} %1(%2),%0\";
-}"
+  "{ldbx|ldb} %1(%2),%0"
   [(set_attr "type" "load")
    (set_attr "length" "4")])
 
@@ -2839,17 +2739,7 @@
 			    (match_operand:SI 1 "basereg_operand" "r")
 			    (match_operand:SI 2 "register_operand" "r")))))]
   "! TARGET_DISABLE_INDEXING"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[2] == hard_frame_pointer_rtx
-      || operands[2] == stack_pointer_rtx)
-    return \"{ldbx|ldb} %1(%2),%0\";
-  else
-    return \"{ldbx|ldb} %2(%1),%0\";
-}"
+  "{ldbx|ldb} %2(%1),%0"
   [(set_attr "type" "load")
    (set_attr "length" "4")])
 
@@ -2860,17 +2750,7 @@
 			    (match_operand:SI 1 "register_operand" "r")
 			    (match_operand:SI 2 "basereg_operand" "r")))))]
   "! TARGET_DISABLE_INDEXING"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[1] == hard_frame_pointer_rtx
-      || operands[1] == stack_pointer_rtx)
-    return \"{ldbx|ldb} %2(%1),%0\";
-  else
-    return \"{ldbx|ldb} %1(%2),%0\";
-}"
+  "{ldbx|ldb} %1(%2),%0"
   [(set_attr "type" "load")
    (set_attr "length" "4")])
 
@@ -3143,17 +3023,7 @@
 	(mem:DF (plus:SI (match_operand:SI 1 "basereg_operand" "r")
 			 (match_operand:SI 2 "register_operand" "r"))))]
   "! TARGET_DISABLE_INDEXING && ! TARGET_SOFT_FLOAT"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[2] == hard_frame_pointer_rtx
-      || operands[2] == stack_pointer_rtx)
-    return \"{flddx|fldd} %1(%2),%0\";
-  else
-    return \"{flddx|fldd} %2(%1),%0\";
-}"
+  "{flddx|fldd} %2(%1),%0"
   [(set_attr "type" "fpload")
    (set_attr "length" "4")])
 
@@ -3162,17 +3032,7 @@
 	(mem:DF (plus:SI (match_operand:SI 1 "register_operand" "r")
 			 (match_operand:SI 2 "basereg_operand" "r"))))]
   "! TARGET_DISABLE_INDEXING && ! TARGET_SOFT_FLOAT"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[1] == hard_frame_pointer_rtx
-      || operands[1] == stack_pointer_rtx)
-    return \"{flddx|fldd} %2(%1),%0\";
-  else
-    return \"{flddx|fldd} %1(%2),%0\";
-}"
+  "{flddx|fldd} %1(%2),%0"
   [(set_attr "type" "fpload")
    (set_attr "length" "4")])
 
@@ -3181,17 +3041,7 @@
 			 (match_operand:SI 2 "register_operand" "r")))
 	(match_operand:DF 0 "register_operand" "fx"))]
   "! TARGET_DISABLE_INDEXING && ! TARGET_SOFT_FLOAT"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[2] == hard_frame_pointer_rtx
-      || operands[2] == stack_pointer_rtx)
-    return \"{fstdx|fstd} %0,%1(%2)\";
-  else
-    return \"{fstdx|fstd} %0,%2(%1)\";
-}"
+  "{fstdx|fstd} %0,%2(%1)"
   [(set_attr "type" "fpstore")
    (set_attr "length" "4")])
 
@@ -3200,17 +3050,7 @@
 			 (match_operand:SI 2 "basereg_operand" "r")))
 	(match_operand:DF 0 "register_operand" "fx"))]
   "! TARGET_DISABLE_INDEXING && ! TARGET_SOFT_FLOAT"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[1] == hard_frame_pointer_rtx
-      || operands[1] == stack_pointer_rtx)
-    return \"{fstdx|fstd} %0,%2(%1)\";
-  else
-    return \"{fstdx|fstd} %0,%1(%2)\";
-}"
+  "{fstdx|fstd} %0,%1(%2)"
   [(set_attr "type" "fpstore")
    (set_attr "length" "4")])
 
@@ -3474,17 +3314,7 @@
 	(mem:SF (plus:SI (match_operand:SI 1 "basereg_operand" "r")
 			 (match_operand:SI 2 "register_operand" "r"))))]
   "! TARGET_DISABLE_INDEXING && ! TARGET_SOFT_FLOAT"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[2] == hard_frame_pointer_rtx
-      || operands[2] == stack_pointer_rtx)
-    return \"{fldwx|fldw} %1(%2),%0\";
-  else
-    return \"{fldwx|fldw} %2(%1),%0\";
-}"
+  "{fldwx|fldw} %2(%1),%0"
   [(set_attr "type" "fpload")
    (set_attr "length" "4")])
 
@@ -3493,17 +3323,7 @@
 	(mem:SF (plus:SI (match_operand:SI 1 "register_operand" "r")
 			 (match_operand:SI 2 "basereg_operand" "r"))))]
   "! TARGET_DISABLE_INDEXING && ! TARGET_SOFT_FLOAT"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[1] == hard_frame_pointer_rtx
-      || operands[1] == stack_pointer_rtx)
-    return \"{fldwx|fldw} %2(%1),%0\";
-  else
-    return \"{fldwx|fldw} %1(%2),%0\";
-}"
+  "{fldwx|fldw} %1(%2),%0"
   [(set_attr "type" "fpload")
    (set_attr "length" "4")])
 
@@ -3512,17 +3332,7 @@
 			 (match_operand:SI 2 "register_operand" "r")))
       (match_operand:SF 0 "register_operand" "fx"))]
   "! TARGET_DISABLE_INDEXING && ! TARGET_SOFT_FLOAT"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[2] == hard_frame_pointer_rtx
-      || operands[2] == stack_pointer_rtx)
-    return \"{fstwx|fstw} %0,%1(%2)\";
-  else
-    return \"{fstwx|fstw} %0,%2(%1)\";
-}"
+  "{fstwx|fstw} %0,%2(%1)"
   [(set_attr "type" "fpstore")
    (set_attr "length" "4")])
 
@@ -3531,17 +3341,7 @@
 			 (match_operand:SI 2 "basereg_operand" "r")))
       (match_operand:SF 0 "register_operand" "fx"))]
   "! TARGET_DISABLE_INDEXING && ! TARGET_SOFT_FLOAT"
-  "*
-{
-  /* Reload can create backwards (relative to cse) unscaled index
-     address modes when eliminating registers and possibly for
-     pseudos that don't get hard registers.  Deal with it.  */
-  if (operands[1] == hard_frame_pointer_rtx
-      || operands[1] == stack_pointer_rtx)
-    return \"{fstwx|fstw} %0,%2(%1)\";
-  else
-    return \"{fstwx|fstw} %0,%1(%2)\";
-}"
+  "{fstwx|fstw} %0,%1(%2)"
   [(set_attr "type" "fpstore")
    (set_attr "length" "4")])
 

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