From 773cefac2c4b9737105ee562f13655c0f95347df Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 27 Feb 2016 08:24:13 +0100 Subject: [PATCH] 6.0.0-0.13 --- .gitignore | 1 + gcc.spec | 30 ++++++++++++++++++--- gcc6-pr69947.patch | 66 ++++++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 4 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 gcc6-pr69947.patch diff --git a/.gitignore b/.gitignore index ff49246..5475a8d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /gcc-6.0.0-20160219.tar.bz2 +/gcc-6.0.0-20160227.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 66b3c02..99333c2 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20160219 -%global SVNREV 233570 +%global DATE 20160227 +%global SVNREV 233778 %global gcc_version 6.0.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 0.12 +%global gcc_release 0.13 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 # Hardening slows the compiler way too much. @@ -206,6 +206,7 @@ Patch10: gcc6-no-add-needed.patch Patch11: gcc6-libgo-p224.patch Patch12: gcc6-aarch64-async-unw-tables.patch Patch13: gcc6-libsanitize-aarch64-va42.patch +Patch14: gcc6-pr69947.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -772,6 +773,7 @@ package or when debugging this package. rm -f libgo/go/crypto/elliptic/p224{,_test}.go %patch12 -p0 -b .aarch64-async-unw-tables~ %patch13 -p0 -b .libsanitize-aarch64-va42~ +%patch14 -p0 -b .pr69947~ %if 0%{?_enable_debug_packages} mkdir dwz-wrapper @@ -3064,6 +3066,28 @@ fi %doc rpm.doc/changelogs/libcc1/ChangeLog* %changelog +* Sat Feb 27 2016 Jakub Jelinek 6.0.0-0.13 +- update from the trunk + - PRs c++/15766, c++/67364, c++/68049, c++/69323, c++/69736, c++/69743, + c++/69826, c++/69865, c++/69889, c++/69902, c++/69912, c++/69922, + c++/69958, c/28901, c/51147, c/69759, c/69819, c/69900, c/69911, + c/69918, debug/61033, debug/69705, driver/68463, driver/69805, + fortran/52531, fortran/57365, fortran/61156, fortran/69423, hsa/69568, + ipa/37448, ipa/69630, libgfortran/69456, libstdc++/69881, + libstdc++/69893, libstdc++/69939, middle-end/68963, middle-end/69760, + middle-end/69780, middle-end/69909, middle-end/69915, + middle-end/69919, middle-end/69920, objc/69844, preprocessor/69558, + rtl-optimization/69886, rtl-optimization/69891, + rtl-optimization/69896, target/54089, target/61397, target/69613, + target/69709, target/69806, target/69810, target/69875, target/69885, + target/69888, target/69894, target/69895, target/69946, target/69969, + tree-optimization/15826, tree-optimization/48795, + tree-optimization/69551, tree-optimization/69666, + tree-optimization/69740, tree-optimization/69882, + tree-optimization/69907 +- make sure DW_TAG_dwarf_procedure referenced from DW_OP_GNU_implicit_pointer + is not pruned as "unused" (PR debug/69947) + * Fri Feb 19 2016 Jakub Jelinek 6.0.0-0.12 - update from the trunk - PRs bootstrap/69816, c++/65985, c++/67767, c++/68585, c++/68679, diff --git a/gcc6-pr69947.patch b/gcc6-pr69947.patch new file mode 100644 index 0000000..fc5d13e --- /dev/null +++ b/gcc6-pr69947.patch @@ -0,0 +1,66 @@ +2016-02-25 Jakub Jelinek + + PR debug/69947 + * dwarf2out.c (prune_unused_types_walk_loc_descr): Handle + all other ops that have dw_val_class_die_ref operands, + and DW_OP_GNU_entry_value. + + * gcc.dg/guality/pr69947.c: New test. + +--- gcc/dwarf2out.c.jj 2016-02-25 17:04:11.465781368 +0100 ++++ gcc/dwarf2out.c 2016-02-25 17:41:26.785371399 +0100 +@@ -25641,11 +25641,29 @@ prune_unused_types_walk_loc_descr (dw_lo + for (; loc != NULL; loc = loc->dw_loc_next) + switch (loc->dw_loc_opc) + { ++ case DW_OP_GNU_implicit_pointer: ++ case DW_OP_GNU_convert: ++ case DW_OP_GNU_reinterpret: ++ if (loc->dw_loc_oprnd1.val_class == dw_val_class_die_ref) ++ prune_unused_types_mark (loc->dw_loc_oprnd1.v.val_die_ref.die, 1); ++ break; + case DW_OP_call2: + case DW_OP_call4: + case DW_OP_call_ref: ++ case DW_OP_GNU_const_type: ++ case DW_OP_GNU_parameter_ref: ++ gcc_assert (loc->dw_loc_oprnd1.val_class == dw_val_class_die_ref); + prune_unused_types_mark (loc->dw_loc_oprnd1.v.val_die_ref.die, 1); + break; ++ case DW_OP_GNU_regval_type: ++ case DW_OP_GNU_deref_type: ++ gcc_assert (loc->dw_loc_oprnd2.val_class == dw_val_class_die_ref); ++ prune_unused_types_mark (loc->dw_loc_oprnd2.v.val_die_ref.die, 1); ++ break; ++ case DW_OP_GNU_entry_value: ++ gcc_assert (loc->dw_loc_oprnd1.val_class == dw_val_class_loc); ++ prune_unused_types_walk_loc_descr (loc->dw_loc_oprnd1.v.val_loc); ++ break; + default: + break; + } +--- gcc/testsuite/gcc.dg/guality/pr69947.c.jj 2016-02-25 17:22:13.729098931 +0100 ++++ gcc/testsuite/gcc.dg/guality/pr69947.c 2016-02-25 17:22:13.729098931 +0100 +@@ -0,0 +1,22 @@ ++/* PR debug/69947 */ ++/* { dg-do run } */ ++/* { dg-options "-g" } */ ++ ++#include "../nop.h" ++ ++static const char *c = "foobar"; ++ ++__attribute__((noinline, noclone)) void ++foo (void) ++{ ++ static const char a[] = "abcdefg"; ++ const char *b = a; /* { dg-final { gdb-test 14 "c\[2\]" "'o'" } } */ ++ asm (NOP : : : "memory"); /* { dg-final { gdb-test 14 "b\[4\]" "'e'" } } */ ++} ++ ++int ++main () ++{ ++ foo (); ++ return 0; ++} diff --git a/sources b/sources index 949b9c6..f0e4813 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -930f315c148900b693cd38286aa086a4 gcc-6.0.0-20160219.tar.bz2 +355ef84ab33557cd2d7f3110fad9a492 gcc-6.0.0-20160227.tar.bz2