rpms/gcc/devel gcc4-pr20290.patch, NONE, 1.1 gcc4-rh151466.patch, NONE, 1.1 .cvsignore, 1.76, 1.77 gcc4-pr16104.patch, 1.1, 1.2 gcc4.spec, 1.16, 1.17 sources, 1.77, 1.78 gcc4-ada-makej.patch, 1.1, NONE gcc4-libjawt.patch, 1.2, NONE gcc4-rh150150.patch, 1.1, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Mon Mar 21 12:20:31 UTC 2005


Update of /cvs/dist/rpms/gcc/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv7283

Modified Files:
	.cvsignore gcc4-pr16104.patch gcc4.spec sources 
Added Files:
	gcc4-pr20290.patch gcc4-rh151466.patch 
Removed Files:
	gcc4-ada-makej.patch gcc4-libjawt.patch gcc4-rh150150.patch 
Log Message:
4.0.0-0.35


gcc4-pr20290.patch:
 loop.c                                          |   22 +++++++---
 testsuite/gcc.c-torture/execute/loop-ivopts-2.c |   50 ++++++++++++++++++++++++
 2 files changed, 65 insertions(+), 7 deletions(-)

--- NEW FILE gcc4-pr20290.patch ---
2005-03-20  Alexandre Oliva  <aoliva at redhat.com>

	PR rtl-optimization/20290
	* loop.c (for_each_insn_in_loop): Don't assume the loop body runs
	in every iteration if the entry point is the exit test.

	* gcc.c-torture/execute/loop-ivopts-2.c: New.

