4.4.1-18
This commit is contained in:
parent
aad3859b62
commit
7e5ced8dfb
@ -1,2 +1,2 @@
|
|||||||
fastjar-0.97.tar.gz
|
fastjar-0.97.tar.gz
|
||||||
gcc-4.4.1-20090925.tar.bz2
|
gcc-4.4.1-20091001.tar.bz2
|
||||||
|
48
gcc.spec
48
gcc.spec
@ -1,9 +1,9 @@
|
|||||||
%global DATE 20090925
|
%global DATE 20091001
|
||||||
%global SVNREV 152158
|
%global SVNREV 152364
|
||||||
%global gcc_version 4.4.1
|
%global gcc_version 4.4.1
|
||||||
# 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 17
|
%global gcc_release 18
|
||||||
%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
|
||||||
%global include_gappletviewer 1
|
%global include_gappletviewer 1
|
||||||
@ -160,6 +160,7 @@ Patch16: gcc44-unwind-debug-hook.patch
|
|||||||
Patch17: gcc44-pr38757.patch
|
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-vta-rh521991.patch
|
||||||
|
|
||||||
Patch1000: fastjar-0.97-segfault.patch
|
Patch1000: fastjar-0.97-segfault.patch
|
||||||
|
|
||||||
@ -466,6 +467,7 @@ which are required to compile with the GNAT.
|
|||||||
%patch18 -p0 -b .libstdc++-docs~
|
%patch18 -p0 -b .libstdc++-docs~
|
||||||
%endif
|
%endif
|
||||||
%patch19 -p0 -b .ppc64-aixdesc~
|
%patch19 -p0 -b .ppc64-aixdesc~
|
||||||
|
%patch20 -p0 -b .vta-rh521991~
|
||||||
|
|
||||||
# This testcase doesn't compile.
|
# This testcase doesn't compile.
|
||||||
rm libjava/testsuite/libjava.lang/PR35020*
|
rm libjava/testsuite/libjava.lang/PR35020*
|
||||||
@ -1185,55 +1187,65 @@ rm -rf testlogs-%{_target_platform}-%{version}-%{release}
|
|||||||
rm -rf %{buildroot}
|
rm -rf %{buildroot}
|
||||||
|
|
||||||
%post
|
%post
|
||||||
|
if [ -f %{_infodir}/gcc.info.gz ]; then
|
||||||
/sbin/install-info \
|
/sbin/install-info \
|
||||||
--info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
|
||||||
|
fi
|
||||||
|
|
||||||
%preun
|
%preun
|
||||||
if [ $1 = 0 ]; then
|
if [ $1 = 0 -a -f %{_infodir}/gcc.info.gz ]; then
|
||||||
/sbin/install-info --delete \
|
/sbin/install-info --delete \
|
||||||
--info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
%post -n cpp
|
%post -n cpp
|
||||||
|
if [ -f %{_infodir}/cpp.info.gz ]; then
|
||||||
/sbin/install-info \
|
/sbin/install-info \
|
||||||
--info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
|
||||||
|
fi
|
||||||
|
|
||||||
%preun -n cpp
|
%preun -n cpp
|
||||||
if [ $1 = 0 ]; then
|
if [ $1 = 0 -a -f %{_infodir}/cpp.info.gz ]; then
|
||||||
/sbin/install-info --delete \
|
/sbin/install-info --delete \
|
||||||
--info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
%post gfortran
|
%post gfortran
|
||||||
|
if [ -f %{_infodir}/gfortran.info.gz ]; then
|
||||||
/sbin/install-info \
|
/sbin/install-info \
|
||||||
--info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
|
||||||
|
fi
|
||||||
|
|
||||||
%preun gfortran
|
%preun gfortran
|
||||||
if [ $1 = 0 ]; then
|
if [ $1 = 0 -a -f %{_infodir}/gfortran.info.gz ]; then
|
||||||
/sbin/install-info --delete \
|
/sbin/install-info --delete \
|
||||||
--info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
%post java
|
%post java
|
||||||
|
if [ -f %{_infodir}/gcj.info.gz ]; then
|
||||||
/sbin/install-info \
|
/sbin/install-info \
|
||||||
--info-dir=%{_infodir} %{_infodir}/gcj.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/gcj.info.gz || :
|
||||||
|
fi
|
||||||
|
|
||||||
%preun java
|
%preun java
|
||||||
if [ $1 = 0 ]; then
|
if [ $1 = 0 -a -f %{_infodir}/gcj.info.gz ]; then
|
||||||
/sbin/install-info --delete \
|
/sbin/install-info --delete \
|
||||||
--info-dir=%{_infodir} %{_infodir}/gcj.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/gcj.info.gz || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
%post gnat
|
%post gnat
|
||||||
|
if [ -f %{_infodir}/gnat_rm.info.gz ]; then
|
||||||
/sbin/install-info \
|
/sbin/install-info \
|
||||||
--info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
|
||||||
/sbin/install-info \
|
/sbin/install-info \
|
||||||
--info-dir=%{_infodir} %{_infodir}/gnat_ugn.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/gnat_ugn.info.gz || :
|
||||||
/sbin/install-info \
|
/sbin/install-info \
|
||||||
--info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
|
||||||
|
fi
|
||||||
|
|
||||||
%preun gnat
|
%preun gnat
|
||||||
if [ $1 = 0 ]; then
|
if [ $1 = 0 -a -f %{_infodir}/gnat_rm.info.gz ]; then
|
||||||
/sbin/install-info --delete \
|
/sbin/install-info --delete \
|
||||||
--info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
|
||||||
/sbin/install-info --delete \
|
/sbin/install-info --delete \
|
||||||
@ -1257,13 +1269,15 @@ fi
|
|||||||
|
|
||||||
%post -n libgcj
|
%post -n libgcj
|
||||||
/sbin/ldconfig
|
/sbin/ldconfig
|
||||||
|
if [ -f %{_infodir}/cp-tools.info.gz ]; then
|
||||||
/sbin/install-info \
|
/sbin/install-info \
|
||||||
--info-dir=%{_infodir} %{_infodir}/cp-tools.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/cp-tools.info.gz || :
|
||||||
/sbin/install-info \
|
/sbin/install-info \
|
||||||
--info-dir=%{_infodir} %{_infodir}/fastjar.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/fastjar.info.gz || :
|
||||||
|
fi
|
||||||
|
|
||||||
%preun -n libgcj
|
%preun -n libgcj
|
||||||
if [ $1 = 0 ]; then
|
if [ $1 = 0 -a -f %{_infodir}/cp-tools.info.gz ]; then
|
||||||
/sbin/install-info --delete \
|
/sbin/install-info --delete \
|
||||||
--info-dir=%{_infodir} %{_infodir}/cp-tools.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/cp-tools.info.gz || :
|
||||||
/sbin/install-info --delete \
|
/sbin/install-info --delete \
|
||||||
@ -1282,11 +1296,13 @@ fi
|
|||||||
|
|
||||||
%post -n libgomp
|
%post -n libgomp
|
||||||
/sbin/ldconfig
|
/sbin/ldconfig
|
||||||
|
if [ -f %{_infodir}/libgomp.info.gz ]; then
|
||||||
/sbin/install-info \
|
/sbin/install-info \
|
||||||
--info-dir=%{_infodir} %{_infodir}/libgomp.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/libgomp.info.gz || :
|
||||||
|
fi
|
||||||
|
|
||||||
%preun -n libgomp
|
%preun -n libgomp
|
||||||
if [ $1 = 0 ]; then
|
if [ $1 = 0 -a -f %{_infodir}/libgomp.info.gz ]; then
|
||||||
/sbin/install-info --delete \
|
/sbin/install-info --delete \
|
||||||
--info-dir=%{_infodir} %{_infodir}/libgomp.info.gz || :
|
--info-dir=%{_infodir} %{_infodir}/libgomp.info.gz || :
|
||||||
fi
|
fi
|
||||||
@ -1354,7 +1370,7 @@ fi
|
|||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/immintrin.h
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/immintrin.h
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avxintrin.h
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avxintrin.h
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/x86intrin.h
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/x86intrin.h
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin-common.h
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/fma4intrin.h
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm_malloc.h
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm_malloc.h
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm3dnow.h
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm3dnow.h
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cpuid.h
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cpuid.h
|
||||||
@ -1821,6 +1837,16 @@ fi
|
|||||||
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Oct 1 2009 Jakub Jelinek <jakub@redhat.com> 4.4.1-18
|
||||||
|
- update from gcc-4_4-branch
|
||||||
|
- PRs ada/41100, target/22093
|
||||||
|
- VTA backports
|
||||||
|
- PRs debug/41438, debug/41474, target/41279, testsuite/41444
|
||||||
|
- fix VTA ICE on Linux kernel (#521991)
|
||||||
|
- AMD Orochi -mfma4 support
|
||||||
|
- don't run install-info if info files are missing because of --excludedocs
|
||||||
|
(#515921, #515960, #515962, #515965, #516000, #516008, #516014)
|
||||||
|
|
||||||
* Fri Sep 25 2009 Jakub Jelinek <jakub@redhat.com> 4.4.1-17
|
* Fri Sep 25 2009 Jakub Jelinek <jakub@redhat.com> 4.4.1-17
|
||||||
- update from gcc-4_4-branch
|
- update from gcc-4_4-branch
|
||||||
- fix vectorizer for power7 (#463846)
|
- fix vectorizer for power7 (#463846)
|
||||||
|
181
gcc44-vta-rh521991.patch
Normal file
181
gcc44-vta-rh521991.patch
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
2009-09-30 Alexandre Oliva <aoliva@redhat.com>
|
||||||
|
|
||||||
|
* tree-dfa.c (referenced_var_p): New.
|
||||||
|
(remove_referenced_var): Clear renaming mark.
|
||||||
|
* tree-flow.h (referenced_var_p): Declare.
|
||||||
|
(sym_marked_for_renaming, clear_mark_for_renaming): Declare.
|
||||||
|
* tree-into-ssa.c (clear_mark_for_renaming): New.
|
||||||
|
(sym_marked_for_renaming): New.
|
||||||
|
* tree-ssa-operands.c (pop_stmt_changes): Reset debug stmts
|
||||||
|
that reference otherwise-unreferenced variables.
|
||||||
|
|
||||||
|
* gcc.dg/debug/vta-1.c: New.
|
||||||
|
|
||||||
|
--- gcc/tree-dfa.c.orig 2009-09-30 04:00:45.000000000 -0300
|
||||||
|
+++ gcc/tree-dfa.c 2009-09-30 04:01:21.000000000 -0300
|
||||||
|
@@ -639,6 +639,23 @@ set_default_def (tree var, tree def)
|
||||||
|
SSA_NAME_IS_DEFAULT_DEF (def) = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Return TRUE if VAR is in the set of referenced variables. */
|
||||||
|
+
|
||||||
|
+bool
|
||||||
|
+referenced_var_p (tree var)
|
||||||
|
+{
|
||||||
|
+ struct tree_decl_minimal in;
|
||||||
|
+
|
||||||
|
+ gcc_assert (DECL_P (var));
|
||||||
|
+
|
||||||
|
+ if (!gimple_referenced_vars (cfun))
|
||||||
|
+ return false;
|
||||||
|
+
|
||||||
|
+ in.uid = DECL_UID (var);
|
||||||
|
+ return htab_find_with_hash (gimple_referenced_vars (cfun), &in, in.uid)
|
||||||
|
+ != NULL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* Add VAR to the list of referenced variables if it isn't already there. */
|
||||||
|
|
||||||
|
bool
|
||||||
|
@@ -686,6 +703,15 @@ remove_referenced_var (tree var)
|
||||||
|
void **loc;
|
||||||
|
unsigned int uid = DECL_UID (var);
|
||||||
|
|
||||||
|
+ /* Symbols that decayed from addressable to gimple registers, but
|
||||||
|
+ that are referenced only in debug stmts, may be marked for
|
||||||
|
+ renaming, but renaming them would fail once they're no longer
|
||||||
|
+ referenced. Let them rest in peace. */
|
||||||
|
+ if (TREE_CODE (var) != SSA_NAME
|
||||||
|
+ && is_gimple_reg (var)
|
||||||
|
+ && sym_marked_for_renaming (var))
|
||||||
|
+ clear_mark_for_renaming (var);
|
||||||
|
+
|
||||||
|
clear_call_clobbered (var);
|
||||||
|
bitmap_clear_bit (gimple_call_used_vars (cfun), uid);
|
||||||
|
if ((v_ann = var_ann (var)))
|
||||||
|
--- gcc/tree-flow.h.orig 2009-09-30 04:00:46.000000000 -0300
|
||||||
|
+++ gcc/tree-flow.h 2009-09-30 04:01:21.000000000 -0300
|
||||||
|
@@ -773,6 +773,7 @@ extern void dump_referenced_vars (FILE *
|
||||||
|
extern void dump_variable (FILE *, tree);
|
||||||
|
extern void debug_variable (tree);
|
||||||
|
extern tree get_virtual_var (tree);
|
||||||
|
+extern bool referenced_var_p (tree);
|
||||||
|
extern bool add_referenced_var (tree);
|
||||||
|
extern void remove_referenced_var (tree);
|
||||||
|
extern void mark_symbols_for_renaming (gimple);
|
||||||
|
@@ -889,7 +890,9 @@ bool name_registered_for_update_p (tree)
|
||||||
|
bitmap ssa_names_to_replace (void);
|
||||||
|
void release_ssa_name_after_update_ssa (tree);
|
||||||
|
void compute_global_livein (bitmap, bitmap);
|
||||||
|
+bool sym_marked_for_renaming (tree);
|
||||||
|
void mark_sym_for_renaming (tree);
|
||||||
|
+void clear_mark_for_renaming (tree);
|
||||||
|
void mark_set_for_renaming (bitmap);
|
||||||
|
tree get_current_def (tree);
|
||||||
|
void set_current_def (tree, tree);
|
||||||
|
--- gcc/tree-into-ssa.c.orig 2009-09-30 04:00:45.000000000 -0300
|
||||||
|
+++ gcc/tree-into-ssa.c 2009-09-30 04:01:21.000000000 -0300
|
||||||
|
@@ -2874,6 +2874,37 @@ mark_sym_for_renaming (tree sym)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Unregister symbol SYM to be renamed by update_ssa. SYM must be a
|
||||||
|
+ gimple register. */
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+clear_mark_for_renaming (tree sym)
|
||||||
|
+{
|
||||||
|
+ if (need_to_initialize_update_ssa_p)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ gcc_assert (is_gimple_reg (sym));
|
||||||
|
+
|
||||||
|
+ bitmap_clear_bit (syms_to_rename, DECL_UID (sym));
|
||||||
|
+
|
||||||
|
+ if (bitmap_empty_p (syms_to_rename))
|
||||||
|
+ BITMAP_FREE (syms_to_rename);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/* Return true if a symbol is marked for renaming. This is an
|
||||||
|
+ exported interface for symbol_marked_for_renaming. */
|
||||||
|
+
|
||||||
|
+bool
|
||||||
|
+sym_marked_for_renaming (tree sym)
|
||||||
|
+{
|
||||||
|
+ if (need_to_initialize_update_ssa_p)
|
||||||
|
+ return false;
|
||||||
|
+
|
||||||
|
+ if (!syms_to_rename)
|
||||||
|
+ return false;
|
||||||
|
+
|
||||||
|
+ return symbol_marked_for_renaming (sym);
|
||||||
|
+}
|
||||||
|
|
||||||
|
/* Register all the symbols in SET to be renamed by update_ssa. */
|
||||||
|
|
||||||
|
--- gcc/tree-ssa-operands.c.orig 2009-09-30 04:00:45.000000000 -0300
|
||||||
|
+++ gcc/tree-ssa-operands.c 2009-09-30 04:01:21.000000000 -0300
|
||||||
|
@@ -2716,9 +2716,22 @@ pop_stmt_changes (gimple *stmt_p)
|
||||||
|
mark_difference_for_renaming (stores, buf->stores);
|
||||||
|
|
||||||
|
/* Mark all the naked GIMPLE register operands for renaming. */
|
||||||
|
- FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_DEF|SSA_OP_USE)
|
||||||
|
- if (DECL_P (op))
|
||||||
|
- mark_sym_for_renaming (op);
|
||||||
|
+ if (gimple_debug_bind_p (stmt))
|
||||||
|
+ {
|
||||||
|
+ FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_DEF|SSA_OP_USE)
|
||||||
|
+ if (DECL_P (op) && !referenced_var_p (op))
|
||||||
|
+ {
|
||||||
|
+ gimple_debug_bind_reset_value (stmt);
|
||||||
|
+ update_stmt (stmt);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_DEF|SSA_OP_USE)
|
||||||
|
+ if (DECL_P (op))
|
||||||
|
+ mark_sym_for_renaming (op);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* FIXME, need to add more finalizers here. Cleanup EH info,
|
||||||
|
recompute invariants for address expressions, add
|
||||||
|
--- gcc/testsuite/gcc.dg/debug/vta-1.c 1970-01-01 00:00:00.000000000 +0000
|
||||||
|
+++ gcc/testsuite/gcc.dg/debug/vta-1.c 2009-09-30 04:01:21.000000000 -0300
|
||||||
|
@@ -0,0 +1,35 @@
|
||||||
|
+/* https://bugzilla.redhat.com/show_bug.cgi?id=521991#c5
|
||||||
|
+
|
||||||
|
+ Distilled from Linux XFS source code. foo, inlined into bar, ends
|
||||||
|
+ up with debug stmts referencing the addressable variable b.
|
||||||
|
+ Optimization made it non-addressable, and then completely optimized
|
||||||
|
+ away, before we got a chance to rename (and discard) the occurrence
|
||||||
|
+ in the debug stmt. When we did, we crashed, attempting to rename
|
||||||
|
+ an unreference variable. */
|
||||||
|
+
|
||||||
|
+/* { dg-do compile } */
|
||||||
|
+/* { dg-options "-O2 -g" } */
|
||||||
|
+
|
||||||
|
+static inline int
|
||||||
|
+foo (void *x, unsigned y)
|
||||||
|
+{
|
||||||
|
+ unsigned z = *(unsigned long *) x % y;
|
||||||
|
+ *(unsigned long *) x = *(unsigned long *) x / y;
|
||||||
|
+ return z;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+struct S
|
||||||
|
+{
|
||||||
|
+ unsigned t;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+bar (struct S *x, int *y)
|
||||||
|
+{
|
||||||
|
+ int a = 0;
|
||||||
|
+ unsigned long b = x->t;
|
||||||
|
+ foo (&b, x->t);
|
||||||
|
+ for (;; a++)
|
||||||
|
+ if (b)
|
||||||
|
+ *y = 1;
|
||||||
|
+}
|
Loading…
Reference in New Issue
Block a user