This commit is contained in:
Jakub Jelinek 2011-05-09 13:25:02 +02:00
parent 1ae9553d28
commit 3e27f9e68c
5 changed files with 127 additions and 4 deletions

1
.gitignore vendored
View File

@ -16,3 +16,4 @@
/gcc-4.6.0-20110413.tar.bz2
/gcc-4.6.0-20110419.tar.bz2
/gcc-4.6.0-20110428.tar.bz2
/gcc-4.6.0-20110509.tar.bz2

View File

@ -1,9 +1,9 @@
%global DATE 20110428
%global SVNREV 173071
%global DATE 20110509
%global SVNREV 173563
%global gcc_version 4.6.0
# 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 6
%global gcc_release 7
%global _unpackaged_files_terminate_build 0
%global multilib_64_archs sparc64 ppc64 s390x x86_64
%ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
@ -170,6 +170,8 @@ Patch15: gcc46-libstdc++-docs.patch
Patch17: gcc46-no-add-needed.patch
Patch18: gcc46-ppl-0.10.patch
Patch19: gcc46-pr47858.patch
Patch20: gcc46-pr48574.patch
Patch21: gcc46-pr48837.patch
Patch1000: fastjar-0.97-segfault.patch
Patch1001: fastjar-0.97-len1.patch
@ -603,6 +605,8 @@ not stable, so plugins must be rebuilt any time GCC is updated.
%patch18 -p0 -b .ppl-0.10~
%endif
%patch19 -p0 -b .pr47858~
%patch20 -p0 -b .pr48574~
%patch21 -p0 -b .pr48837~
# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
@ -2342,6 +2346,19 @@ fi
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
%changelog
* Mon May 9 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-7
- update from the 4.6 branch
- PRs ada/48844, c++/40975, c++/48089, c++/48446, c++/48656, c++/48749,
c++/48838, c++/48909, c++/48911, fortran/48112, fortran/48279,
fortran/48462, fortran/48720, fortran/48746, fortran/48788,
fortran/48800, fortran/48810, fortran/48894, libgfortran/48030,
libstdc++/48750, libstdc++/48760, lto/48846, middle-end/48597,
preprocessor/48192, target/48226, target/48252, target/48262,
target/48774, target/48900, tree-optimization/48809
- fix ICE with references in templates (PR c++/48574)
- disable tail call optimization if tail recursion needs accumulators
(PR PR tree-optimization/48837)
* Thu Apr 28 2011 Jakub Jelinek <jakub@redhat.com> 4.6.0-6
- update from the 4.6 branch
- PRs c++/42687, c++/46304, c++/48046, c++/48657, c++/48707, c++/48726,

47
gcc46-pr48574.patch Normal file
View File

@ -0,0 +1,47 @@
2011-05-06 Dodji Seketeli <dodji@redhat.com>
PR c++/48574
* class.c (fixed_type_or_null): Use type_dependent_p_push to test if
the instance has a dependent initializer.
* g++.dg/template/dependent-expr8.C: New test case.
--- gcc/cp/class.c
+++ gcc/cp/class.c
@@ -5939,7 +5939,7 @@ fixed_type_or_null (tree instance, int *nonnull, int *cdtorp)
itself. */
if (TREE_CODE (instance) == VAR_DECL
&& DECL_INITIAL (instance)
- && !type_dependent_expression_p (DECL_INITIAL (instance))
+ && !type_dependent_expression_p_push (DECL_INITIAL (instance))
&& !htab_find (ht, instance))
{
tree type;
--- gcc/testsuite/g++.dg/template/dependent-expr8.C
+++ gcc/testsuite/g++.dg/template/dependent-expr8.C
@@ -0,0 +1,25 @@
+// Origin PR c++/48574
+// { dg-options "-std=c++0x" }
+// { dg-do compile }
+
+struct A
+{
+ virtual int foo();
+};
+
+void baz (int);
+
+template <typename T>
+void
+bar(T x)
+{
+ A &b = *x;
+ baz (b.foo ());
+}
+
+void
+foo()
+{
+ A a;
+ bar(&a);
+}

58
gcc46-pr48837.patch Normal file
View File

@ -0,0 +1,58 @@
2011-05-07 Zdenek Dvorak <ook@ucw.cz>
PR tree-optimization/48837
* tree-tailcall.c (tree_optimize_tail_calls_1): Do not mark tailcalls
when accumulator transformation is performed.
* gcc.dg/pr48837.c: New testcase.
--- gcc/tree-tailcall.c (revision 173533)
+++ gcc/tree-tailcall.c (revision 173534)
@@ -1021,6 +1021,14 @@ tree_optimize_tail_calls_1 (bool opt_tai
integer_one_node);
}
+ if (a_acc || m_acc)
+ {
+ /* When the tail call elimination using accumulators is performed,
+ statements adding the accumulated value are inserted at all exits.
+ This turns all other tail calls to non-tail ones. */
+ opt_tailcalls = false;
+ }
+
for (; tailcalls; tailcalls = next)
{
next = tailcalls->next;
--- gcc/testsuite/gcc.dg/pr48837.c (revision 0)
+++ gcc/testsuite/gcc.dg/pr48837.c (revision 173534)
@@ -0,0 +1,30 @@
+/* PR tree-optimization/48837 */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+void abort (void);
+
+__attribute__((noinline))
+int baz(void)
+{
+ return 1;
+}
+
+inline const int *bar(const int *a, const int *b)
+{
+ return *a ? a : b;
+}
+
+int foo(int a, int b)
+{
+ return a || b ? baz() : foo(*bar(&a, &b), 1) + foo(1, 0);
+}
+
+int main(void)
+{
+ if (foo(0, 0) != 2)
+ abort();
+
+ return 0;
+}
+

View File

@ -1,2 +1,2 @@
2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz
be7ba999b28a132aa8d82e6146038a58 gcc-4.6.0-20110428.tar.bz2
9ed94a5e9644951bf4b5ddef37799df2 gcc-4.6.0-20110509.tar.bz2