From 2e32ee04202fda47a5a4baee190ea6d45d8812ec Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 27 Apr 2010 19:29:04 +0000 Subject: [PATCH] 4.4.3-19 --- .cvsignore | 2 +- gcc.spec | 19 ++- gcc44-pr43893.patch | 246 ++++++++++++++++++++++++++++++++++ gcc44-unwind-debug-hook.patch | 9 +- import.log | 1 + sources | 2 +- 6 files changed, 272 insertions(+), 7 deletions(-) create mode 100644 gcc44-pr43893.patch diff --git a/.cvsignore b/.cvsignore index d5b4e6b..9e9c019 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ fastjar-0.97.tar.gz -gcc-4.4.3-20100422.tar.bz2 +gcc-4.4.3-20100427.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 40c1a88..ffa5a42 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20100422 -%global SVNREV 158631 +%global DATE 20100427 +%global SVNREV 158796 %global gcc_version 4.4.3 # 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 18 +%global gcc_release 19 %global _unpackaged_files_terminate_build 0 %global multilib_64_archs sparc64 ppc64 s390x x86_64 %if 0%{?fedora} >= 13 || 0%{?rhel} >= 6 @@ -176,6 +176,7 @@ Patch17: gcc44-pr38757.patch Patch18: gcc44-libstdc++-docs.patch Patch19: gcc44-ppc64-aixdesc.patch Patch20: gcc44-no-add-needed.patch +Patch21: gcc44-pr43893.patch Patch1000: fastjar-0.97-segfault.patch Patch1001: fastjar-0.97-len1.patch @@ -487,6 +488,7 @@ which are required to compile with the GNAT. %if 0%{?fedora} >= 13 %patch20 -p0 -b .no-add-needed~ %endif +%patch21 -p0 -b .pr43893~ # This testcase doesn't compile. rm libjava/testsuite/libjava.lang/PR35020* @@ -1876,6 +1878,17 @@ fi %doc rpm.doc/changelogs/libmudflap/ChangeLog* %changelog +* Tue Apr 27 2010 Jakub Jelinek 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 4.4.3-18 - update from gcc-4_4-branch - PRs fortran/43339, fortran/43836, libgcj/40860, libgomp/43569, diff --git a/gcc44-pr43893.patch b/gcc44-pr43893.patch new file mode 100644 index 0000000..e255896 --- /dev/null +++ b/gcc44-pr43893.patch @@ -0,0 +1,246 @@ +2010-04-26 Jakub Jelinek + + 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 , + Diego Novillo . + +@@ -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 ++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 ++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 ++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 ++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 (); ++ c = 0; ++#pragma omp parallel for reduction(+:c) ++ for (i = 0; i <= 0; i++) ++ c++; ++ if (c != 1) ++ abort (); ++ f2 (); ++ c = 0; ++#pragma omp parallel for reduction(+:c) ++ for (j = - __INT_MAX__ - 1; j < - __INT_MAX__; j++) ++ c++; ++ if (c != 1) ++ abort (); ++ f1 (); ++ c = 0; ++#pragma omp parallel for reduction(+:c) ++ for (j = - __INT_MAX__ - 1; j <= - __INT_MAX__ - 1; j++) ++ c++; ++ if (c != 1) ++ abort (); ++ f2 (); ++ 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 (); ++ 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 (); ++ c = 0; ++#pragma omp parallel for reduction(+:c) ++ for (j = __INT_MAX__; j > __INT_MAX__ - 1; j--) ++ c++; ++ if (c != 1) ++ abort (); ++ f3 (); ++ c = 0; ++#pragma omp parallel for reduction(+:c) ++ for (j = __INT_MAX__; j >= __INT_MAX__; j--) ++ c++; ++ if (c != 1) ++ abort (); ++ f4 (); ++ return 0; ++} diff --git a/gcc44-unwind-debug-hook.patch b/gcc44-unwind-debug-hook.patch index e084be5..9b7c59e 100644 --- a/gcc44-unwind-debug-hook.patch +++ b/gcc44-unwind-debug-hook.patch @@ -1,3 +1,7 @@ +2010-04-27 Jakub Jelinek + + * unwind-dw2.c (_Unwind_DebugHook): Add used attribute. + 2009-05-27 Tom Tromey * unwind-dw2.c (_Unwind_DebugHook): New function. @@ -5,11 +9,12 @@ --- gcc/unwind-dw2.c (revision 147933) +++ 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); } -+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 + for a debugger to intercept exceptions. CFA is the CFA of the diff --git a/import.log b/import.log index 161a233..da225ac 100644 --- a/import.log +++ b/import.log @@ -18,3 +18,4 @@ gcc-4_4_3-14_fc13:F-13:gcc-4.4.3-14.fc13.src.rpm:1270134283 gcc-4_4_3-15_fc13:F-13:gcc-4.4.3-15.fc13.src.rpm:1270645785 gcc-4_4_3-16_fc13:F-13:gcc-4.4.3-16.fc13.src.rpm:1270804069 gcc-4_4_3-18_fc13:F-13:gcc-4.4.3-18.fc13.src.rpm:1271928249 +gcc-4_4_3-19_fc13:F-13:gcc-4.4.3-19.fc13.src.rpm:1272396517 diff --git a/sources b/sources index 9346677..1fe86a1 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz -02bd520f3420dff4702ad51aaae67278 gcc-4.4.3-20100422.tar.bz2 +21ad76ccb34ea46212625ab031ecfb41 gcc-4.4.3-20100427.tar.bz2