[PATCH, rs6000, committed] Fix bootstrap failures for uninitialized memory

Bill Schmidt wschmidt@linux.vnet.ibm.com
Thu Mar 2 19:20:00 GMT 2017


Hi,

The expanded warnings for uninitialized memory caught a couple of
problems in the rs6000 back end, causing bootstrap to fail.  Some
of them were just introduced yesterday, while others are a bit
older.  These are just misnumbering of operands, skipping over
one and causing it to be uninitialized.  Bootstrapped and tested
on powerpc64le-unknown-linux-gnu, committed as obvious.

Thanks,
Bill


2017-03-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/vector.md (vector_ne_<mode>_p): Correct operand
	numbers.
	(vector_ae_<mode>_p): Likewise.
	(vector_nez_<mode>_p): Likewise.
	(vector_ne_v2di_p): Likewise.
	(vector_ae_v2di_p): Likewise.
	(vector_ne_<mode>_p): Likewise.
	* config/rs6000/vsx.md (vsx_tsqrt<mode>2_fg): Correct operand
	numbers.
	(vsx_tsqrt<mode>2_fe): Likewise.


Index: gcc/config/rs6000/vector.md
===================================================================
--- gcc/config/rs6000/vector.md	(revision 245843)
+++ gcc/config/rs6000/vector.md	(working copy)
@@ -700,7 +700,7 @@
 	  (unspec:CC [(ne:CC (match_operand:VI 1 "vlogical_operand")
 			     (match_operand:VI 2 "vlogical_operand"))]
 	   UNSPEC_PREDICATE))
-     (set (match_dup 4)
+     (set (match_dup 3)
 	  (ne:VI (match_dup 1)
 		 (match_dup 2)))])
    (set (match_operand:SI 0 "register_operand" "=r")
@@ -708,7 +708,7 @@
 	       (const_int 0)))]
   "TARGET_P9_VECTOR"
 {
-  operands[4] = gen_reg_rtx (<MODE>mode);
+  operands[3] = gen_reg_rtx (<MODE>mode);
 })
 
 ;; This expansion handles the V16QI, V8HI, and V4SI modes in the
@@ -719,7 +719,7 @@
 	  (unspec:CC [(ne:CC (match_operand:VI 1 "vlogical_operand")
 			     (match_operand:VI 2 "vlogical_operand"))]
 	   UNSPEC_PREDICATE))
-     (set (match_dup 4)
+     (set (match_dup 3)
 	  (ne:VI (match_dup 1)
 		 (match_dup 2)))])
    (set (match_operand:SI 0 "register_operand" "=r")
@@ -730,7 +730,7 @@
 		(const_int 1)))]
   "TARGET_P9_VECTOR"
 {
-  operands[4] = gen_reg_rtx (<MODE>mode);
+  operands[3] = gen_reg_rtx (<MODE>mode);
 })
 
 ;; This expansion handles the V16QI, V8HI, and V4SI modes in the
@@ -763,7 +763,7 @@
 	  (unspec:CC [(eq:CC (match_operand:V2DI 1 "vlogical_operand")
 			     (match_operand:V2DI 2 "vlogical_operand"))]
 		     UNSPEC_PREDICATE))
-     (set (match_dup 4)
+     (set (match_dup 3)
 	  (eq:V2DI (match_dup 1)
 		   (match_dup 2)))])
    (set (match_operand:SI 0 "register_operand" "=r")
@@ -771,7 +771,7 @@
 	       (const_int 0)))]
   "TARGET_P9_VECTOR"
 {
-  operands[4] = gen_reg_rtx (V2DImode);
+  operands[3] = gen_reg_rtx (V2DImode);
 })
 
 ;; This expansion handles the V2DI mode in the implementation of the
@@ -786,7 +786,7 @@
 	  (unspec:CC [(eq:CC (match_operand:V2DI 1 "vlogical_operand")
 			     (match_operand:V2DI 2 "vlogical_operand"))]
 		     UNSPEC_PREDICATE))
