This commit is contained in:
Jakub Jelinek 2010-04-27 19:29:26 +00:00
parent e332e73999
commit 23c1e2d22a
6 changed files with 272 additions and 7 deletions

View File

@ -1,2 +1,2 @@
fastjar-0.97.tar.gz fastjar-0.97.tar.gz
gcc-4.4.3-20100422.tar.bz2 gcc-4.4.3-20100427.tar.bz2

View File

@ -1,9 +1,9 @@
%global DATE 20100422 %global DATE 20100427
%global SVNREV 158631 %global SVNREV 158796
%global gcc_version 4.4.3 %global gcc_version 4.4.3
# Note, gcc_release must be integer, if you want to add suffixes to # Note, gcc_release must be integer, if you want to add suffixes to
# %{release}, append them after %{gcc_release} on Release: line. # %{release}, append them after %{gcc_release} on Release: line.
%global gcc_release 18 %global gcc_release 19
%global _unpackaged_files_terminate_build 0 %global _unpackaged_files_terminate_build 0
%global multilib_64_archs sparc64 ppc64 s390x x86_64 %global multilib_64_archs sparc64 ppc64 s390x x86_64
%if 0%{?fedora} >= 13 || 0%{?rhel} >= 6 %if 0%{?fedora} >= 13 || 0%{?rhel} >= 6
@ -176,6 +176,7 @@ Patch17: gcc44-pr38757.patch
Patch18: gcc44-libstdc++-docs.patch Patch18: gcc44-libstdc++-docs.patch
Patch19: gcc44-ppc64-aixdesc.patch Patch19: gcc44-ppc64-aixdesc.patch
Patch20: gcc44-no-add-needed.patch Patch20: gcc44-no-add-needed.patch
Patch21: gcc44-pr43893.patch
Patch1000: fastjar-0.97-segfault.patch Patch1000: fastjar-0.97-segfault.patch
Patch1001: fastjar-0.97-len1.patch Patch1001: fastjar-0.97-len1.patch
@ -487,6 +488,7 @@ which are required to compile with the GNAT.
%if 0%{?fedora} >= 13 %if 0%{?fedora} >= 13
%patch20 -p0 -b .no-add-needed~ %patch20 -p0 -b .no-add-needed~
%endif %endif
%patch21 -p0 -b .pr43893~
# This testcase doesn't compile. # This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020* rm libjava/testsuite/libjava.lang/PR35020*
@ -1876,6 +1878,17 @@ fi
%doc rpm.doc/changelogs/libmudflap/ChangeLog* %doc rpm.doc/changelogs/libmudflap/ChangeLog*
%changelog %changelog
* Tue Apr 27 2010 Jakub Jelinek <jakub@redhat.com> 4.4.3-19
- Power7 backports (#584993, #585005)
- PRs tree-optimization/43544, target/41787, target/43154, middle-end/42431,
rtl-optimization/43413
- add @GCC_4.5.0 symbols to libgcc_s
- PRs target/43383, other/25232
- force DW_CFA_def_cfa instead of DW_CFA_def_cfa_{register,offset{,_sf}}
after DW_CFA_def_cfa_expression
- make sure _Unwind_DebugHook uses standard calling convention
- #pragma omp for fix (PR c/43893)
* Thu Apr 22 2010 Jakub Jelinek <jakub@redhat.com> 4.4.3-18 * Thu Apr 22 2010 Jakub Jelinek <jakub@redhat.com> 4.4.3-18
- update from gcc-4_4-branch - update from gcc-4_4-branch
- PRs fortran/43339, fortran/43836, libgcj/40860, libgomp/43569, - PRs fortran/43339, fortran/43836, libgcj/40860, libgomp/43569,

246
gcc44-pr43893.patch Normal file
View File

@ -0,0 +1,246 @@
2010-04-26 Jakub Jelinek <jakub@redhat.com>
PR c/43893
* c-omp.c (c_finish_omp_for): Handle also EQ_EXPR.
* testsuite/libgomp.c/pr43893.c: New test.
* testsuite/libgomp.c++/pr43893.C: New test.
--- gcc/c-omp.c.jj 2009-12-17 15:02:26.000000000 +0100
+++ gcc/c-omp.c 2010-04-26 18:58:07.000000000 +0200
@@ -1,7 +1,7 @@
/* This file contains routines to construct GNU OpenMP constructs,
called from parsing in the C and C++ front ends.
- Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Contributed by Richard Henderson <rth@redhat.com>,
Diego Novillo <dnovillo@redhat.com>.
@@ -281,7 +281,8 @@ c_finish_omp_for (location_t locus, tree
|| TREE_CODE (cond) == LE_EXPR
|| TREE_CODE (cond) == GT_EXPR
|| TREE_CODE (cond) == GE_EXPR
- || TREE_CODE (cond) == NE_EXPR)
+ || TREE_CODE (cond) == NE_EXPR
+ || TREE_CODE (cond) == EQ_EXPR)
{
tree op0 = TREE_OPERAND (cond, 0);
tree op1 = TREE_OPERAND (cond, 1);
@@ -326,18 +327,21 @@ c_finish_omp_for (location_t locus, tree
cond_ok = true;
}
- if (TREE_CODE (cond) == NE_EXPR)
+ if (TREE_CODE (cond) == NE_EXPR
+ || TREE_CODE (cond) == EQ_EXPR)
{
if (!INTEGRAL_TYPE_P (TREE_TYPE (decl)))
cond_ok = false;
else if (operand_equal_p (TREE_OPERAND (cond, 1),
TYPE_MIN_VALUE (TREE_TYPE (decl)),
0))
- TREE_SET_CODE (cond, GT_EXPR);
+ TREE_SET_CODE (cond, TREE_CODE (cond) == NE_EXPR
+ ? GT_EXPR : LE_EXPR);
else if (operand_equal_p (TREE_OPERAND (cond, 1),
TYPE_MAX_VALUE (TREE_TYPE (decl)),
0))
- TREE_SET_CODE (cond, LT_EXPR);
+ TREE_SET_CODE (cond, TREE_CODE (cond) == NE_EXPR
+ ? LT_EXPR : GE_EXPR);
else
cond_ok = false;
}
--- libgomp/testsuite/libgomp.c/pr43893.c.jj 2010-04-26 19:17:15.000000000 +0200
+++ libgomp/testsuite/libgomp.c/pr43893.c 2010-04-26 19:17:07.000000000 +0200
@@ -0,0 +1,61 @@
+/* PR c/43893 */
+/* { dg-do run } */
+
+extern void abort (void);
+
+int
+main ()
+{
+ int c;
+ unsigned int i;
+ int j;
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (i = 0; i < 1; i++)
+ c++;
+ if (c != 1)
+ abort ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (i = 0; i <= 0; i++)
+ c++;
+ if (c != 1)
+ abort ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (j = - __INT_MAX__ - 1; j < - __INT_MAX__; j++)
+ c++;
+ if (c != 1)
+ abort ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (j = - __INT_MAX__ - 1; j <= - __INT_MAX__ - 1; j++)
+ c++;
+ if (c != 1)
+ abort ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (i = 2U * __INT_MAX__ + 1; i > 2U * __INT_MAX__; i--)
+ c++;
+ if (c != 1)
+ abort ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (i = 2U * __INT_MAX__ + 1; i >= 2U * __INT_MAX__ + 1; i--)
+ c++;
+ if (c != 1)
+ abort ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (j = __INT_MAX__; j > __INT_MAX__ - 1; j--)
+ c++;
+ if (c != 1)
+ abort ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (j = __INT_MAX__; j >= __INT_MAX__; j--)
+ c++;
+ if (c != 1)
+ abort ();
+ return 0;
+}
--- libgomp/testsuite/libgomp.c++/pr43893.C.jj 2010-04-26 19:18:13.000000000 +0200
+++ libgomp/testsuite/libgomp.c++/pr43893.C 2010-04-26 19:25:33.000000000 +0200
@@ -0,0 +1,125 @@
+// PR c/43893
+// { dg-do run }
+
+extern "C" void abort ();
+
+template <typename T, T M, T N>
+void
+f1 ()
+{
+ int c;
+ T i;
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (i = M; i < N; i++)
+ c++;
+ if (c != 1)
+ abort ();
+}
+
+template <typename T, T M, T N>
+void
+f2 ()
+{
+ int c;
+ T i;
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (i = M; i <= N; i++)
+ c++;
+ if (c != 1)
+ abort ();
+}
+
+template <typename T, T M, T N>
+void
+f3 ()
+{
+ int c;
+ T i;
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (i = M; i > N; i--)
+ c++;
+ if (c != 1)
+ abort ();
+}
+
+template <typename T, T M, T N>
+void
+f4 ()
+{
+ int c;
+ T i;
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (i = M; i >= N; i--)
+ c++;
+ if (c != 1)
+ abort ();
+}
+
+int
+main ()
+{
+ int c;
+ unsigned int i;
+ int j;
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (i = 0; i < 1; i++)
+ c++;
+ if (c != 1)
+ abort ();
+ f1 <unsigned int, 0, 1> ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (i = 0; i <= 0; i++)
+ c++;
+ if (c != 1)
+ abort ();
+ f2 <unsigned int, 0, 0> ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (j = - __INT_MAX__ - 1; j < - __INT_MAX__; j++)
+ c++;
+ if (c != 1)
+ abort ();
+ f1 <int, (- __INT_MAX__ - 1), (- __INT_MAX__)> ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (j = - __INT_MAX__ - 1; j <= - __INT_MAX__ - 1; j++)
+ c++;
+ if (c != 1)
+ abort ();
+ f2 <int, (- __INT_MAX__ - 1), (- __INT_MAX__ - 1)> ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (i = 2U * __INT_MAX__ + 1; i > 2U * __INT_MAX__; i--)
+ c++;
+ if (c != 1)
+ abort ();
+ f3 <unsigned int, (2U * __INT_MAX__ + 1), (2U * __INT_MAX__)> ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (i = 2U * __INT_MAX__ + 1; i >= 2U * __INT_MAX__ + 1; i--)
+ c++;
+ if (c != 1)
+ abort ();
+ f4 <unsigned int, (2U * __INT_MAX__ + 1), (2U * __INT_MAX__ + 1)> ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (j = __INT_MAX__; j > __INT_MAX__ - 1; j--)
+ c++;
+ if (c != 1)
+ abort ();
+ f3 <int, __INT_MAX__, (__INT_MAX__ - 1)> ();
+ c = 0;
+#pragma omp parallel for reduction(+:c)
+ for (j = __INT_MAX__; j >= __INT_MAX__; j--)
+ c++;
+ if (c != 1)
+ abort ();
+ f4 <int, __INT_MAX__, __INT_MAX__> ();
+ return 0;
+}

View File

@ -1,3 +1,7 @@
2010-04-27 Jakub Jelinek <jakub@redhat.com>
* unwind-dw2.c (_Unwind_DebugHook): Add used attribute.
2009-05-27 Tom Tromey <tromey@redhat.com> 2009-05-27 Tom Tromey <tromey@redhat.com>
* unwind-dw2.c (_Unwind_DebugHook): New function. * unwind-dw2.c (_Unwind_DebugHook): New function.
@ -5,11 +9,12 @@
--- gcc/unwind-dw2.c (revision 147933) --- gcc/unwind-dw2.c (revision 147933)
+++ gcc/unwind-dw2.c (revision 147934) +++ gcc/unwind-dw2.c (revision 147934)
@@ -1473,18 +1473,31 @@ uw_init_context_1 (struct _Unwind_Contex @@ -1473,18 +1473,32 @@ uw_init_context_1 (struct _Unwind_Contex
context->ra = __builtin_extract_return_addr (outer_ra); context->ra = __builtin_extract_return_addr (outer_ra);
} }
+static void _Unwind_DebugHook (void *, void *) __attribute__ ((__noinline__)); +static void _Unwind_DebugHook (void *, void *)
+ __attribute__ ((__noinline__, __used__));
+ +
+/* This function is called during unwinding. It is intended as a hook +/* This function is called during unwinding. It is intended as a hook
+ for a debugger to intercept exceptions. CFA is the CFA of the + for a debugger to intercept exceptions. CFA is the CFA of the

View File

@ -12,3 +12,4 @@ gcc-4_4_3-14_fc14:HEAD:gcc-4.4.3-14.fc14.src.rpm:1270134314
gcc-4_4_3-15_fc14:HEAD:gcc-4.4.3-15.fc14.src.rpm:1270645816 gcc-4_4_3-15_fc14:HEAD:gcc-4.4.3-15.fc14.src.rpm:1270645816
gcc-4_4_3-16_fc14:HEAD:gcc-4.4.3-16.fc14.src.rpm:1270804085 gcc-4_4_3-16_fc14:HEAD:gcc-4.4.3-16.fc14.src.rpm:1270804085
gcc-4_4_3-18_fc14:HEAD:gcc-4.4.3-18.fc14.src.rpm:1271928364 gcc-4_4_3-18_fc14:HEAD:gcc-4.4.3-18.fc14.src.rpm:1271928364
gcc-4_4_3-19_fc14:HEAD:gcc-4.4.3-19.fc14.src.rpm:1272396546

View File

@ -1,2 +1,2 @@
2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz 2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz
02bd520f3420dff4702ad51aaae67278 gcc-4.4.3-20100422.tar.bz2 21ad76ccb34ea46212625ab031ecfb41 gcc-4.4.3-20100427.tar.bz2