4.4.2-18
This commit is contained in:
parent
d6e42845fd
commit
e249787ad8
|
@ -1,2 +1,2 @@
|
||||||
fastjar-0.97.tar.gz
|
fastjar-0.97.tar.gz
|
||||||
gcc-4.4.2-20091214.tar.bz2
|
gcc-4.4.2-20091217.tar.bz2
|
||||||
|
|
21
gcc.spec
21
gcc.spec
|
@ -1,9 +1,9 @@
|
||||||
%global DATE 20091214
|
%global DATE 20091217
|
||||||
%global SVNREV 155239
|
%global SVNREV 155325
|
||||||
%global gcc_version 4.4.2
|
%global gcc_version 4.4.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.
|
||||||
%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
|
||||||
|
@ -161,7 +161,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-pr41183.patch
|
Patch20: gcc44-rh546017.patch
|
||||||
|
|
||||||
Patch1000: fastjar-0.97-segfault.patch
|
Patch1000: fastjar-0.97-segfault.patch
|
||||||
|
|
||||||
|
@ -467,7 +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 .pr41183~
|
%patch20 -p0 -b .rh546017~
|
||||||
|
|
||||||
# This testcase doesn't compile.
|
# This testcase doesn't compile.
|
||||||
rm libjava/testsuite/libjava.lang/PR35020*
|
rm libjava/testsuite/libjava.lang/PR35020*
|
||||||
|
@ -1853,6 +1853,17 @@ fi
|
||||||
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Dec 17 2009 Jakub Jelinek <jakub@redhat.com> 4.4.2-18
|
||||||
|
- update from gcc-4_4-branch
|
||||||
|
- PRs c++/42387
|
||||||
|
- another C++ virtual dtors fix (PR c++/42386)
|
||||||
|
- VTA mode and COND_EXEC fixes (PR debug/41679)
|
||||||
|
- fix ICE in chrec_convert_1 (#547775)
|
||||||
|
- fix debuginfo for optimized out TLS vars
|
||||||
|
- use DW_AT_location with DW_OP_addr + DW_OP_stack_value instead of
|
||||||
|
DW_AT_const_value with address in it, use DW_OP_addr + DW_OP_stack_value
|
||||||
|
instead of DW_OP_implicit_value with address (#546017)
|
||||||
|
|
||||||
* Mon Dec 14 2009 Jakub Jelinek <jakub@redhat.com> 4.4.2-17
|
* Mon Dec 14 2009 Jakub Jelinek <jakub@redhat.com> 4.4.2-17
|
||||||
- propagate TREE_NOTHROW/TREE_READONLY/DECL_PURE_P from ipa-pure-const and
|
- propagate TREE_NOTHROW/TREE_READONLY/DECL_PURE_P from ipa-pure-const and
|
||||||
EH opt to all same body aliases (#547286)
|
EH opt to all same body aliases (#547286)
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
2009-12-14 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
PR c++/41183
|
|
||||||
* cp-tree.h (current_class_ptr): Give NULL even when cfun
|
|
||||||
has NULL cfun->language.
|
|
||||||
|
|
||||||
* g++.dg/torture/pr41183.C: New test.
|
|
||||||
|
|
||||||
--- gcc/cp/cp-tree.h.jj 2009-09-24 10:21:50.000000000 +0200
|
|
||||||
+++ gcc/cp/cp-tree.h 2009-12-14 15:06:38.000000000 +0100
|
|
||||||
@@ -883,7 +883,8 @@ struct language_function GTY(())
|
|
||||||
expression for `*this'. */
|
|
||||||
|
|
||||||
#define current_class_ptr \
|
|
||||||
- (cfun ? cp_function_chain->x_current_class_ptr : NULL_TREE)
|
|
||||||
+ (cfun && cp_function_chain \
|
|
||||||
+ ? cp_function_chain->x_current_class_ptr : NULL_TREE)
|
|
||||||
#define current_class_ref \
|
|
||||||
(cfun ? cp_function_chain->x_current_class_ref : NULL_TREE)
|
|
||||||
|
|
||||||
--- gcc/testsuite/g++.dg/torture/pr41183.C.jj 2009-12-14 15:10:57.000000000 +0100
|
|
||||||
+++ gcc/testsuite/g++.dg/torture/pr41183.C 2009-12-14 15:11:01.000000000 +0100
|
|
||||||
@@ -0,0 +1,30 @@
|
|
||||||
+// PR c++/41183
|
|
||||||
+// { dg-do compile }
|
|
||||||
+
|
|
||||||
+void foo (const char *);
|
|
||||||
+
|
|
||||||
+template <int *>
|
|
||||||
+struct A
|
|
||||||
+{
|
|
||||||
+ template <typename T> A (const int &, T);
|
|
||||||
+ int i;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+template <int *X>
|
|
||||||
+template <typename T>
|
|
||||||
+A<X>::A (const int &j, T) : i(j)
|
|
||||||
+{
|
|
||||||
+ foo (0);
|
|
||||||
+ foo (0);
|
|
||||||
+ foo (__PRETTY_FUNCTION__);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int N;
|
|
||||||
+
|
|
||||||
+struct B
|
|
||||||
+{
|
|
||||||
+ B ();
|
|
||||||
+ A<&N> a;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+B::B() : a(N, 0) {}
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
2009-12-15 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* dwarf2out.c (loc_descriptor): For SYMBOL_REFs and LABEL_REFs
|
||||||
|
use DW_OP_addr+DW_OP_stack_value instead of DW_OP_implicit_value.
|
||||||
|
(add_const_value_attribute): For CONST_STRING, SYMBOL_REFs and
|
||||||
|
LABEL_REFs use DW_OP_addr+DW_OP_stack_value DW_AT_location instead of
|
||||||
|
DW_AT_const_value.
|
||||||
|
|
||||||
|
* gcc.dg/debug/dwarf2/const-1.c: Don't expect DW_AT_const_value,
|
||||||
|
but instead DW_AT_location with DW_OP_addr+DW_OP_stack_value. Add
|
||||||
|
-gno-strict-dwarf -fno-merge-debug-strings to dg-options.
|
||||||
|
* g++.dg/debug/dwarf2/const1.C: Likewise.
|
||||||
|
|
||||||
|
--- gcc/dwarf2out.c.jj 2009-12-14 17:55:28.000000000 +0100
|
||||||
|
+++ gcc/dwarf2out.c 2009-12-14 22:33:32.000000000 +0100
|
||||||
|
@@ -13775,10 +13775,10 @@ loc_descriptor (rtx rtl, enum machine_mo
|
||||||
|
if (mode != VOIDmode && GET_MODE_SIZE (mode) == DWARF2_ADDR_SIZE
|
||||||
|
&& (dwarf_version >= 4 || !dwarf_strict))
|
||||||
|
{
|
||||||
|
- loc_result = new_loc_descr (DW_OP_implicit_value,
|
||||||
|
- DWARF2_ADDR_SIZE, 0);
|
||||||
|
- loc_result->dw_loc_oprnd2.val_class = dw_val_class_addr;
|
||||||
|
- loc_result->dw_loc_oprnd2.v.val_addr = rtl;
|
||||||
|
+ loc_result = new_loc_descr (DW_OP_addr, 0, 0);
|
||||||
|
+ loc_result->dw_loc_oprnd1.val_class = dw_val_class_addr;
|
||||||
|
+ loc_result->dw_loc_oprnd1.v.val_addr = rtl;
|
||||||
|
+ add_loc_descr (&loc_result, new_loc_descr (DW_OP_stack_value, 0, 0));
|
||||||
|
VEC_safe_push (rtx, gc, used_rtx_array, rtl);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
@@ -15223,10 +15223,20 @@ add_const_value_attribute (dw_die_ref di
|
||||||
|
return true;
|
||||||
|
|
||||||
|
case CONST_STRING:
|
||||||
|
- resolve_one_addr (&rtl, NULL);
|
||||||
|
- add_AT_addr (die, DW_AT_const_value, rtl);
|
||||||
|
- VEC_safe_push (rtx, gc, used_rtx_array, rtl);
|
||||||
|
- return true;
|
||||||
|
+ if (dwarf_version >= 4 || !dwarf_strict)
|
||||||
|
+ {
|
||||||
|
+ dw_loc_descr_ref loc_result;
|
||||||
|
+ resolve_one_addr (&rtl, NULL);
|
||||||
|
+ rtl_addr:
|
||||||
|
+ loc_result = new_loc_descr (DW_OP_addr, 0, 0);
|
||||||
|
+ loc_result->dw_loc_oprnd1.val_class = dw_val_class_addr;
|
||||||
|
+ loc_result->dw_loc_oprnd1.v.val_addr = rtl;
|
||||||
|
+ add_loc_descr (&loc_result, new_loc_descr (DW_OP_stack_value, 0, 0));
|
||||||
|
+ add_AT_loc (die, DW_AT_location, loc_result);
|
||||||
|
+ VEC_safe_push (rtx, gc, used_rtx_array, rtl);
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+ return false;
|
||||||
|
|
||||||
|
case CONST:
|
||||||
|
if (CONSTANT_P (XEXP (rtl, 0)))
|
||||||
|
@@ -15236,9 +15246,9 @@ add_const_value_attribute (dw_die_ref di
|
||||||
|
if (!const_ok_for_output (rtl))
|
||||||
|
return false;
|
||||||
|
case LABEL_REF:
|
||||||
|
- add_AT_addr (die, DW_AT_const_value, rtl);
|
||||||
|
- VEC_safe_push (rtx, gc, used_rtx_array, rtl);
|
||||||
|
- return true;
|
||||||
|
+ if (dwarf_version >= 4 || !dwarf_strict)
|
||||||
|
+ goto rtl_addr;
|
||||||
|
+ return false;
|
||||||
|
|
||||||
|
case PLUS:
|
||||||
|
/* In cases where an inlined instance of an inline function is passed
|
||||||
|
--- gcc/testsuite/gcc.dg/debug/dwarf2/const-1.c.jj 2009-09-30 12:19:16.000000000 +0200
|
||||||
|
+++ gcc/testsuite/gcc.dg/debug/dwarf2/const-1.c 2009-12-15 10:57:48.000000000 +0100
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
/* { dg-do compile } */
|
||||||
|
-/* { dg-options "-O -gdwarf-2 -dA" } */
|
||||||
|
+/* { dg-options "-O -gdwarf-2 -dA -gno-strict-dwarf -fno-merge-debug-strings" } */
|
||||||
|
/* { dg-require-visibility "" } */
|
||||||
|
-/* { dg-final { scan-assembler "DW_AT_const_value" } } */
|
||||||
|
+/* { dg-final { scan-assembler "DW_AT_location\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_addr\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*fnx\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_stack_value" } } */
|
||||||
|
|
||||||
|
-extern void x() __attribute__((visibility("hidden")));
|
||||||
|
-static void (*f)() = x;
|
||||||
|
+extern void fnx() __attribute__((visibility("hidden")));
|
||||||
|
+static void (*f)() = fnx;
|
||||||
|
--- gcc/testsuite/g++.dg/debug/dwarf2/const1.C.jj 2009-09-30 12:19:16.000000000 +0200
|
||||||
|
+++ gcc/testsuite/g++.dg/debug/dwarf2/const1.C 2009-12-15 11:02:24.000000000 +0100
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
/* { dg-do compile } */
|
||||||
|
-/* { dg-options "-O -gdwarf-2 -dA" } */
|
||||||
|
+/* { dg-options "-O -gdwarf-2 -dA -gno-strict-dwarf -fno-merge-debug-strings" } */
|
||||||
|
/* { dg-require-visibility "" } */
|
||||||
|
-/* { dg-final { scan-assembler "DW_AT_const_value" } } */
|
||||||
|
+/* { dg-final { scan-assembler "DW_AT_location\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_addr\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*fnx\[^\\r\\n\]*\[\\r\\n\]*\[^\\r\\n\]*DW_OP_stack_value" } } */
|
||||||
|
|
||||||
|
-extern void x () __attribute__((visibility ("hidden")));
|
||||||
|
-void (* const f) () = x;
|
||||||
|
+extern void fnx () __attribute__((visibility ("hidden")));
|
||||||
|
+void (* const f) () = fnx;
|
Loading…
Reference in New Issue