-     (set (match_dup 4)
+     (set (match_dup 3)
 	  (eq:V2DI (match_dup 1)
 		   (match_dup 2)))])
    (set (match_operand:SI 0 "register_operand" "=r")
@@ -797,7 +797,7 @@
 		(const_int 1)))]
   "TARGET_P9_VECTOR"
 {
-  operands[4] = gen_reg_rtx (V2DImode);
+  operands[3] = gen_reg_rtx (V2DImode);
 })
 
 ;; This expansion handles the V4SF and V2DF modes in the Power9
@@ -811,7 +811,7 @@
 	  (unspec:CC [(eq:CC (match_operand:VEC_F 1 "vlogical_operand")
 			     (match_operand:VEC_F 2 "vlogical_operand"))]
 		     UNSPEC_PREDICATE))
-     (set (match_dup 4)
+     (set (match_dup 3)
 	  (eq:VEC_F (match_dup 1)
 		    (match_dup 2)))])
    (set (match_operand:SI 0 "register_operand" "=r")
@@ -819,7 +819,7 @@
 	       (const_int 0)))]
   "TARGET_P9_VECTOR"
 {
-  operands[4] = gen_reg_rtx (<MODE>mode);
+  operands[3] = gen_reg_rtx (<MODE>mode);
 })
 
 ;; This expansion handles the V4SF and V2DF modes in the Power9
@@ -833,7 +833,7 @@
 	  (unspec:CC [(eq:CC (match_operand:VEC_F 1 "vlogical_operand")
 			     (match_operand:VEC_F 2 "vlogical_operand"))]
 		     UNSPEC_PREDICATE))
-     (set (match_dup 4)
+     (set (match_dup 3)
 	  (eq:VEC_F (match_dup 1)
 		    (match_dup 2)))])
    (set (match_operand:SI 0 "register_operand" "=r")
@@ -844,7 +844,7 @@
 		(const_int 1)))]
   "TARGET_P9_VECTOR"
 {
-  operands[4] = gen_reg_rtx (<MODE>mode);
+  operands[3] = gen_reg_rtx (<MODE>mode);
 })
 
 (define_expand "vector_gt_<mode>_p"
Index: gcc/config/rs6000/vsx.md
===================================================================
--- gcc/config/rs6000/vsx.md	(revision 245843)
+++ gcc/config/rs6000/vsx.md	(working copy)
@@ -1383,28 +1383,28 @@
 
 ;; *tsqrt* returning the fg flag
 (define_expand "vsx_tsqrt<mode>2_fg"
-  [(set (match_dup 3)
+  [(set (match_dup 2)
 	(unspec:CCFP [(match_operand:VSX_B 1 "vsx_register_operand" "")]
 		     UNSPEC_VSX_TSQRT))
    (set (match_operand:SI 0 "gpc_reg_operand" "")
-	(gt:SI (match_dup 3)
+	(gt:SI (match_dup 2)
 	       (const_int 0)))]
   "VECTOR_UNIT_VSX_P (<MODE>mode)"
 {
-  operands[3] = gen_reg_rtx (CCFPmode);
+  operands[2] = gen_reg_rtx (CCFPmode);
 })
 
 ;; *tsqrt* returning the fe flag
 (define_expand "vsx_tsqrt<mode>2_fe"
-  [(set (match_dup 3)
+  [(set (match_dup 2)
 	(unspec:CCFP [(match_operand:VSX_B 1 "vsx_register_operand" "")]
 		     UNSPEC_VSX_TSQRT))
    (set (match_operand:SI 0 "gpc_reg_operand" "")
-	(eq:SI (match_dup 3)
+	(eq:SI (match_dup 2)
 	       (const_int 0)))]
   "VECTOR_UNIT_VSX_P (<MODE>mode)"
 {
-  operands[3] = gen_reg_rtx (CCFPmode);
+  operands[2] = gen_reg_rtx (CCFPmode);
 })
 
 (define_insn "*vsx_tsqrt<mode>2_internal"



More information about the Gcc-patches mailing list