rpms/gcc/devel gcc45-pr44942.patch, NONE, 1.1 .cvsignore, 1.320, 1.321 gcc.spec, 1.103, 1.104 sources, 1.325, 1.326

Jakub Jelinek jakub at fedoraproject.org
Fri Jul 16 10:29:01 UTC 2010


Author: jakub

Update of /cvs/pkgs/rpms/gcc/devel
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv28145

Modified Files:
	.cvsignore gcc.spec sources 
Added Files:
	gcc45-pr44942.patch 
Log Message:
4.5.0-3

gcc45-pr44942.patch:
 config/i386/i386-protos.h                 |    4 -
 config/i386/i386.c                        |   15 +++---
 testsuite/gcc.c-torture/execute/pr44942.c |   70 ++++++++++++++++++++++++++++++
 testsuite/gcc.target/i386/pr44942.c       |   44 ++++++++++++++++++
 4 files changed, 125 insertions(+), 8 deletions(-)

--- NEW FILE gcc45-pr44942.patch ---
2010-07-16  Jakub Jelinek  <jakub at redhat.com>

	PR target/44942
	* config/i386/i386-protos.h (ix86_function_arg_boundary): Change second
	argument to const_tree.
	* config/i386/i386.c (function_arg_advance): If padding needs to be
	inserted before argument, increment cum->words by number of padding
	words as well.
	(contains_aligned_value_p): Change argument to const_tree.
	(ix86_function_arg_boundary): Change second argument to const_tree.

	* gcc.c-torture/execute/pr44942.c: New test.
	* gcc.target/i386/pr44942.c: New test.

--- gcc/config/i386/i386-protos.h.jj	2010-07-13 15:56:31.000000000 +0200
+++ gcc/config/i386/i386-protos.h	2010-07-15 12:45:01.000000000 +0200
@@ -137,8 +137,8 @@ extern enum machine_mode ix86_fp_compare
 extern rtx ix86_libcall_value (enum machine_mode);
 extern bool ix86_function_value_regno_p (int);
 extern bool ix86_function_arg_regno_p (int);
-extern int ix86_function_arg_boundary (enum machine_mode, tree);
-extern bool ix86_sol10_return_in_memory (const_tree,const_tree);
+extern int ix86_function_arg_boundary (enum machine_mode, const_tree);
+extern bool ix86_sol10_return_in_memory (const_tree, const_tree);
 extern rtx ix86_force_to_memory (enum machine_mode, rtx);
 extern void ix86_free_from_memory (enum machine_mode);
 extern enum calling_abi ix86_cfun_abi (void);
