diff --git a/.cvsignore b/.cvsignore index c9e9912..138d599 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ fastjar-0.97.tar.gz -gcc-4.4.2-20091214.tar.bz2 +gcc-4.4.2-20091217.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 7a0d234..780430b 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20091214 -%global SVNREV 155239 +%global DATE 20091217 +%global SVNREV 155325 %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 17 +%global gcc_release 18 %global _unpackaged_files_terminate_build 0 %global multilib_64_archs sparc64 ppc64 s390x x86_64 %global include_gappletviewer 1 @@ -161,7 +161,7 @@ Patch16: gcc44-unwind-debug-hook.patch Patch17: gcc44-pr38757.patch Patch18: gcc44-libstdc++-docs.patch Patch19: gcc44-ppc64-aixdesc.patch -Patch20: gcc44-pr41183.patch +Patch20: gcc44-rh546017.patch Patch1000: fastjar-0.97-segfault.patch @@ -467,7 +467,7 @@ which are required to compile with the GNAT. %patch18 -p0 -b .libstdc++-docs~ %endif %patch19 -p0 -b .ppc64-aixdesc~ -%patch20 -p0 -b .pr41183~ +%patch20 -p0 -b .rh546017~ # This testcase doesn't compile. rm libjava/testsuite/libjava.lang/PR35020* @@ -1853,6 +1853,17 @@ fi %doc rpm.doc/changelogs/libmudflap/ChangeLog* %changelog +* Thu Dec 17 2009 Jakub Jelinek 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 4.4.2-17 - propagate TREE_NOTHROW/TREE_READONLY/DECL_PURE_P from ipa-pure-const and EH opt to all same body aliases (#547286) diff --git a/gcc44-pr41183.patch b/gcc44-pr41183.patch deleted file mode 100644 index 266c6cf..0000000 --- a/gcc44-pr41183.patch +++ /dev/null @@ -1,53 +0,0 @@ -2009-12-14 Jakub Jelinek - - 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 -+struct A -+{ -+ template A (const int &, T); -+ int i; -+}; -+ -+template -+template -+A::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) {} diff --git a/gcc44-rh546017.patch b/gcc44-rh546017.patch new file mode 100644 index 0000000..b1a36a7 --- /dev/null +++ b/gcc44-rh546017.patch @@ -0,0 +1,96 @@ +2009-12-15 Jakub Jelinek + + * 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; diff --git a/sources b/sources index c0355ab..cef431b 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz -d7c6ca8b8bb6d3748d413614aba9dce2 gcc-4.4.2-20091214.tar.bz2 +1bac2d18babfc08d9c27d488ffd75cc4 gcc-4.4.2-20091217.tar.bz2