--- gcc/loop.c 17 Jan 2005 08:46:15 -0000 1.522
+++ gcc/loop.c 20 Mar 2005 06:36:43 -0000
@@ -4655,12 +4655,18 @@ for_each_insn_in_loop (struct loop *loop
   int not_every_iteration = 0;
   int maybe_multiple = 0;
   int past_loop_latch = 0;
+  bool exit_test_is_entry = false;
   rtx p;
 
-  /* If loop_scan_start points to the loop exit test, we have to be wary of
-     subversive use of gotos inside expression statements.  */
+  /* If loop_scan_start points to the loop exit test, the loop body
+     cannot be counted on running on every iteration, and we have to
+     be wary of subversive use of gotos inside expression
+     statements.  */
   if (prev_nonnote_insn (loop->scan_start) != prev_nonnote_insn (loop->start))
-    maybe_multiple = back_branch_in_range_p (loop, loop->scan_start);
+    {
+      exit_test_is_entry = true;
+      maybe_multiple = back_branch_in_range_p (loop, loop->scan_start);
+    }
 
   /* Scan through loop and update NOT_EVERY_ITERATION and MAYBE_MULTIPLE.  */
   for (p = next_insn_in_loop (loop, loop->scan_start);
@@ -4718,10 +4724,12 @@ for_each_insn_in_loop (struct loop *loop
          beginning, don't set not_every_iteration for that.
          This can be any kind of jump, since we want to know if insns
          will be executed if the loop is executed.  */
-	  && !(JUMP_LABEL (p) == loop->top
-	       && ((NEXT_INSN (NEXT_INSN (p)) == loop->end
-		    && any_uncondjump_p (p))
-		   || (NEXT_INSN (p) == loop->end && any_condjump_p (p)))))
+	  && (exit_test_is_entry
+	      || !(JUMP_LABEL (p) == loop->top
+		   && ((NEXT_INSN (NEXT_INSN (p)) == loop->end
+			&& any_uncondjump_p (p))
+		       || (NEXT_INSN (p) == loop->end
+			   && any_condjump_p (p))))))
 	{
 	  rtx label = 0;
 
--- gcc/testsuite/gcc.c-torture/execute/loop-ivopts-2.c	1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.c-torture/execute/loop-ivopts-2.c 20 Mar 2005 06:36:58 -0000
@@ -0,0 +1,50 @@
+/* PR rtl-optimization/20290  */
+   
+/* We used to mis-optimize the second loop in main on at least ppc and
+   arm, because tree loop would change the loop to something like:
+
+  ivtmp.65 = &l[i];
+  ivtmp.16 = 113;
+  goto <bb 4> (<L4>);
+
+<L3>:;
+  *(ivtmp.65 + 4294967292B) = 9;
+  i = i + 1;
+
+<L4>:;
+  ivtmp.16 = ivtmp.16 - 1;
+  ivtmp.65 = ivtmp.65 + 4B;
+  if (ivtmp.16 != 0) goto <L3>; 
+
+  We used to consider the increment of i as executed in every
+  iteration, so we'd miscompute the final value.  */
+
+extern void abort (void);
+
+void
+check (unsigned int *l)
+{
+  int i;
+  for (i = 0; i < 288; i++)
+    if (l[i] != 7 + (i < 256 || i >= 280) + (i >= 144 && i < 256))
+      abort ();
+}
+
+int
+main (void)
+{
+  int i;
+  unsigned int l[288];
+
+  for (i = 0; i < 144; i++)
+    l[i] = 8;
+  for (; i < 256; i++)
+    l[i] = 9;
+  for (; i < 280; i++)
+    l[i] = 7;
+  for (; i < 288; i++)
+    l[i] = 8;
+  check (l);
+  return 0;
+}
+

gcc4-rh151466.patch:
 cfglayout.c                   |    6 ++++
 final.c                       |   20 ++++++++++-----
 testsuite/gcc.dg/20050321-1.c |   54 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 73 insertions(+), 7 deletions(-)

--- NEW FILE gcc4-rh151466.patch ---
2005-03-21  Jakub Jelinek  <jakub at redhat.com>

	* cfglayout.c (reemit_insn_block_notes): Don't put block notes in
	between jump table and its label.
	* final.c (shorten_branches): Handle notes in between ADDR_VEC
	resp. ADDR_DIFF_VEC and the label preceeding it.
	(final_scan_insn): Likewise.  Ensure ADDR_VEC resp. ADDR_DIFF_VEC
	is emitted in the right section.

	* gcc.dg/20050321-1.c: New test.

--- gcc/cfglayout.c.jj	2004-12-07 09:41:35.000000000 +0100
+++ gcc/cfglayout.c	2005-03-21 12:15:30.000000000 +0100
@@ -523,6 +523,12 @@ reemit_insn_block_notes (void)
     {
       tree this_block;
 
+      /* Avoid putting scope notes between jump table and its label.  */
+      if (JUMP_P (insn)
+	  && (GET_CODE (PATTERN (insn)) == ADDR_VEC
+	      || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC))
+	continue;
+
       this_block = insn_scope (insn);
       /* For sequences compute scope resulting from merging all scopes
          of instructions nested inside.  */
--- gcc/final.c.jj	2004-11-27 10:34:59.000000000 +0100
+++ gcc/final.c	2005-03-21 11:49:23.000000000 +0100
@@ -835,7 +835,7 @@ shorten_branches (rtx first ATTRIBUTE_UN
 	      max_log = log;
 	      max_skip = LABEL_ALIGN_MAX_SKIP;
 	    }
-	  next = NEXT_INSN (insn);
+	  next = next_nonnote_insn (insn);
 	  /* ADDR_VECs only take room if read-only data goes into the text
 	     section.  */
 	  if (JUMP_TABLES_IN_TEXT_SECTION || !HAVE_READONLY_DATA_SECTION)
@@ -1677,6 +1677,7 @@ final_scan_insn (rtx insn, FILE *file, i
 #ifdef HAVE_cc0
   rtx set;
 #endif
+  rtx next;
 
   insn_counter++;
 
@@ -1932,10 +1933,11 @@ final_scan_insn (rtx insn, FILE *file, i
 	  fputs (ASM_APP_OFF, file);
 	  app_on = 0;
 	}
-      if (NEXT_INSN (insn) != 0
-	  && JUMP_P (NEXT_INSN (insn)))
+
+      next = next_nonnote_insn (insn);
+      if (next != 0 && JUMP_P (next))
 	{
-	  rtx nextbody = PATTERN (NEXT_INSN (insn));
+	  rtx nextbody = PATTERN (next);
 
 	  /* If this label is followed by a jump-table,
 	     make sure we put the label in the read-only section.  Also
@@ -1956,7 +1958,7 @@ final_scan_insn (rtx insn, FILE *file, i
 		  targetm.asm_out.function_rodata_section (current_function_decl);
 
 #ifdef ADDR_VEC_ALIGN
-		  log_align = ADDR_VEC_ALIGN (NEXT_INSN (insn));
+		  log_align = ADDR_VEC_ALIGN (next);
 #else
 		  log_align = exact_log2 (BIGGEST_ALIGNMENT / BITS_PER_UNIT);
 #endif
@@ -1967,7 +1969,7 @@ final_scan_insn (rtx insn, FILE *file, i
 
 #ifdef ASM_OUTPUT_CASE_LABEL
 	      ASM_OUTPUT_CASE_LABEL (file, "L", CODE_LABEL_NUMBER (insn),
-				     NEXT_INSN (insn));
+				     next);
 #else
 	      targetm.asm_out.internal_label (file, "L", CODE_LABEL_NUMBER (insn));
 #endif
@@ -2022,6 +2024,11 @@ final_scan_insn (rtx insn, FILE *file, i
 	    if (prescan > 0)
 	      break;
 
+	    if (! JUMP_TABLES_IN_TEXT_SECTION)
+	      targetm.asm_out.function_rodata_section (current_function_decl);
+	    else
+	      function_section (current_function_decl);
+
 	    if (app_on)
 	      {
 		fputs (ASM_APP_OFF, file);
@@ -2157,7 +2164,6 @@ final_scan_insn (rtx insn, FILE *file, i
 	  {
 	    /* A delayed-branch sequence */
 	    int i;
-	    rtx next;
 
 	    if (prescan > 0)
 	      break;
--- gcc/testsuite/gcc.dg/20050321-1.c.jj	2005-03-21 11:55:33.000000000 +0100
+++ gcc/testsuite/gcc.dg/20050321-1.c	2005-03-21 11:54:55.000000000 +0100
@@ -0,0 +1,54 @@
+/* This testcase could not assemble on ppc32, because the compiler assumed
+   the huge ADDR_DIFF_VEC will be emitted into rodata section, yet because
+   of some notes inserted between jump table's CODE_LABEL and the jump table
+   it ended up in the .text section and thus shorten_branches couldn't
+   figure out branch to lab is too far.  */
+/* { dg-do link } */
+/* { dg-options "-g1 -fpic" } */
+
+#define A(n) \
+  case n##1: return n##1 * 131 + 63;	\
+  case n##3: return n##3 * 1231 + 182;	\
+  case n##5: return n##5 * 351 + 1;	\
+  case n##7: return n##7 * 312 + 61;	\
+  case n##9: return n##9 * 17 - 1;
+#define B(n) \
+A(n##0) A(n##1) A(n##2) A(n##3) A(n##4) \
+A(n##5) A(n##6) A(n##7) A(n##8) A(n##9)
+#define C(n) \
+B(n##0) B(n##1) B(n##2) B(n##3) B(n##4) \
+B(n##5) B(n##6) B(n##7) B(n##8) B(n##9)
+#define D(n) \
+C(n##0) C(n##1) B(n##20) B(n##21) B(n##22)
+      
+int
+foo (int x)
+{
+  {
+lab:;
+    int a = x;
+    while (a < 60000)
+      {
+        int b = a;
+        {
+          int c = b;
+          switch (c)
+            {
+              D(1)
+              default: break;
+            }
+        }
+        a += 10000;
+        if (a == 4168)
+          goto lab;
+      }
+  }
+  return x;
+}
+
+int
+main (void)
+{
+  foo (71);
+  return 0;
+}


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/.cvsignore,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -r1.76 -r1.77
--- .cvsignore	15 Mar 2005 17:23:22 -0000	1.76
+++ .cvsignore	21 Mar 2005 12:20:28 -0000	1.77
@@ -1 +1 @@
-gcc-4.0.0-20050315.tar.bz2
+gcc-4.0.0-20050321.tar.bz2

gcc4-pr16104.patch:
 fold-const.c                                 |   14 +++-
 testsuite/gcc.c-torture/execute/20050316-1.c |   69 +++++++++++++++++++++
 testsuite/gcc.c-torture/execute/20050316-2.c |   49 +++++++++++++++
 testsuite/gcc.c-torture/execute/20050316-3.c |   36 +++++++++++
 testsuite/gcc.dg/torture/pr16104-1.c         |   88 +++++++++++++++++++++++++++
 5 files changed, 253 insertions(+), 3 deletions(-)

Index: gcc4-pr16104.patch
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc4-pr16104.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gcc4-pr16104.patch	28 Feb 2005 12:48:42 -0000	1.1
+++ gcc4-pr16104.patch	21 Mar 2005 12:20:28 -0000	1.2
@@ -1,51 +1,134 @@
-2005-01-13  Jakub Jelinek  <jakub at redhat.com>
+2005-03-16  Richard Henderson  <rth at redhat.com>
+	    Jakub Jelinek  <jakub at redhat.com>
 
 	PR rtl-optimization/16104
-	* expr.c (convert_move): Handle vector from resp. to if mode
-	sizes differ.
+	* fold-const.c (fold_unary): Fix folding of vector conversions.
 
-	* gcc.c-torture/execute/20050113-1.c: New test.
+	* gcc.c-torture/execute/20050316-1.c: New test.
+	* gcc.c-torture/execute/20050316-2.c: New test.
+	* gcc.c-torture/execute/20050316-3.c: New test.
+	* gcc.dg/torture/pr16104-1.c: New test.
 
---- gcc/expr.c.jj	2005-01-04 15:41:28.000000000 +0100
-+++ gcc/expr.c	2005-01-13 14:38:42.431843676 +0100
-@@ -364,7 +364,27 @@ convert_move (rtx to, rtx from, int unsi
+--- gcc/fold-const.c.jj	2005-03-10 15:42:58.000000000 +0100
++++ gcc/fold-const.c	2005-03-16 09:43:50.777071142 +0100
+@@ -6874,16 +6874,19 @@ fold (tree expr)
+ 	  int inside_int = INTEGRAL_TYPE_P (inside_type);
+ 	  int inside_ptr = POINTER_TYPE_P (inside_type);
+ 	  int inside_float = FLOAT_TYPE_P (inside_type);
++	  int inside_vec = TREE_CODE (inside_type) == VECTOR_TYPE;
+ 	  unsigned int inside_prec = TYPE_PRECISION (inside_type);
+ 	  int inside_unsignedp = TYPE_UNSIGNED (inside_type);
+ 	  int inter_int = INTEGRAL_TYPE_P (inter_type);
+ 	  int inter_ptr = POINTER_TYPE_P (inter_type);
+ 	  int inter_float = FLOAT_TYPE_P (inter_type);
++	  int inter_vec = TREE_CODE (inter_type) == VECTOR_TYPE;
+ 	  unsigned int inter_prec = TYPE_PRECISION (inter_type);
+ 	  int inter_unsignedp = TYPE_UNSIGNED (inter_type);
+ 	  int final_int = INTEGRAL_TYPE_P (type);
+ 	  int final_ptr = POINTER_TYPE_P (type);
+ 	  int final_float = FLOAT_TYPE_P (type);
++	  int final_vec = TREE_CODE (type) == VECTOR_TYPE;
+ 	  unsigned int final_prec = TYPE_PRECISION (type);
+ 	  int final_unsignedp = TYPE_UNSIGNED (type);
  
-   if (VECTOR_MODE_P (to_mode) || VECTOR_MODE_P (from_mode))
-     {
--      gcc_assert (GET_MODE_BITSIZE (from_mode) == GET_MODE_BITSIZE (to_mode));
-+      if (GET_MODE_BITSIZE (from_mode) != GET_MODE_BITSIZE (to_mode))
-+        {
-+          if (VECTOR_MODE_P (from_mode))
-+            {
-+              enum machine_mode new_mode;
-+
-+              new_mode = mode_for_size (GET_MODE_BITSIZE (from_mode),
-+                                        MODE_INT, 0);
-+              from = simplify_gen_subreg (new_mode, from, from_mode, 0);
-+            }
-+          if (VECTOR_MODE_P (to_mode))
-+            {
-+              enum machine_mode new_mode;
-+
-+              new_mode = mode_for_size (GET_MODE_BITSIZE (to_mode),
-+                                        MODE_INT, 0);
-+              to = simplify_gen_subreg (new_mode, to, to_mode, 0);
-+            }
-+          convert_move (to, from, unsignedp);
-+          return;
-+        }
+@@ -6904,12 +6907,15 @@ fold (tree expr)
+ 	     since then we sometimes need the inner conversion.  Likewise if
+ 	     the outer has a precision not equal to the size of its mode.  */
+ 	  if ((((inter_int || inter_ptr) && (inside_int || inside_ptr))
+-	       || (inter_float && inside_float))
++	       || (inter_float && inside_float)
++	       || (inter_vec && inside_vec))
+ 	      && inter_prec >= inside_prec
+-	      && (inter_float || inter_unsignedp == inside_unsignedp)
++	      && (inter_float || inter_vec
++		  || inter_unsignedp == inside_unsignedp)
+ 	      && ! (final_prec != GET_MODE_BITSIZE (TYPE_MODE (type))
+ 		    && TYPE_MODE (type) == TYPE_MODE (inter_type))
+-	      && ! final_ptr)
++	      && ! final_ptr
++	      && (! final_vec || inter_prec == inside_prec))
+ 	    return fold (build1 (code, type,
+ 				 TREE_OPERAND (TREE_OPERAND (t, 0), 0)));
  
-       if (VECTOR_MODE_P (to_mode))
- 	from = simplify_gen_subreg (to_mode, from, GET_MODE (from), 0);
---- gcc/testsuite/gcc.c-torture/execute/20050113-1.c.jj	2005-01-13 15:51:09.194383356 +0100
-+++ gcc/testsuite/gcc.c-torture/execute/20050113-1.c	2005-01-13 15:37:22.000000000 +0100
-@@ -0,0 +1,56 @@
+@@ -6923,6 +6929,7 @@ fold (tree expr)
+ 
+ 	  /* Two conversions in a row are not needed unless:
+ 	     - some conversion is floating-point (overstrict for now), or
++	     - some conversion is a vector (overstrict for now), or
+ 	     - the intermediate type is narrower than both initial and
+ 	       final, or
+ 	     - the intermediate type and innermost type differ in signedness,
+@@ -6932,6 +6939,7 @@ fold (tree expr)
+ 	     - the final type is a pointer type and the precisions of the
+ 	       initial and intermediate types differ.  */
+ 	  if (! inside_float && ! inter_float && ! final_float
++	      && ! inside_vec && ! inter_vec && ! final_vec
+ 	      && (inter_prec > inside_prec || inter_prec > final_prec)
+ 	      && ! (inside_int && inter_int
+ 		    && inter_unsignedp != inside_unsignedp
+--- gcc/testsuite/gcc.c-torture/execute/20050316-2.c.jj	2005-03-16 10:49:04.602767006 +0100
++++ gcc/testsuite/gcc.c-torture/execute/20050316-2.c	2005-03-16 10:46:39.000000000 +0100
+@@ -0,0 +1,49 @@
++extern void abort (void);
++
++typedef int V2SI __attribute__ ((vector_size (8)));
++typedef unsigned int V2USI __attribute__ ((vector_size (8)));
++typedef float V2SF __attribute__ ((vector_size (8)));
++typedef short V2HI __attribute__ ((vector_size (4)));
++typedef unsigned int V2UHI __attribute__ ((vector_size (4)));
++
++long long
++test1 (V2SF x)
++{
++  return (long long) (V2SI) x;
++}
++
++long long
++test2 (V2SF x)
++{
++  return (long long) x;
++}
++
++long long
++test3 (V2SI x)
++{
++  return (long long) (V2SF) x;
++}
++
++int
++main (void)
++{
++  if (sizeof (short) != 2 || sizeof (int) != 4 || sizeof (long long) != 8)
++    return 0;
++
++  V2SF x = { 2.0, 2.0 };
++  union { long long l; float f[2]; int i[2]; } u;
++  u.l = test1 (x);
++  if (u.f[0] != 2.0 || u.f[1] != 2.0)
++    abort ();
++
++  V2SF y = { 6.0, 6.0 };
++  u.l = test2 (y);
++  if (u.f[0] != 6.0 || u.f[1] != 6.0)
++    abort ();
++
++  V2SI z = { 4, 4 };
++  u.l = test3 (z);
++  if (u.i[0] != 4 || u.i[1] != 4)
++    abort ();
++  return 0;
++}
+--- gcc/testsuite/gcc.c-torture/execute/20050316-1.c.jj	2005-03-16 10:48:52.510920288 +0100
++++ gcc/testsuite/gcc.c-torture/execute/20050316-1.c	2005-03-16 10:28:44.000000000 +0100
+@@ -0,0 +1,69 @@
 +/* PR rtl-optimization/16104 */
 +
 +extern void abort (void);
 +
 +typedef int V2SI __attribute__ ((vector_size (8)));
++typedef unsigned int V2USI __attribute__ ((vector_size (8)));
 +typedef short V2HI __attribute__ ((vector_size (4)));
++typedef unsigned int V2UHI __attribute__ ((vector_size (4)));
 +
 +int
 +test1 (void)
@@ -71,12 +154,134 @@
 +  return (V2SI) (long long) (int) x;
 +}
 +
++V2SI
++test5 (V2USI x)
++{
++  return (V2SI) x;
++}
++
++int
++main (void)
++{
++  if (sizeof (short) != 2 || sizeof (int) != 4 || sizeof (long long) != 8)
++    return 0;
++
++  if (test1 () != 0)
++    abort ();
++
++  V2SI x = { 2, 2 };
++  if (test2 (x) != 2)
++    abort ();
++
++  union { V2SI x; int y[2]; V2USI z; long long l; } u;
++  u.x = test3 ();
++  if (u.y[0] != 0 || u.y[1] != 0)
++    abort ();
++
++  V2HI y = { 4, 4 };
++  union { V2SI x; long long y; } v;
++  v.x = test4 (y);
++  if (v.y != 0x40004)
++    abort ();
++
++  V2USI z = { 6, 6 };
++  u.x = test5 (z);
++  if (u.y[0] != 6 || u.y[1] != 6)
++    abort ();
++  return 0;
++}
+--- gcc/testsuite/gcc.c-torture/execute/20050316-3.c.jj	2005-03-16 10:49:19.461121066 +0100
++++ gcc/testsuite/gcc.c-torture/execute/20050316-3.c	2005-03-16 10:30:06.000000000 +0100
+@@ -0,0 +1,36 @@
++extern void abort (void);
++
++typedef int V2SI __attribute__ ((vector_size (8)));
++typedef unsigned int V2USI __attribute__ ((vector_size (8)));
++typedef short V2HI __attribute__ ((vector_size (4)));
++typedef unsigned int V2UHI __attribute__ ((vector_size (4)));
++
++V2USI
++test1 (V2SI x)
++{
++  return (V2USI) (V2SI) (long long) x;
++}
++
++long long
++test2 (V2SI x)
++{
++  return (long long) (V2USI) (V2SI) (long long) x;
++}
++
 +int
 +main (void)
 +{
 +  if (sizeof (short) != 2 || sizeof (int) != 4 || sizeof (long long) != 8)
 +    return 0;
 +
++  union { V2SI x; int y[2]; V2USI z; long long l; } u;
++  V2SI a = { -3, -3 };
++  u.z = test1 (a);
++  if (u.y[0] != -3 || u.y[1] != -3)
++    abort ();
++
++  u.l = test2 (a);
++  if (u.y[0] != -3 || u.y[1] != -3)
++    abort ();
++  return 0;
++}
+--- gcc/testsuite/gcc.dg/torture/pr16104-1.c.jj	2005-03-16 10:55:22.351496535 +0100
++++ gcc/testsuite/gcc.dg/torture/pr16104-1.c	2005-03-16 10:55:13.746029061 +0100
+@@ -0,0 +1,88 @@
++/* PR rtl-optimization/16104 */
++/* { dg-do run { target i?86-*-* x86_64-*-* } } */
++/* { dg-options "-msse2" } */
++
++#include "../i386-cpuid.h"
++
++extern void abort (void);
++
++typedef int V2SI __attribute__ ((vector_size (8)));
++typedef unsigned int V2USI __attribute__ ((vector_size (8)));
++typedef short V2HI __attribute__ ((vector_size (4)));
++typedef unsigned int V2UHI __attribute__ ((vector_size (4)));
++
++int
++test1 (void)
++{
++  return (long long) (V2SI) 0LL;
++}
++
++int
++test2 (V2SI x)
++{
++  return (long long) x;
++}
++
++V2SI
++test3 (void)
++{
++  return (V2SI) (long long) (int) (V2HI) 0;
++}
++
++V2SI
++test4 (V2HI x)
++{
++  return (V2SI) (long long) (int) x;
++}
++
++V2SI
++test5 (V2USI x)
++{
++  return (V2SI) x;
++}
++
++int
++__attribute__ ((noinline))
++do_test (void)
++{
++  if (sizeof (short) != 2 || sizeof (int) != 4 || sizeof (long long) != 8)
++    return 0;
++
 +  if (test1 () != 0)
 +    abort ();
 +
@@ -84,7 +289,7 @@
 +  if (test2 (x) != 2)
 +    abort ();
 +
-+  union { V2SI x; int y[2]; } u;
++  union { V2SI x; int y[2]; V2USI z; long long l; } u;
 +  u.x = test3 ();
 +  if (u.y[0] != 0 || u.y[1] != 0)
 +    abort ();
@@ -94,5 +299,24 @@
 +  v.x = test4 (y);
 +  if (v.y != 0x40004)
 +    abort ();
++
++  V2USI z = { 6, 6 };
++  u.x = test5 (z);
++  if (u.y[0] != 6 || u.y[1] != 6)
++    abort ();
 +  return 0;
 +}
++
++int
++main (void)
++{
++  unsigned long cpu_facilities;
++
++  cpu_facilities = i386_cpuid ();
++
++  if ((cpu_facilities & (bit_MMX | bit_SSE | bit_CMOV | bit_SSE2))
++      != (bit_MMX | bit_SSE | bit_CMOV | bit_SSE2))
++    return 0;
++
++  return do_test ();
++}


Index: gcc4.spec
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc4.spec,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- gcc4.spec	15 Mar 2005 17:52:56 -0000	1.16
+++ gcc4.spec	21 Mar 2005 12:20:28 -0000	1.17
@@ -1,6 +1,6 @@
-%define DATE 20050315
+%define DATE 20050321
 %define gcc_version 4.0.0
-%define gcc_release 0.34
+%define gcc_release 0.35
 %define _unpackaged_files_terminate_build 0
 %define multilib_64_archs sparc64 ppc64 s390x x86_64
 %ifarch %{ix86} alpha ia64 x86_64 s390
@@ -77,13 +77,12 @@
 Patch5: gcc4-pr16104.patch
 Patch6: gcc4-pr19769-workaround.patch
 Patch7: gcc4-java-nomulti.patch
-Patch8: gcc4-libjawt.patch
-Patch9: gcc4-c++-pr19317.patch
-Patch10: gcc4-rh150150.patch
-Patch11: gcc4-pr20126.patch
-Patch12: gcc4-pr20249.patch
-Patch13: gcc4-c++-pr20381.patch
-Patch14: gcc4-ada-makej.patch
+Patch8: gcc4-c++-pr19317.patch
+Patch9: gcc4-pr20126.patch
+Patch10: gcc4-pr20249.patch
+Patch11: gcc4-c++-pr20381.patch
+Patch12: gcc4-pr20290.patch
+Patch13: gcc4-rh151466.patch
 
 %define _gnu %{nil}
 %ifarch sparc
@@ -97,11 +96,11 @@
 %endif
 
 %description
-The gcc package contains the GNU Compiler Collection version 3.4.
+The gcc package contains the GNU Compiler Collection version 4.0.
 You'll need this package in order to compile C code.
 
 %package -n libgcc
-Summary: GCC version 3.4 shared support library
+Summary: GCC version 4.0 shared support library
 Group: System Environment/Libraries
 Autoreq: false
 
@@ -113,8 +112,8 @@
 Summary: C++ support for GCC
 Group: Development/Languages
 Requires: gcc = %{version}-%{release}
-Requires: libstdc++ = %{version}
-Requires: libstdc++-devel = %{version}
+Requires: libstdc++ = %{version}-%{release}
+Requires: libstdc++-devel = %{version}-%{release}
 Obsoletes: gcc3-c++
 Obsoletes: gcc34-c++
 Obsoletes: gcc35-c++
@@ -180,6 +179,7 @@
 Group: Development/Languages
 Requires: gcc = %{version}-%{release}
 Requires: libgfortran = %{version}-%{release}
+BuildRequires: gmp-devel >= 4.1.2-8
 Prereq: /sbin/install-info
 Obsoletes: gcc3-g77
 Obsoletes: gcc-g77
@@ -226,7 +226,8 @@
 Summary: Java support for GCC
 Group: Development/Languages
 Requires: gcc = %{version}-%{release}
-Requires: libgcj >= %{version}, libgcj-devel >= %{version}, zlib-devel
+Requires: libgcj = %{version}-%{release}
+Requires: libgcj-devel = %{version}-%{release}, zlib-devel
 Obsoletes: gcc3-java
 Obsoletes: gcc34-java
 Obsoletes: gcc35-java
@@ -264,7 +265,7 @@
 %package -n libgcj-devel
 Summary: Libraries for Java development using GCC
 Group: Development/Languages
-Requires: zip >= 2.1, libgcj = %{version}
+Requires: zip >= 2.1, libgcj = %{version}-%{release}
 Obsoletes: libgcj3-devel
 Obsoletes: libgcj34-devel
 Obsoletes: libgcj4-devel
@@ -398,13 +399,10 @@
 %patch5 -p0 -b .pr16104~
 %patch6 -p0 -b .pr19769-workaround~
 %patch7 -p0 -b .java-nomulti~
-%patch8 -p0 -b .libjawt~
-%patch9 -p0 -b .c++-pr19317~
-%patch10 -p0 -b .rh150150~
-%patch11 -p0 -b .pr20126~
-%patch12 -p0 -b .pr20249~
-%patch13 -p0 -b .c++-pr20381~
-%patch14 -p0 -b .ada-makej~
+%patch8 -p0 -b .c++-pr19317~
+%patch9 -p0 -b .pr20126~
+%patch10 -p0 -b .pr20249~
+%patch11 -p0 -b .c++-pr20381~
 
 perl -pi -e 's/4\.0\.0/4.0.0/' gcc/version.c
 perl -pi -e 's/"%{gcc_version}"/"%{gcc_version} \(release\)"/' gcc/version.c
@@ -836,7 +834,7 @@
 	    exit 1;;
   esac
 done
-exec %{_prefix}/bin/gcc $fl ${1+"$@"}
+exec gcc $fl ${1+"$@"}
 EOF
 cat > $RPM_BUILD_ROOT%{_prefix}/bin/c99 <<"EOF"
 #!/bin/sh
@@ -848,7 +846,7 @@
 	    exit 1;;
   esac
 done
-exec %{_prefix}/bin/gcc $fl ${1+"$@"}
+exec gcc $fl ${1+"$@"}
 EOF
 chmod 755 $RPM_BUILD_ROOT%{_prefix}/bin/c?9
 
@@ -1376,6 +1374,21 @@
 %endif
 
 %changelog
+* Mon Mar 21 2005 Jakub Jelinek  <jakub at redhat.com> 4.0.0-0.35
+- update from CVS
+  - PRs ada/18727, ada/19140, ada/19408, ada/19900, ada/20255, ada/20344,
+	c++/20240, c++/20333, fortran/18525, fortran/18827, java/20522,
+	libfortran/20257, libfortran/20480, libgcj/20251, middle-end/15700,
+	middle-end/20225, middle-end/20493, target/18251, target/18380,
+	target/18551, tree-optimization/17454, tree-optimization/20474
+- replace 3.4 with 4.0 in gcc %%description and libgcc Summary (#151327)
+- don't hardcode full path to gcc in c89 and c99 wrapper scripts (#151620)
+- fix loop optimizer with loops that after tree optimization are entered
+  after the loop body (Alexandre Oliva, PR rtl-optimization/20290, #150020)
+- fix handling of jump tables at the end of scope with -g1 (#151466)
+- BuildRequire gmp-devel with mpfr support
+- tighten up rpm requires between subpackages
+
 * Tue Mar 15 2005 Jakub Jelinek  <jakub at redhat.com> 4.0.0-0.34
 - update from gcc-4_0-branch
   - PRs c++/20157, c++/20280, fortran/16907, fortran/20323, fortran/20361,


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/sources,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -r1.77 -r1.78
--- sources	15 Mar 2005 17:23:22 -0000	1.77
+++ sources	21 Mar 2005 12:20:28 -0000	1.78
@@ -1 +1 @@
-60ef6c1253ff90cfb165ec69bac0c178  gcc-4.0.0-20050315.tar.bz2
+0b8ffbf81cb3094bf62d25d9f13866f2  gcc-4.0.0-20050321.tar.bz2


--- gcc4-ada-makej.patch DELETED ---


--- gcc4-libjawt.patch DELETED ---


--- gcc4-rh150150.patch DELETED ---




More information about the fedora-cvs-commits mailing list