From e2a172b694bdf1d1e789b3208d4895eb9ff43557 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Nov 05 2004 16:26:19 +0000 Subject: 3.2.3-47 --- diff --git a/compat-gcc-32.spec b/compat-gcc-32.spec index a1a83a4..c218785 100644 --- a/compat-gcc-32.spec +++ b/compat-gcc-32.spec @@ -1,7 +1,7 @@ %define LIBSTDCXXDATE 20040818 %define DATE 20040701 %define gcc_version 3.2.3 -%define gcc_release 46.1 +%define gcc_release 47 %define _unpackaged_files_terminate_build 0 %define multilib_64_archs sparc64 ppc64 s390x x86_64 %define build_java 0 @@ -72,6 +72,9 @@ Patch14: gcc32-java-bytecode.patch Patch15: gcc32-pr3581.patch Patch16: gcc32-libstdc++-limits.patch Patch17: gcc32-ppc64-crtsavres.patch +Patch18: gcc32-s390-reload-dup.patch +Patch19: gcc32-ppc-altivec-ap.patch +Patch20: gcc32-ppc-mpowerpc64.patch Patch100: compat-libstdc++33-incdir.patch Patch101: compat-libstdc++33-limits.patch @@ -103,6 +106,7 @@ Requires: compat-libstdc++-33 = %{version} Obsoletes: compat-egcs-c++ Obsoletes: compat-gcc-c++ Obsoletes: compat-libstdc++-devel +AutoProv: false %description c++ This package includes a compatibility C++ compiler with @@ -139,6 +143,9 @@ mv gcc-3.3.4-%{LIBSTDCXXDATE}/libstdc++-v3 libstdc++33-v3 %patch15 -p0 -b .pr3581~ %patch16 -p0 -b .libstdc++-limits~ %patch17 -p0 -b .ppc64-crtsavres~ +%patch18 -p0 -b .s390-reload-dup~ +%patch19 -p0 -b .ppc-altivec-ap~ +%patch20 -p0 -b .ppc-mpowerpc64~ %patch100 -p0 -b .compat-libstdc++33-incdir~ %patch101 -p0 -b .compat-libstdc++33-limits~ @@ -399,7 +406,7 @@ rm -rf $RPM_BUILD_ROOT %{_prefix}/lib/gcc-lib/%{gcc_target_platform}/%{gcc_version}/libgcc_s_32.so %endif %{_prefix}/lib/gcc-lib/%{gcc_target_platform}/%{gcc_version}/specs -%doc gcc/README* gcc/*ChangeLog* +%doc gcc/README* gcc/*ChangeLog* gcc/COPYING* %files c++ %defattr(-,root,root) @@ -449,9 +456,22 @@ rm -rf $RPM_BUILD_ROOT %{_prefix}/%{_lib}/libstdc++.so.5* %changelog +* Fri Nov 5 2004 Jakub Jelinek 3.2.3-47 +- fix a reload bug with match_dup on s390 (Ulrich Weigand, #135715) +- fix ppc32 ICE with -maltivec vector function arguments (Hartmut Penner, + #134368) +- on PPC, disallow -m32 -mpowerpc64 and -m64 -mno-powerpc64 switch + combinations (#132176) +- add COPYING{,.LIB} to %%doc (#137884) +- turn AutoProv for compat-gcc-c++ - otherwise the dummy shared lib + stubs cause the package to provide libstdc++.so.5 etc., although + only compat-libstdc++ really provides them + * Tue Oct 19 2004 Jakub Jelinek 3.2.3-46.1 - make sure %{_prefix}/%{_lib}/libstdc++.so.5 is a symlink (#136356) - include cpp0 binary +- temporarily don't apply the C++ scope nesting patch (#135279, + IT#50411) * Thu Oct 14 2004 Jakub Jelinek 3.2.3-46 - new compatibility package diff --git a/gcc32-ppc-altivec-ap.patch b/gcc32-ppc-altivec-ap.patch new file mode 100644 index 0000000..fa13148 --- /dev/null +++ b/gcc32-ppc-altivec-ap.patch @@ -0,0 +1,37 @@ +2004-03-30 Hartmut Penner + + PR 11591 + * config/rs6000/rs6000.c (rs6000_legitimate_address): + Allow any offset to argument pointer in no-strict case. + +2002-04-16 Jakub Jelinek + + * gcc.dg/altivec-5.c: New test. + +--- gcc/config/rs6000/rs6000.c 25 Mar 2004 17:43:19 -0000 1.616 ++++ gcc/config/rs6000/rs6000.c 30 Mar 2004 08:25:30 -0000 1.617 +@@ -3267,7 +3267,8 @@ rs6000_legitimate_address (enum machine_ + if (! reg_ok_strict + && GET_CODE (x) == PLUS + && GET_CODE (XEXP (x, 0)) == REG +- && XEXP (x, 0) == virtual_stack_vars_rtx ++ && (XEXP (x, 0) == virtual_stack_vars_rtx ++ || XEXP (x, 0) == arg_pointer_rtx) + && GET_CODE (XEXP (x, 1)) == CONST_INT) + return 1; + if (legitimate_offset_address_p (mode, x, reg_ok_strict)) +--- gcc/testsuite/gcc.dg/altivec-5.c.jj 2004-10-25 23:16:31.270583520 +0200 ++++ gcc/testsuite/gcc.dg/altivec-5.c 2004-10-25 23:16:40.327975169 +0200 +@@ -0,0 +1,12 @@ ++/* { dg-do compile { target powerpc*-*-* } } */ ++/* { dg-options "-maltivec -O2 -m32" } */ ++ ++#define vector __attribute__((vector_size(16))) ++ ++void foo (const unsigned long x, ++ vector signed int a, vector signed int b) ++{ ++ unsigned char d[64]; ++ ++ __builtin_altivec_stvewx (b, 0, d); ++} diff --git a/gcc32-ppc-mpowerpc64.patch b/gcc32-ppc-mpowerpc64.patch new file mode 100644 index 0000000..5874d6d --- /dev/null +++ b/gcc32-ppc-mpowerpc64.patch @@ -0,0 +1,24 @@ +2004-10-26 Jakub Jelinek + + * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Disallow + -m32 -mpowerpc64 and -m64 -mno-powerpc64. + +--- gcc/config/rs6000/linux64.h.jj 2004-02-28 12:27:45.000000000 +0100 ++++ gcc/config/rs6000/linux64.h 2004-10-26 12:45:20.399107248 +0200 +@@ -142,6 +142,16 @@ Boston, MA 02111-1307, USA. */ + flag_pic = 0; \ + error ("-m32 and -maddr32 are incompatible"); \ + } \ ++ if (TARGET_32BIT && TARGET_POWERPC64) \ ++ { \ ++ error ("-mpowerpc64 can't be used for 32-bit compilation"); \ ++ target_flags &= ~MASK_POWERPC64; \ ++ } \ ++ else if (TARGET_64BIT && !TARGET_POWERPC64) \ ++ { \ ++ error ("-mno-powerpc64 can't be used for 64-bit compilation"); \ ++ target_flags |= MASK_POWERPC64 | MASK_POWERPC; \ ++ } \ + } \ + while (0) + diff --git a/gcc32-s390-reload-dup.patch b/gcc32-s390-reload-dup.patch new file mode 100644 index 0000000..d751a7c --- /dev/null +++ b/gcc32-s390-reload-dup.patch @@ -0,0 +1,77 @@ +2002-09-26 Ulrich Weigand + + * reload.c (dup_replacements): New function. + (find_reloads): Use it to duplicate replacements at the top level + of match_dup operands. + +2004-10-25 Jakub Jelinek + + * gcc.c-torture/execute/20041025-1.c: New test. + +--- gcc/reload.c.jj 2003-04-08 15:51:07.000000000 +0200 1.190 ++++ gcc/reload.c 2004-10-25 13:10:48.056167117 +0200 1.191 +@@ -244,6 +244,7 @@ static enum reg_class find_valid_class P + unsigned int)); + static int reload_inner_reg_of_subreg PARAMS ((rtx, enum machine_mode, int)); + static void push_replacement PARAMS ((rtx *, int, enum machine_mode)); ++static void dup_replacements PARAMS ((rtx *, rtx *)); + static void combine_reloads PARAMS ((void)); + static int find_reusable_reload PARAMS ((rtx *, rtx, enum reg_class, + enum reload_type, int, int)); +@@ -1578,6 +1579,25 @@ push_replacement (loc, reloadnum, mode) + r->mode = mode; + } + } ++ ++/* Duplicate any replacement we have recorded to apply at ++ location ORIG_LOC to also be performed at DUP_LOC. ++ This is used in insn patterns that use match_dup. */ ++ ++static void ++dup_replacements (dup_loc, orig_loc) ++ rtx *dup_loc; ++ rtx *orig_loc; ++{ ++ int i, n = n_replacements; ++ ++ for (i = 0; i < n; i++) ++ { ++ struct replacement *r = &replacements[i]; ++ if (r->where == orig_loc) ++ push_replacement (dup_loc, r->what, r->mode); ++ } ++} + + /* Transfer all replacements that used to be in reload FROM to be in + reload TO. */ +@@ -3969,9 +3989,7 @@ find_reloads (insn, replace, ind_levels, + { + int opno = recog_data.dup_num[i]; + *recog_data.dup_loc[i] = *recog_data.operand_loc[opno]; +- if (operand_reloadnum[opno] >= 0) +- push_replacement (recog_data.dup_loc[i], operand_reloadnum[opno], +- insn_data[insn_code_number].operand[opno].mode); ++ dup_replacements (recog_data.dup_loc[i], recog_data.operand_loc[opno]); + } + + #if 0 +--- gcc/testsuite/gcc.c-torture/execute/20041025-1.c.jj 2004-10-25 13:13:28.604657996 +0200 ++++ gcc/testsuite/gcc.c-torture/execute/20041025-1.c 2004-10-25 13:11:43.119389360 +0200 +@@ -0,0 +1,17 @@ ++extern void abort (void); ++ ++void ++foo (int a, int b, int c, int d, int e, void **f) ++{ ++ char g[4096]; ++ if (f == 0 || *f != 0) ++ abort (); ++} ++ ++int ++main (void) ++{ ++ void *x = 0; ++ foo (0, 1, 2, 3, 4, &x); ++ return 0; ++}