--- gcc/config/i386/i386.c.jj	2010-07-13 15:56:31.000000000 +0200
+++ gcc/config/i386/i386.c	2010-07-15 12:44:31.000000000 +0200
@@ -6157,9 +6157,8 @@ function_arg_advance_64 (CUMULATIVE_ARGS
   if (!named && VALID_AVX256_REG_MODE (mode))
     return;
 
-  if (!examine_argument (mode, type, 0, &int_nregs, &sse_nregs))
-    cum->words += words;
-  else if (sse_nregs <= cum->sse_nregs && int_nregs <= cum->nregs)
+  if (examine_argument (mode, type, 0, &int_nregs, &sse_nregs)
+      && sse_nregs <= cum->sse_nregs && int_nregs <= cum->nregs)
     {
       cum->nregs -= int_nregs;
       cum->sse_nregs -= sse_nregs;
@@ -6167,7 +6166,11 @@ function_arg_advance_64 (CUMULATIVE_ARGS
       cum->sse_regno += sse_nregs;
     }
   else
-    cum->words += words;
+    {
+      int align = ix86_function_arg_boundary (mode, type) / BITS_PER_WORD;
+      cum->words = (cum->words + align - 1) & ~(align - 1);
+      cum->words += words;
+    }
 }
 
 static void
@@ -6508,7 +6511,7 @@ ix86_pass_by_reference (CUMULATIVE_ARGS 
 /* Return true when TYPE should be 128bit aligned for 32bit argument passing
    ABI.  */
 static bool
-contains_aligned_value_p (tree type)
+contains_aligned_value_p (const_tree type)
 {
   enum machine_mode mode = TYPE_MODE (type);
   if (((TARGET_SSE && SSE_REG_MODE_P (mode))
@@ -6558,7 +6561,7 @@ contains_aligned_value_p (tree type)
    specified mode and type.  */
 
 int
-ix86_function_arg_boundary (enum machine_mode mode, tree type)
+ix86_function_arg_boundary (enum machine_mode mode, const_tree type)
 {
   int align;
   if (type)
--- gcc/testsuite/gcc.c-torture/execute/pr44942.c.jj	2010-07-15 13:41:28.000000000 +0200
+++ gcc/testsuite/gcc.c-torture/execute/pr44942.c	2010-07-15 13:46:40.000000000 +0200
@@ -0,0 +1,70 @@
+/* PR target/44942 */
+
+#include <stdarg.h>
+
+void
+test1 (int a, int b, int c, int d, int e, int f, int g, long double h, ...)
+{
+  int i;
+  va_list ap;
+
+  va_start (ap, h);
+  i = va_arg (ap, int);
+  if (i != 1234)
+    __builtin_abort ();
+  va_end (ap);
+}
+
+void
+test2 (int a, int b, int c, int d, int e, int f, int g, long double h, int i,
+       long double j, int k, long double l, int m, long double n, ...)
+{
+  int o;
+  va_list ap;
+
+  va_start (ap, n);
+  o = va_arg (ap, int);
+  if (o != 1234)
+    __builtin_abort ();
+  va_end (ap);
+}
+
+void
+test3 (double a, double b, double c, double d, double e, double f,
+       double g, long double h, ...)
+{
+  double i;
+  va_list ap;
+
+  va_start (ap, h);
+  i = va_arg (ap, double);
+  if (i != 1234.0)
+    __builtin_abort ();
+  va_end (ap);
+}
+
+void
+test4 (double a, double b, double c, double d, double e, double f, double g,
+       long double h, double i, long double j, double k, long double l,
+       double m, long double n, ...)
+{
+  double o;
+  va_list ap;
+
+  va_start (ap, n);
+  o = va_arg (ap, double);
+  if (o != 1234.0)
+    __builtin_abort ();
+  va_end (ap);
+}
+
+int
+main ()
+{
+  test1 (0, 0, 0, 0, 0, 0, 0, 0.0L, 1234);
+  test2 (0, 0, 0, 0, 0, 0, 0, 0.0L, 0, 0.0L, 0, 0.0L, 0, 0.0L, 1234);
+  test3 (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0L, 1234.0);
+  test4 (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0L, 0.0, 0.0L,
+	 0.0, 0.0L, 0.0, 0.0L, 1234.0);
+  return 0;
+}
--- gcc/testsuite/gcc.target/i386/pr44942.c.jj	2010-07-15 13:52:37.000000000 +0200
+++ gcc/testsuite/gcc.target/i386/pr44942.c	2010-07-15 13:53:24.000000000 +0200
@@ -0,0 +1,44 @@
+/* PR target/44942 */
+/* { dg-do run { target lp64 } } */
+
+#include <stdarg.h>
+#include <emmintrin.h>
+
+void
+test1 (double a, double b, double c, double d, double e, double f,
+       double g, __m128d h, ...)
+{
+  double i;
+  va_list ap;
+
+  va_start (ap, h);
+  i = va_arg (ap, double);
+  if (i != 1234.0)
+    __builtin_abort ();
+  va_end (ap);
+}
+
+void
+test2 (double a, double b, double c, double d, double e, double f, double g,
+       __m128d h, double i, __m128d j, double k, __m128d l,
+       double m, __m128d n, ...)
+{
+  double o;
+  va_list ap;
+
+  va_start (ap, n);
+  o = va_arg (ap, double);
+  if (o != 1234.0)
+    __builtin_abort ();
+  va_end (ap);
+}
+
+int
+main ()
+{
+  __m128d m = _mm_set1_pd (7.0);
+  test1 (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, m, 1234.0);
+  test2 (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, m, 0.0, m,
+	 0.0, m, 0.0, m, 1234.0);
+  return 0;
+}


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/.cvsignore,v
retrieving revision 1.320
retrieving revision 1.321
diff -u -p -r1.320 -r1.321
--- .cvsignore	9 Jul 2010 08:48:52 -0000	1.320
+++ .cvsignore	16 Jul 2010 10:29:01 -0000	1.321
@@ -1,2 +1,2 @@
 fastjar-0.97.tar.gz
-gcc-4.5.0-20100709.tar.bz2
+gcc-4.5.0-20100716.tar.bz2


Index: gcc.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/gcc.spec,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -p -r1.103 -r1.104
--- gcc.spec	9 Jul 2010 11:25:38 -0000	1.103
+++ gcc.spec	16 Jul 2010 10:29:01 -0000	1.104
@@ -1,9 +1,9 @@
-%global DATE 20100709
-%global SVNREV 161987
+%global DATE 20100716
+%global SVNREV 162258
 %global gcc_version 4.5.0
 # Note, gcc_release must be integer, if you want to add suffixes to
 # %{release}, append them after %{gcc_release} on Release: line.
-%global gcc_release 2
+%global gcc_release 3
 %global _unpackaged_files_terminate_build 0
 %global multilib_64_archs sparc64 ppc64 s390x x86_64
 %ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
@@ -158,6 +158,7 @@ Patch14: gcc45-pr38757.patch
 Patch15: gcc45-libstdc++-docs.patch
 Patch17: gcc45-no-add-needed.patch
 Patch18: gcc45-pr44542.patch
+Patch19: gcc45-pr44942.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 Patch1001: fastjar-0.97-len1.patch
@@ -489,6 +490,7 @@ GNAT is a GNU Ada 95 front-end to GCC. T
 %endif
 %patch17 -p0 -b .no-add-needed~
 %patch18 -p0 -b .pr44542~
+%patch19 -p0 -b .pr44942~
 
 # This testcase doesn't compile.
 rm libjava/testsuite/libjava.lang/PR35020*
@@ -1960,7 +1962,15 @@ fi
 %endif
 
 %changelog
-* Fri Jun  9 2010 Jakub Jelinek <jakub at redhat.com> 4.5.0-2
+* Fri Jul 16 2010 Jakub Jelinek <jakub at redhat.com> 4.5.0-3
+- update from gcc-4_5-branch
+  - PRs ada/43731, fortran/44773, pch/14940, testsuite/44325
+  - fix vectorizer (#614375, #614814, PR tree-optimization/44886)
+- fix fortran CHARACTER type SELECT CASE handling (PR fortran/40206)
+- fix inline-asm check for auto-inc-dec operands (PR testsuite/44701)
+- fix va_start on x86_64 (PR target/44942)
+
+* Fri Jul  9 2010 Jakub Jelinek <jakub at redhat.com> 4.5.0-2
 - update from gcc-4_5-branch
   - PRs c++/44703, fortran/44847, middle-end/41355, middle-end/44828,
 	target/43888, tree-optimization/44284
@@ -1968,5 +1978,5 @@ fi
 - fix a multilib issue with *.py[oc] files in libstdc++ (#612742)
 - fix up libgcj_bc.so
 
-* Wed Jun  7 2010 Jakub Jelinek <jakub at redhat.com> 4.5.0-1
+* Wed Jul  7 2010 Jakub Jelinek <jakub at redhat.com> 4.5.0-1
 - initial 4.5 package, using newly created redhat/gcc-4_5-branch


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/sources,v
retrieving revision 1.325
retrieving revision 1.326
diff -u -p -r1.325 -r1.326
--- sources	9 Jul 2010 08:48:53 -0000	1.325
+++ sources	16 Jul 2010 10:29:01 -0000	1.326
@@ -1,2 +1,2 @@
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
-8b8d91274293d271a556f7b49666a35f  gcc-4.5.0-20100709.tar.bz2
+dc1cae2fe66fc33f29edae7aca29da65  gcc-4.5.0-20100716.tar.bz2



More information about the scm-commits mailing list