diff --git a/.cvsignore b/.cvsignore index 9721a88..1adba10 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ -gcc-4.3.2-20080905.tar.bz2 +gcc-4.3.2-20080917.tar.bz2 fastjar-0.95.tar.gz diff --git a/gcc43-pr34037.patch b/gcc43-pr34037.patch new file mode 100644 index 0000000..2c5a163 --- /dev/null +++ b/gcc43-pr34037.patch @@ -0,0 +1,118 @@ +2008-09-11 Jakub Jelinek + + PR debug/34037 + * gimplify.c (gimplify_type_sizes): When not optimizing, ensure + TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P + VAR_DECL. + * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL + !DECL_IGNORED_P vars in unexpanded_var_list list for instantiate_decls, + ggc_free other TREE_LIST nodes from that chain. + * function.c (instantiate_decls): Instantiate also DECL_RTL + of vars in cfun->unexpanded_var_list, free that list afterwards. + +--- gcc/gimplify.c.jj 2008-09-10 20:50:11.000000000 +0200 ++++ gcc/gimplify.c 2008-09-11 13:54:22.000000000 +0200 +@@ -7105,6 +7105,18 @@ gimplify_type_sizes (tree type, gimple_s + /* These types may not have declarations, so handle them here. */ + gimplify_type_sizes (TREE_TYPE (type), list_p); + gimplify_type_sizes (TYPE_DOMAIN (type), list_p); ++ /* When not optimizing, ensure VLA bounds aren't removed. */ ++ if (!optimize ++ && TYPE_DOMAIN (type) ++ && INTEGRAL_TYPE_P (TYPE_DOMAIN (type))) ++ { ++ t = TYPE_MIN_VALUE (TYPE_DOMAIN (type)); ++ if (t && TREE_CODE (t) == VAR_DECL && DECL_ARTIFICIAL (t)) ++ DECL_IGNORED_P (t) = 0; ++ t = TYPE_MAX_VALUE (TYPE_DOMAIN (type)); ++ if (t && TREE_CODE (t) == VAR_DECL && DECL_ARTIFICIAL (t)) ++ DECL_IGNORED_P (t) = 0; ++ } + break; + + case RECORD_TYPE: +--- gcc/cfgexpand.c.jj 2008-09-09 16:08:04.000000000 +0200 ++++ gcc/cfgexpand.c 2008-09-11 15:01:00.000000000 +0200 +@@ -1440,7 +1440,7 @@ estimated_stack_frame_size (void) + static void + expand_used_vars (void) + { +- tree t, outer_block = DECL_INITIAL (current_function_decl); ++ tree t, next, outer_block = DECL_INITIAL (current_function_decl); + + /* Compute the phase of the stack frame for this function. */ + { +@@ -1453,11 +1453,15 @@ expand_used_vars (void) + + /* At this point all variables on the unexpanded_var_list with TREE_USED + set are not associated with any block scope. Lay them out. */ +- for (t = cfun->unexpanded_var_list; t; t = TREE_CHAIN (t)) ++ t = cfun->unexpanded_var_list; ++ cfun->unexpanded_var_list = NULL_TREE; ++ for (; t; t = next) + { + tree var = TREE_VALUE (t); + bool expand_now = false; + ++ next = TREE_CHAIN (t); ++ + /* We didn't set a block for static or extern because it's hard + to tell the difference between a global variable (re)declared + in a local scope, and one that's really declared there to +@@ -1484,9 +1488,25 @@ expand_used_vars (void) + TREE_USED (var) = 1; + + if (expand_now) +- expand_one_var (var, true, true); ++ { ++ expand_one_var (var, true, true); ++ if (DECL_ARTIFICIAL (var) && !DECL_IGNORED_P (var)) ++ { ++ rtx rtl = DECL_RTL_IF_SET (var); ++ ++ /* Keep artificial non-ignored vars in cfun->unexpanded_var_list ++ chain until instantiate_decls. */ ++ if (rtl && (MEM_P (rtl) || GET_CODE (rtl) == CONCAT)) ++ { ++ TREE_CHAIN (t) = cfun->unexpanded_var_list; ++ cfun->unexpanded_var_list = t; ++ continue; ++ } ++ } ++ } ++ ++ ggc_free (t); + } +- cfun->unexpanded_var_list = NULL_TREE; + + /* At this point, all variables within the block tree with TREE_USED + set are actually used by the optimized function. Lay them out. */ +--- gcc/function.c.jj 2008-09-09 21:13:24.000000000 +0200 ++++ gcc/function.c 2008-09-11 14:56:47.000000000 +0200 +@@ -1645,7 +1645,7 @@ instantiate_decls_1 (tree let) + static void + instantiate_decls (tree fndecl) + { +- tree decl; ++ tree decl, t, next; + + /* Process all parameters of the function. */ + for (decl = DECL_ARGUMENTS (fndecl); decl; decl = TREE_CHAIN (decl)) +@@ -1661,6 +1661,17 @@ instantiate_decls (tree fndecl) + + /* Now process all variables defined in the function or its subblocks. */ + instantiate_decls_1 (DECL_INITIAL (fndecl)); ++ ++ t = cfun->unexpanded_var_list; ++ cfun->unexpanded_var_list = NULL_TREE; ++ for (; t; t = next) ++ { ++ next = TREE_CHAIN (t); ++ decl = TREE_VALUE (t); ++ if (DECL_RTL_SET_P (decl)) ++ instantiate_decl_rtl (DECL_RTL (decl)); ++ ggc_free (t); ++ } + } + + /* Pass through the INSNS of function FNDECL and convert virtual register diff --git a/gcc43-pr36741-revert.patch b/gcc43-pr36741-revert.patch new file mode 100644 index 0000000..5a67d96 --- /dev/null +++ b/gcc43-pr36741-revert.patch @@ -0,0 +1,47 @@ +Revert: +2008-08-28 Dodji Seketeli + + PR c++/36741 + * tree.c (int_fits_type_p): Don't forget unsigned integers + of type sizetype which higher end word equals -1. + + * g++.dg/other/new-size-type.C: New test. + +--- gcc/tree.c (revision 139711) ++++ gcc/tree.c (revision 139710) +@@ -6296,21 +6296,6 @@ int_fits_type_p (const_tree c, const_tre + for "unknown if constant fits", 0 for "constant known *not* to fit" and 1 + for "constant known to fit". */ + +- if (TREE_TYPE (c) == sizetype +- && TYPE_UNSIGNED (TREE_TYPE (c)) +- && TREE_INT_CST_HIGH (c) == -1 +- && !TREE_OVERFLOW (c)) +- /* So c is an unsigned integer which type is sizetype. +- sizetype'd integers are sign extended even though they are +- unsigned. If the integer value fits in the lower end word of c, +- and if the higher end word has all its bits set to 1, that +- means the higher end bits are set to 1 only for sign extension. +- So let's convert c into an equivalent zero extended unsigned +- integer. */ +- c = force_fit_type_double (size_type_node, +- TREE_INT_CST_LOW (c), +- TREE_INT_CST_HIGH (c), +- false, false); + /* Check if C >= type_low_bound. */ + if (type_low_bound && TREE_CODE (type_low_bound) == INTEGER_CST) + { +--- gcc/testsuite/g++.dg/other/new-size-type.C (revision 139711) ++++ gcc/testsuite/g++.dg/other/new-size-type.C (revision 139710) +@@ -1,10 +1,10 @@ + // Contributed by Dodji Seketeli + // Origin: PR c++/36741 + + #include + const char* + foo() + { +- return new char[~static_cast(0)];// { dg-bogus "large" } ++ return new char[~static_cast(0)];// { dg-bogus "large" "" { xfail *-*-* } } + } + diff --git a/gcc43.spec b/gcc43.spec index d63f377..a17ff43 100644 --- a/gcc43.spec +++ b/gcc43.spec @@ -1,9 +1,9 @@ -%define DATE 20080905 -%define SVNREV 140029 +%define DATE 20080917 +%define SVNREV 140410 %define gcc_version 4.3.2 # Note, gcc_release must be integer, if you want to add suffixes to # %{release}, append them after %{gcc_release} on Release: line. -%define gcc_release 3 +%define gcc_release 4 %define _unpackaged_files_terminate_build 0 %define multilib_64_archs sparc64 ppc64 s390x x86_64 %define include_gappletviewer 1 @@ -154,6 +154,8 @@ Patch17: gcc43-x86_64-va_start.patch Patch18: gcc43-pr37189.patch Patch19: gcc43-altivec-tests.patch Patch20: gcc43-libtool-no-rpath.patch +Patch21: gcc43-pr36741-revert.patch +Patch22: gcc43-pr34037.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -384,7 +386,7 @@ Autoreq: true The Java(tm) runtime library sources for use in Eclipse. %package -n cpp -Summary: The C Preprocessor. +Summary: The C Preprocessor Group: Development/Languages Prereq: /sbin/install-info %ifarch ia64 @@ -458,6 +460,8 @@ which are required to run programs compiled with the GNAT. %patch18 -p0 -b .pr37189~ %patch19 -p0 -b .altivec-tests~ %patch20 -p0 -b .libtool-no-rpath~ +%patch21 -p0 -b .pr36741-revert~ +%patch22 -p0 -b .pr34037~ tar xzf %{SOURCE4} @@ -484,7 +488,7 @@ perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: check-rec LC_ALL=C sed -i \ -e 's/D\(o\|\xf6\)nmez/D\xc3\xb6nmez/' \ -e 's/\(Av\|\x81\xc1v\|\xc1v\|\xef\xbf\xbdv\?\|\x81\xc3\x81v\|\xc3v\)ila/\xc3\x81vila/' \ - -e 's/Esp\(in\|\x81\xedn\|\xedn\|\xef\xbf\xbdn\?\|\xef\xbf\xbd\xadn\|\x81\xc3\xadn\)dola/Esp\xc3\xadndola/' \ + -e 's/Esp\(in\|\x81\xedn\|\xedn\|\xef\xbf\xbdn\?\|\xef\xbf\xbd\xadn\|\x81\xc3\xadn\|\xc3\xef\xbf\xbd\xadn\)dola/Esp\xc3\xadndola/' \ -e 's/Schl\(u\|\xef\xbf\xbd\|\xfcu\?\|\x81\xfc\|\x81\xc3\xbc\|\xc3\xaf\xc2\xbf\xc2\xbd\|\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xc2\xbc\)ter/Schl\xc3\xbcter/' \ -e 's/Humi\(e\|\xe8\)res/Humi\xc3\xa8res/' \ -e 's/L\(ow\|\xc3\xaf\xc2\xbf\xc2\xbd\|oew\|\xf6w\)is/L\xc3\xb6wis/' \ @@ -1706,6 +1710,13 @@ fi %doc rpm.doc/changelogs/libmudflap/ChangeLog* %changelog +* Wed Sep 17 2008 Jakub Jelinek 4.3.2-4 +- update from 4.3 branch + - PRs c++/37389, fortran/35837, fortran/36214, fortran/37099, fortran/37199, + rtl-optimization/37408, target/37466, tree-optimization/36630 +- revert PR c++/36741 fix +- fix VLA debuginfo at -O0 (PR debug/34037) + * Sat Sep 6 2008 Jakub Jelinek 4.3.2-3 - don't run tests that require Altivec hw on non-Altivec powerpcs - make sure none of libgcj binaries/libraries contains /usr/%{lib} in diff --git a/sources b/sources index f764cd9..082f61c 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -373bfd18d804b93123d89b793967fb3b gcc-4.3.2-20080905.tar.bz2 +78b4e6400e20ea3011ae7c887f8338d2 gcc-4.3.2-20080917.tar.bz2 92a70f9e56223b653bce0f58f90cf950 fastjar-0.95.tar.gz