4.4.2-26
This commit is contained in:
parent
62dea55b3e
commit
6f77c54b8f
14
gcc.spec
14
gcc.spec
|
@ -1,9 +1,9 @@
|
|||
%global DATE 20100114
|
||||
%global SVNREV 155909
|
||||
%global SVNREV 155925
|
||||
%global gcc_version 4.4.2
|
||||
# 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 25
|
||||
%global gcc_release 26
|
||||
%global _unpackaged_files_terminate_build 0
|
||||
%global multilib_64_archs sparc64 ppc64 s390x x86_64
|
||||
%if 0%{?fedora} >= 13
|
||||
|
@ -166,9 +166,6 @@ Patch17: gcc44-pr38757.patch
|
|||
Patch18: gcc44-libstdc++-docs.patch
|
||||
Patch19: gcc44-ppc64-aixdesc.patch
|
||||
Patch20: gcc44-max-vartrack-size.patch
|
||||
Patch21: gcc44-pr42657.patch
|
||||
Patch22: gcc44-pr42608.patch
|
||||
Patch23: gcc44-pr42674.patch
|
||||
|
||||
Patch1000: fastjar-0.97-segfault.patch
|
||||
Patch1001: fastjar-0.97-len1.patch
|
||||
|
@ -478,9 +475,6 @@ which are required to compile with the GNAT.
|
|||
%endif
|
||||
%patch19 -p0 -b .ppc64-aixdesc~
|
||||
%patch20 -p0 -b .max-vartrack-size~
|
||||
%patch21 -p0 -b .pr42657~
|
||||
%patch22 -p0 -b .pr42608~
|
||||
%patch23 -p0 -b .pr42674~
|
||||
|
||||
# This testcase doesn't compile.
|
||||
rm libjava/testsuite/libjava.lang/PR35020*
|
||||
|
@ -1870,6 +1864,10 @@ fi
|
|||
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
||||
|
||||
%changelog
|
||||
* Fri Jan 15 2010 Jakub Jelinek <jakub@redhat.com> 4.4.2-26
|
||||
- update from gcc-4_4-branch
|
||||
- PR c++/42655
|
||||
|
||||
* Thu Jan 14 2010 Jakub Jelinek <jakub@redhat.com> 4.4.2-25
|
||||
- update from gcc-4_4-branch
|
||||
- PRs c/42721, middle-end/40281, middle-end/42667, rtl-optimization/42699
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
2010-01-09 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/42608
|
||||
* varasm.c (declare_weak): Add weak attribute to decl if it
|
||||
doesn't have one already.
|
||||
(assemble_external): Only add decls to weak_decls if they also
|
||||
have weak attribute.
|
||||
|
||||
* g++.dg/template/instantiate11.C: New test.
|
||||
|
||||
--- gcc/varasm.c.jj 2009-11-09 16:38:29.000000000 +0100
|
||||
+++ gcc/varasm.c 2010-01-08 13:30:12.000000000 +0100
|
||||
@@ -2309,13 +2309,15 @@ assemble_external (tree decl ATTRIBUTE_U
|
||||
/* We want to output annotation for weak and external symbols at
|
||||
very last to check if they are references or not. */
|
||||
|
||||
- if (SUPPORTS_WEAK && DECL_WEAK (decl)
|
||||
+ if (SUPPORTS_WEAK
|
||||
+ && DECL_WEAK (decl)
|
||||
/* TREE_STATIC is a weird and abused creature which is not
|
||||
generally the right test for whether an entity has been
|
||||
locally emitted, inlined or otherwise not-really-extern, but
|
||||
for declarations that can be weak, it happens to be
|
||||
match. */
|
||||
- && !TREE_STATIC (decl))
|
||||
+ && !TREE_STATIC (decl)
|
||||
+ && lookup_attribute ("weak", DECL_ATTRIBUTES (decl)))
|
||||
weak_decls = tree_cons (NULL, decl, weak_decls);
|
||||
|
||||
#ifdef ASM_OUTPUT_EXTERNAL
|
||||
@@ -5008,6 +5010,9 @@ declare_weak (tree decl)
|
||||
warning (0, "weak declaration of %q+D not supported", decl);
|
||||
|
||||
mark_weak (decl);
|
||||
+ if (!lookup_attribute ("weak", DECL_ATTRIBUTES (decl)))
|
||||
+ DECL_ATTRIBUTES (decl)
|
||||
+ = tree_cons (get_identifier ("weak"), NULL, DECL_ATTRIBUTES (decl));
|
||||
}
|
||||
|
||||
static void
|
||||
--- gcc/testsuite/g++.dg/template/instantiate11.C.jj 2010-01-08 13:48:58.000000000 +0100
|
||||
+++ gcc/testsuite/g++.dg/template/instantiate11.C 2010-01-08 14:18:44.000000000 +0100
|
||||
@@ -0,0 +1,25 @@
|
||||
+// PR c++/42608
|
||||
+// { dg-do compile }
|
||||
+
|
||||
+template <class U, class V>
|
||||
+struct A;
|
||||
+
|
||||
+template <class V>
|
||||
+struct A<int, V>
|
||||
+{
|
||||
+ void f ();
|
||||
+};
|
||||
+
|
||||
+template struct A<int, int>;
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ A<int, int> a;
|
||||
+ a.f ();
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+// Make sure we get undefined reference error if
|
||||
+// A<int, int>::f () isn't instantiated elsewhere.
|
||||
+// { dg-final { scan-assembler-not "weak\[\n\t\]*_ZN1AIiiE1fEv" } }
|
|
@ -1,73 +0,0 @@
|
|||
2010-01-09 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
PR debug/42657
|
||||
* var-tracking.c (var_reg_delete): Don't delete the association
|
||||
between REGs and values or one-part variables if the register
|
||||
isn't clobbered.
|
||||
|
||||
2010-01-08 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/42657
|
||||
* tree-inline.c (copy_debug_stmt): Don't reset debug stmt just
|
||||
because its first operand is a non-localized variable.
|
||||
|
||||
--- gcc/tree-inline.c.jj 2010-01-08 10:21:30.000000000 +0100
|
||||
+++ gcc/tree-inline.c 2010-01-08 10:19:49.000000000 +0100
|
||||
@@ -2043,6 +2043,12 @@ copy_debug_stmt (gimple stmt, copy_body_
|
||||
gcc_assert (TREE_CODE (*n) == VAR_DECL);
|
||||
t = *n;
|
||||
}
|
||||
+ else if (TREE_CODE (t) == VAR_DECL
|
||||
+ && !TREE_STATIC (t)
|
||||
+ && gimple_in_ssa_p (cfun)
|
||||
+ && !pointer_map_contains (id->decl_map, t)
|
||||
+ && !var_ann (t))
|
||||
+ /* T is a non-localized variable. */;
|
||||
else
|
||||
walk_tree (&t, remap_gimple_op_r, &wi, NULL);
|
||||
|
||||
--- gcc/var-tracking.c.orig 2010-01-09 07:00:12.000000000 -0200
|
||||
+++ gcc/var-tracking.c 2010-01-09 07:00:14.000000000 -0200
|
||||
@@ -1401,14 +1401,15 @@ var_reg_delete_and_set (dataflow_set *se
|
||||
var_reg_set (set, loc, initialized, set_src);
|
||||
}
|
||||
|
||||
-/* Delete current content of register LOC in dataflow set SET. If
|
||||
- CLOBBER is true, also delete any other live copies of the same
|
||||
- variable part. */
|
||||
+/* Delete the association of register LOC in dataflow set SET with any
|
||||
+ variables that aren't onepart. If CLOBBER is true, also delete any
|
||||
+ other live copies of the same variable part, and delete the
|
||||
+ association with onepart dvs too. */
|
||||
|
||||
static void
|
||||
var_reg_delete (dataflow_set *set, rtx loc, bool clobber)
|
||||
{
|
||||
- attrs *reg = &set->regs[REGNO (loc)];
|
||||
+ attrs *nextp = &set->regs[REGNO (loc)];
|
||||
attrs node, next;
|
||||
|
||||
if (clobber)
|
||||
@@ -1421,13 +1422,18 @@ var_reg_delete (dataflow_set *set, rtx l
|
||||
clobber_variable_part (set, NULL, dv_from_decl (decl), offset, NULL);
|
||||
}
|
||||
|
||||
- for (node = *reg; node; node = next)
|
||||
+ for (node = *nextp; node; node = next)
|
||||
{
|
||||
next = node->next;
|
||||
- delete_variable_part (set, node->loc, node->dv, node->offset);
|
||||
- pool_free (attrs_pool, node);
|
||||
+ if (clobber || !dv_onepart_p (node->dv))
|
||||
+ {
|
||||
+ delete_variable_part (set, node->loc, node->dv, node->offset);
|
||||
+ pool_free (attrs_pool, node);
|
||||
+ *nextp = next;
|
||||
+ }
|
||||
+ else
|
||||
+ nextp = &node->next;
|
||||
}
|
||||
- *reg = NULL;
|
||||
}
|
||||
|
||||
/* Delete content of register with number REGNO in dataflow set SET. */
|
|
@ -1,49 +0,0 @@
|
|||
2010-01-13 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/42674
|
||||
* c-decl.c (finish_function): Don't emit -Wreturn-type warnings in
|
||||
functions with noreturn attribute.
|
||||
|
||||
* decl.c (finish_function): Don't emit -Wreturn-type warnings in
|
||||
functions with noreturn attribute.
|
||||
|
||||
* c-c++-common/pr42674.c: New test.
|
||||
|
||||
--- gcc/c-decl.c.jj 2010-01-04 10:46:33.000000000 +0100
|
||||
+++ gcc/c-decl.c 2010-01-13 18:41:44.000000000 +0100
|
||||
@@ -8032,6 +8032,8 @@ finish_function (void)
|
||||
&& !current_function_returns_value && !current_function_returns_null
|
||||
/* Don't complain if we are no-return. */
|
||||
&& !current_function_returns_abnormally
|
||||
+ /* Don't complain if we are declared noreturn. */
|
||||
+ && !TREE_THIS_VOLATILE (fndecl)
|
||||
/* Don't warn for main(). */
|
||||
&& !MAIN_NAME_P (DECL_NAME (fndecl))
|
||||
/* Or if they didn't actually specify a return type. */
|
||||
--- gcc/cp/decl.c.jj 2009-12-23 17:31:06.000000000 +0100
|
||||
+++ gcc/cp/decl.c 2010-01-13 18:43:01.000000000 +0100
|
||||
@@ -12541,6 +12541,8 @@ finish_function (int flags)
|
||||
&& !current_function_returns_value && !current_function_returns_null
|
||||
/* Don't complain if we abort or throw. */
|
||||
&& !current_function_returns_abnormally
|
||||
+ /* Don't complain if we are declared noreturn. */
|
||||
+ && !TREE_THIS_VOLATILE (fndecl)
|
||||
&& !DECL_NAME (DECL_RESULT (fndecl))
|
||||
&& !TREE_NO_WARNING (fndecl)
|
||||
/* Structor return values (if any) are set by the compiler. */
|
||||
--- gcc/testsuite/c-c++-common/pr42674.c.jj 2010-01-13 18:57:20.000000000 +0100
|
||||
+++ gcc/testsuite/c-c++-common/pr42674.c 2010-01-13 18:57:58.000000000 +0100
|
||||
@@ -0,0 +1,13 @@
|
||||
+/* PR middle-end/42674 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-Wreturn-type" } */
|
||||
+
|
||||
+extern void bar (void);
|
||||
+static int foo (void) __attribute__ ((__noreturn__, __used__));
|
||||
+
|
||||
+static int
|
||||
+foo (void)
|
||||
+{
|
||||
+ while (1)
|
||||
+ bar ();
|
||||
+}
|
Loading…
Reference in New Issue