This commit is contained in:
Jakub Jelinek 2008-09-17 21:48:16 +00:00
parent 34352b072b
commit 8b55e223d6
5 changed files with 183 additions and 7 deletions

View File

@ -1,2 +1,2 @@
gcc-4.3.2-20080905.tar.bz2 gcc-4.3.2-20080917.tar.bz2
fastjar-0.95.tar.gz fastjar-0.95.tar.gz

118
gcc43-pr34037.patch Normal file
View File

@ -0,0 +1,118 @@
2008-09-11 Jakub Jelinek <jakub@redhat.com>
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

View File

@ -0,0 +1,47 @@
Revert:
2008-08-28 Dodji Seketeli <dodji@redhat.com>
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 <dodji@redhat.com>
// Origin: PR c++/36741
#include <stddef.h>
const char*
foo()
{
- return new char[~static_cast<size_t>(0)];// { dg-bogus "large" }
+ return new char[~static_cast<size_t>(0)];// { dg-bogus "large" "" { xfail *-*-* } }
}

View File

@ -1,9 +1,9 @@
%define DATE 20080905 %define DATE 20080917
%define SVNREV 140029 %define SVNREV 140410
%define gcc_version 4.3.2 %define gcc_version 4.3.2
# 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.
%define gcc_release 3 %define gcc_release 4
%define _unpackaged_files_terminate_build 0 %define _unpackaged_files_terminate_build 0
%define multilib_64_archs sparc64 ppc64 s390x x86_64 %define multilib_64_archs sparc64 ppc64 s390x x86_64
%define include_gappletviewer 1 %define include_gappletviewer 1
@ -154,6 +154,8 @@ Patch17: gcc43-x86_64-va_start.patch
Patch18: gcc43-pr37189.patch Patch18: gcc43-pr37189.patch
Patch19: gcc43-altivec-tests.patch Patch19: gcc43-altivec-tests.patch
Patch20: gcc43-libtool-no-rpath.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 # On ARM EABI systems, we do want -gnueabi to be part of the
# target triple. # target triple.
@ -384,7 +386,7 @@ Autoreq: true
The Java(tm) runtime library sources for use in Eclipse. The Java(tm) runtime library sources for use in Eclipse.
%package -n cpp %package -n cpp
Summary: The C Preprocessor. Summary: The C Preprocessor
Group: Development/Languages Group: Development/Languages
Prereq: /sbin/install-info Prereq: /sbin/install-info
%ifarch ia64 %ifarch ia64
@ -458,6 +460,8 @@ which are required to run programs compiled with the GNAT.
%patch18 -p0 -b .pr37189~ %patch18 -p0 -b .pr37189~
%patch19 -p0 -b .altivec-tests~ %patch19 -p0 -b .altivec-tests~
%patch20 -p0 -b .libtool-no-rpath~ %patch20 -p0 -b .libtool-no-rpath~
%patch21 -p0 -b .pr36741-revert~
%patch22 -p0 -b .pr34037~
tar xzf %{SOURCE4} tar xzf %{SOURCE4}
@ -484,7 +488,7 @@ perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: check-rec
LC_ALL=C sed -i \ LC_ALL=C sed -i \
-e 's/D\(o\|\xf6\)nmez/D\xc3\xb6nmez/' \ -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/\(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/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/Humi\(e\|\xe8\)res/Humi\xc3\xa8res/' \
-e 's/L\(ow\|\xc3\xaf\xc2\xbf\xc2\xbd\|oew\|\xf6w\)is/L\xc3\xb6wis/' \ -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* %doc rpm.doc/changelogs/libmudflap/ChangeLog*
%changelog %changelog
* Wed Sep 17 2008 Jakub Jelinek <jakub@redhat.com> 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 <jakub@redhat.com> 4.3.2-3 * Sat Sep 6 2008 Jakub Jelinek <jakub@redhat.com> 4.3.2-3
- don't run tests that require Altivec hw on non-Altivec powerpcs - don't run tests that require Altivec hw on non-Altivec powerpcs
- make sure none of libgcj binaries/libraries contains /usr/%{lib} in - make sure none of libgcj binaries/libraries contains /usr/%{lib} in

View File

@ -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 92a70f9e56223b653bce0f58f90cf950 fastjar-0.95.tar.gz