diff options
author | bergner <bergner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-13 19:24:47 +0000 |
---|---|---|
committer | bergner <bergner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-13 19:24:47 +0000 |
commit | 3c67bb7d9b227bbeaddc3b975f70521137b2b984 (patch) | |
tree | 4e61a541c5ac91a95cad80bfb65fdb29f95e8c8a | |
parent | 7cf3be5b5da91b4efefbe739fd291d3e9c1278cc (diff) | |
parent | ae10eb82fe34c18640ad65c2ab94ffc53f349315 (diff) |
Merge up to 211652.ibm/gcc-4_7-branch
* REVISION: Update subversion id.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/gcc-4_7-branch@211654 138bc75d-0d04-0410-961f-82ee72b054a4
71 files changed, 579 insertions, 52 deletions
diff --git a/ChangeLog b/ChangeLog index 7d255b3aefa..e478f239cf6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog index 32cef04096f..c7dc52d65ee 100644 --- a/boehm-gc/ChangeLog +++ b/boehm-gc/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/config/ChangeLog b/config/ChangeLog index cc4d6cb2e34..6431ffed9ee 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 9389de72bb5..5d51d6ad784 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-02-02 Uros Bizjak <ubizjak@gmail.com> Backport from mainline diff --git a/contrib/reghunt/ChangeLog b/contrib/reghunt/ChangeLog index 08ecdfc41e5..c938bc57e87 100644 --- a/contrib/reghunt/ChangeLog +++ b/contrib/reghunt/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/contrib/regression/ChangeLog b/contrib/regression/ChangeLog index 3fecd83e934..270970665ac 100644 --- a/contrib/regression/ChangeLog +++ b/contrib/regression/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog index 8fae00387d8..0b91c8415b1 100644 --- a/fixincludes/ChangeLog +++ b/fixincludes/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92b1ffad583..db5c5f1df45 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,43 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + +2014-06-04 Richard Biener <rguenther@suse.de> + + Backport from mainline + 2013-05-13 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/57230 + * tree-ssa-strlen.c (handle_char_store): Add missing integer_zerop + check. + +2014-05-28 Georg-Johann Lay <avr@gjlay.de> + + PR target/61044 + * doc/extend.texi (Local Labels): Note that label differences are + not supported for AVR. + +2014-05-23 Richard Biener <rguenther@suse.de> + + Backport from mainline + 2013-08-30 Richard Biener <rguenther@suse.de> + + PR tree-optimization/58228 + * tree-vect-data-refs.c (vect_analyze_data_ref_access): Do not + allow invariant loads in nested loop vectorization. + + 2013-09-26 Richard Biener <rguenther@suse.de> + + PR tree-optimization/58539 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Honor + the fact that debug statements are not taking part in loop-closed + SSA construction. + +2014-05-22 Richard Earnshaw <rearnsha@arm.com> + + PR target/61208 + * arm.md (arm_cmpdi_unsigned): Fix length calculation for Thumb2. + 2014-05-20 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> Backport from mainline r210325 diff --git a/gcc/ChangeLog.ibm b/gcc/ChangeLog.ibm index 74607d8d8b3..e19dc48a3dc 100644 --- a/gcc/ChangeLog.ibm +++ b/gcc/ChangeLog.ibm @@ -1,3 +1,8 @@ +2014-06-13 Peter Bergner <bergner@vnet.ibm.com> + + Merge up to 211652. + * REVISION: Update subversion id. + 2014-05-21 Peter Bergner <bergner@vnet.ibm.com> Merge up to 210728. diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 985e1ca4cea..e00a573aab2 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140521 +20140612 diff --git a/gcc/DEV-PHASE b/gcc/DEV-PHASE index 373fbc60bb9..e69de29bb2d 100644 --- a/gcc/DEV-PHASE +++ b/gcc/DEV-PHASE @@ -1 +0,0 @@ -prerelease diff --git a/gcc/REVISION b/gcc/REVISION index f463c958e50..e24c74c1e74 100644 --- a/gcc/REVISION +++ b/gcc/REVISION @@ -1 +1 @@ -[ibm/gcc-4_7-branch merged from gcc-4_7-branch, revision 210728] +[ibm/gcc-4_7-branch merged from gcc-4_7-branch, revision 211652] diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 3259967be50..27a1b1b4cca 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-03-30 Eric Botcazou <ebotcazou@adacore.com> PR ada/60703 diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 210fbf8a8ee..14864444965 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-04-07 Dominique d'Humieres <dominiq@lps.ens.fr> Backport from mainline diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index bb417486758..96cb78f9604 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -7569,12 +7569,13 @@ (define_insn "*arm_cmpdi_unsigned" [(set (reg:CC_CZ CC_REGNUM) - (compare:CC_CZ (match_operand:DI 0 "s_register_operand" "r") - (match_operand:DI 1 "arm_di_operand" "rDi")))] + (compare:CC_CZ (match_operand:DI 0 "s_register_operand" "r,r") + (match_operand:DI 1 "arm_di_operand" "rDi,rDi")))] "TARGET_32BIT" "cmp\\t%R0, %R1\;it eq\;cmpeq\\t%Q0, %Q1" [(set_attr "conds" "set") - (set_attr "length" "8")] + (set_attr "arch" "a,t2") + (set_attr "length" "8,10")] ) (define_insn "*arm_cmpdi_zero" diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1ee383f8b09..8cdcfb471dc 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,13 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + +2014-05-30 Jason Merrill <jason@redhat.com> + + PR c++/56947 + * pt.c (instantiate_decl): Don't defer instantiation of a nested + function. + 2014-05-07 Jakub Jelinek <jakub@redhat.com> Backported from mainline diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index f2b2f9bccf9..e1cc59d5e46 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -18191,6 +18191,7 @@ instantiate_decl (tree d, int defer_ok, if the variable has a constant value the referring expression can take advantage of that fact. */ if (TREE_CODE (d) == VAR_DECL + || decl_function_context (d) || DECL_DECLARED_CONSTEXPR_P (d)) defer_ok = 0; diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 0887946a193..724d4862753 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -375,6 +375,8 @@ goto *(&&foo + array[i]); This is more friendly to code living in shared libraries, as it reduces the number of dynamic relocations that are needed, and by consequence, allows the data to be read-only. +This alternative with label differences is not supported for the AVR target, +please use the first approach for AVR programs. The @code{&&foo} expressions for the same label might have different values if the containing function is inlined or cloned. If a program diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 11cbdde933b..c08002a21dd 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,36 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + +2014-05-26 Janne Blomqvist <jb@gcc.gnu.org> + + Backport from mainline + PR libfortran/61310 + * intrinsics.texi (CTIME): Remove mention of locale-dependent + behavior. + +2014-05-24 Dominique d'Humieres <dominiq@lps.ens.fr> + + Backport r195492 and r195815 + 2013-01-27 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/55789 + PR fortran/56047 + * gfortran.h : Add associate_var to symbol_attr. + * resolve.c (resolve_assoc_var): Set associate_var attribute. + If the target class_ok is set, set it for the associate + variable. + * check.c (allocatable_check): Associate variables should not + have the allocatable attribute even if their symbols do. + * class.c (gfc_build_class_symbol): Symbols with associate_var + set will always have a good class container. + + 2013-02-06 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/55789 + * trans-array.c (trans_array_constructor): Remove condition + 'dynamic' = true if the loop ubound is a VAR_DECL. + 2014-03-29 Mikael Morin <mikael@gcc.gnu.org> PR fortran/60677 diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index f6195aa8b3a..e5fd0374829 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -454,7 +454,7 @@ allocatable_check (gfc_expr *e, int n) symbol_attribute attr; attr = gfc_variable_attr (e, NULL); - if (!attr.allocatable) + if (!attr.allocatable || attr.associate_var) { gfc_error ("'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE", gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic, diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c index d4ed6b043ac..55278cae075 100644 --- a/gcc/fortran/class.c +++ b/gcc/fortran/class.c @@ -493,7 +493,7 @@ gfc_build_class_symbol (gfc_typespec *ts, symbol_attribute *attr, return SUCCESS; attr->class_ok = attr->dummy || attr->pointer || attr->allocatable - || attr->select_type_temporary; + || attr->select_type_temporary || attr->associate_var; if (!attr->class_ok) /* We can not build the class container yet. */ diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 54310dfbea1..7db6dc55055 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -786,8 +786,9 @@ typedef struct unsigned alloc_comp:1, pointer_comp:1, proc_pointer_comp:1, private_comp:1, zero_comp:1, coarray_comp:1, lock_comp:1; - /* This is a temporary selector for SELECT TYPE. */ - unsigned select_type_temporary:1; + /* This is a temporary selector for SELECT TYPE or an associate + variable for SELECT_TYPE or ASSOCIATE. */ + unsigned select_type_temporary:1, associate_var:1; /* Attributes set by compiler extensions (!GCC$ ATTRIBUTES). */ unsigned ext_attr:EXT_ATTR_NUM; diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index d0a29cc25ea..327bce74305 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -3314,10 +3314,8 @@ end program test_cshift @table @asis @item @emph{Description}: @code{CTIME} converts a system time value, such as returned by -@code{TIME8}, to a string. Unless the application has called -@code{setlocale}, the output will be in the default locale, of length -24 and of the form @samp{Sat Aug 19 18:13:14 1995}. In other locales, -a longer string may result. +@code{TIME8}, to a string. The output will be of the form @samp{Sat +Aug 19 18:13:14 1995}. This intrinsic is provided in both subroutine and function forms; however, only one form can be used in any given program unit. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 514060882d6..7cd2a4069c0 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -7991,6 +7991,13 @@ resolve_assoc_var (gfc_symbol* sym, bool resolve_target) has no corank. */ sym->as->corank = 0; } + + /* Mark this as an associate variable. */ + sym->attr.associate_var = 1; + + /* If the target is a good class object, so is the associate variable. */ + if (sym->ts.type == BT_CLASS && gfc_expr_attr (target).class_ok) + sym->attr.class_ok = 1; } diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 25340f58eea..b9574627f1d 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -2282,9 +2282,6 @@ trans_array_constructor (gfc_ss * ss, locus * where) } } - if (TREE_CODE (*loop_ubound0) == VAR_DECL) - dynamic = true; - gfc_trans_create_temp_array (&outer_loop->pre, &outer_loop->post, ss, type, NULL_TREE, dynamic, true, false, where); diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index 149db5a258c..e1a9ba904e5 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 1d40c988037..8fee34ea849 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index fae2d0afff7..607a32490b3 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index f359cdc1577..76cb030b9b4 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-04-07 Dominique d'Humieres <dominiq@lps.ens.fr> Backport from mainline diff --git a/gcc/objcp/ChangeLog b/gcc/objcp/ChangeLog index 637abb7400c..e53cbfeca06 100644 --- a/gcc/objcp/ChangeLog +++ b/gcc/objcp/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index 5839fea0284..1d452bfc7d3 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4609c56f7f1..46e4621a50b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,48 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + +2014-06-04 Richard Biener <rguenther@suse.de> + + Backport from mainline + 2013-05-13 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/57230 + * gcc.dg/strlenopt-23.c: New test. + +2014-05-27 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/aliasing1.adb (dg-final): Robustify pattern matching. + +2014-05-24 Dominique d'Humieres <dominiq@lps.ens.fr> + + Backport r195492 and r195815 + 2013-01-27 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/55789 + * gfortran.dg/associate_14.f90: New test. + + PR fortran/56047 + * gfortran.dg/associate_13.f90: New test. + + 2013-02-06 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/55789 + * gfortran.dg/array_constructor_41.f90: New test. + +2014-05-23 Richard Biener <rguenther@suse.de> + + Backport from mainline + 2013-08-30 Richard Biener <rguenther@suse.de> + + PR tree-optimization/58228 + * gcc.dg/torture/pr58228.c: New testcase. + + 2013-09-26 Richard Biener <rguenther@suse.de> + + PR tree-optimization/58539 + * gcc.dg/torture/pr58539.c: New testcase. + 2014-05-20 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> Backport from mainline r210325 diff --git a/gcc/testsuite/g++.dg/template/local8.C b/gcc/testsuite/g++.dg/template/local8.C new file mode 100644 index 00000000000..006bd8c40eb --- /dev/null +++ b/gcc/testsuite/g++.dg/template/local8.C @@ -0,0 +1,18 @@ +// PR c++/56947 + +struct A +{ + A (int); +}; + +template < typename > +void Fn () +{ + const int kCapacity = 0; + struct Q:A + { + Q ():A (kCapacity) { } + }; + Q q; +} +template void Fn < int >(); diff --git a/gcc/testsuite/gcc.dg/strlenopt-23.c b/gcc/testsuite/gcc.dg/strlenopt-23.c new file mode 100644 index 00000000000..75dab2ae0bb --- /dev/null +++ b/gcc/testsuite/gcc.dg/strlenopt-23.c @@ -0,0 +1,15 @@ +/* PR tree-optimization/57230 */ +/* { dg-do run } */ +/* { dg-options "-O2" } */ + +#include "strlenopt.h" + +int +main () +{ + char p[] = "hello world"; + p[0] = (char) (strlen (p) - 1); + if (strlen (p) != 11) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr58228.c b/gcc/testsuite/gcc.dg/torture/pr58228.c new file mode 100644 index 00000000000..d12303a008d --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr58228.c @@ -0,0 +1,15 @@ +/* { dg-do run } */ + +extern void abort (void); +int a[8][8] = {{1}}; +int b, c, d, e; + +int main () +{ + for (c = 0; c < 8; c++) + for (b = 0; b < 2; b++) + a[b + 4][c] = a[c][0]; + if (a[4][4] != 1) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr58539.c b/gcc/testsuite/gcc.dg/torture/pr58539.c new file mode 100644 index 00000000000..a016150f18e --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr58539.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-g" } */ + +int a, b; + +extern void baz (int); + +int foo (int p) +{ + return p ? p : 1; +} + +void bar () +{ + int *c = &a, *d = &a; + for (b = 0; b < 12; b++) + *d |= 1; + foo (*c); + baz (*c && 1); +} diff --git a/gcc/testsuite/gfortran.dg/array_constructor_41.f90 b/gcc/testsuite/gfortran.dg/array_constructor_41.f90 new file mode 100644 index 00000000000..eb5fd92a1ee --- /dev/null +++ b/gcc/testsuite/gfortran.dg/array_constructor_41.f90 @@ -0,0 +1,33 @@ +! { dg-do compile } +! { dg-options "-fdump-tree-original" } +! Test fix for PR55789 +! +! Contributed by Joost VandVandole <Joost.VandeVondele@mat.ethz.ch> +! +MODULE M1 +CONTAINS + SUBROUTINE cp_1d_i4_sort(arr) + INTEGER(kind=4), DIMENSION(:), & + INTENT(inout) :: arr + arr = (/ (i, i = 1, SIZE(arr)) /) + END SUBROUTINE +END MODULE M1 + +PROGRAM TEST + USE M1 + INTEGER :: arr(1) + INTERFACE + SUBROUTINE mtrace() BIND(C,name="mtrace") + END SUBROUTINE + END INTERFACE + INTERFACE + SUBROUTINE muntrace() BIND(C,name="muntrace") + END SUBROUTINE + END INTERFACE + CALL mtrace() + CALL cp_1d_i4_sort(arr) + CALL muntrace() +END + +! { dg-final { scan-tree-dump-times "realloc" 0 "original" } } +! { dg-final { cleanup-tree-dump "original" } } diff --git a/gcc/testsuite/gfortran.dg/associate_13.f90 b/gcc/testsuite/gfortran.dg/associate_13.f90 new file mode 100644 index 00000000000..7c64d3f0aa7 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/associate_13.f90 @@ -0,0 +1,21 @@ +! { dg-do run } +! +! Tests the fix for PR56047. This is actually a development of +! the test case of comment #10. +! +! Reported by Juergen Reuter <juergen.reuter@desy.de> +! + implicit none + type :: process_variant_def_t + integer :: i + end type + type :: process_component_def_t + class(process_variant_def_t), allocatable :: variant_def + end type + type(process_component_def_t), dimension(1:2) :: initial + allocate (initial(1)%variant_def, source = process_variant_def_t (99)) + associate (template => initial(1)%variant_def) + template%i = 77 + end associate + if (initial(1)%variant_def%i .ne. 77) call abort +end diff --git a/gcc/testsuite/gfortran.dg/associate_14.f90 b/gcc/testsuite/gfortran.dg/associate_14.f90 new file mode 100644 index 00000000000..765e36520c6 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/associate_14.f90 @@ -0,0 +1,56 @@ +! { dg-do compile } +! Tests the fix for PR55984. +! +! Contributed by Sylwester Arabas <slayoo@staszic.waw.pl> +! +module bcd_m + type, abstract :: bcd_t + contains + procedure(bcd_fill_halos), deferred :: fill_halos + end type + abstract interface + subroutine bcd_fill_halos(this) + import :: bcd_t + class(bcd_t ) :: this + end subroutine + end interface +end module + +module solver_m + use bcd_m + type, abstract :: solver_t + integer :: n, hlo + class(bcd_t), pointer :: bcx, bcy + contains + procedure(solver_advop), deferred :: advop + end type + abstract interface + subroutine solver_advop(this) + import solver_t + class(solver_t) :: this + end subroutine + end interface + contains +end module + +module solver_mpdata_m + use solver_m + type :: mpdata_t + class(bcd_t), pointer :: bcx, bcy + contains + procedure :: advop => mpdata_advop + end type + contains + subroutine mpdata_advop(this) + class(mpdata_t) :: this + associate ( bcx => this%bcx, bcy => this%bcy ) + call bcx%fill_halos() + end associate + end subroutine +end module + + use solver_mpdata_m + class(mpdata_t), allocatable :: that + call mpdata_advop (that) +end + diff --git a/gcc/testsuite/gnat.dg/aliasing1.adb b/gcc/testsuite/gnat.dg/aliasing1.adb index b2b7d123b1f..bffc4225b47 100644 --- a/gcc/testsuite/gnat.dg/aliasing1.adb +++ b/gcc/testsuite/gnat.dg/aliasing1.adb @@ -18,5 +18,5 @@ package body Aliasing1 is end Aliasing1; --- { dg-final { scan-tree-dump-not "__gnat_rcheck" "optimized" } } +-- { dg-final { scan-tree-dump-not "gnat_rcheck" "optimized" } } -- { dg-final { cleanup-tree-dump "optimized" } } diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c index 3a3aeeac9f2..532bdac3faa 100644 --- a/gcc/tree-ssa-strlen.c +++ b/gcc/tree-ssa-strlen.c @@ -1693,7 +1693,7 @@ handle_char_store (gimple_stmt_iterator *gsi) its length may be decreased. */ adjust_last_stmt (si, stmt, false); } - else if (si != NULL) + else if (si != NULL && integer_zerop (gimple_assign_rhs1 (stmt))) { si = unshare_strinfo (si); si->length = build_int_cst (size_type_node, 0); diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 0faf1a93c9d..07253ec011d 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -2332,6 +2332,12 @@ vect_analyze_data_ref_access (struct data_reference *dr) if (loop_vinfo && dr_step == 0) { GROUP_FIRST_ELEMENT (vinfo_for_stmt (stmt)) = NULL; + if (nested_in_vect_loop_p (loop, stmt)) + { + if (vect_print_dump_info (REPORT_DETAILS)) + fprintf (vect_dump, "zero step in inner loop of nest"); + return false; + } return DR_IS_READ (dr); } diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 964e5dd2c88..8dea3cfbd6c 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -4164,7 +4164,8 @@ vect_finalize_reduction: result. (The reduction result is expected to have two immediate uses - one at the latch block, and one at the loop exit). */ FOR_EACH_IMM_USE_FAST (use_p, imm_iter, scalar_dest) - if (!flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p)))) + if (!flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p))) + && !is_gimple_debug (USE_STMT (use_p))) VEC_safe_push (gimple, heap, phis, USE_STMT (use_p)); /* We expect to have found an exit_phi because of loop-closed-ssa @@ -4292,7 +4293,10 @@ vect_finalize_reduction: FOR_EACH_IMM_USE_FAST (use_p, imm_iter, scalar_dest) { if (!flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p)))) - VEC_safe_push (gimple, heap, phis, USE_STMT (use_p)); + { + if (!is_gimple_debug (USE_STMT (use_p))) + VEC_safe_push (gimple, heap, phis, USE_STMT (use_p)); + } else { if (double_reduc && gimple_code (USE_STMT (use_p)) == GIMPLE_PHI) @@ -4302,7 +4306,8 @@ vect_finalize_reduction: FOR_EACH_IMM_USE_FAST (phi_use_p, phi_imm_iter, phi_res) { if (!flow_bb_inside_loop_p (loop, - gimple_bb (USE_STMT (phi_use_p)))) + gimple_bb (USE_STMT (phi_use_p))) + && !is_gimple_debug (USE_STMT (phi_use_p))) VEC_safe_push (gimple, heap, phis, USE_STMT (phi_use_p)); } diff --git a/gnattools/ChangeLog b/gnattools/ChangeLog index 133cd35e3d9..7bf9ddb9f0d 100644 --- a/gnattools/ChangeLog +++ b/gnattools/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/include/ChangeLog b/include/ChangeLog index 10d381836b1..95c3c9f3183 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/intl/ChangeLog b/intl/ChangeLog index 139a9446eba..10259f088f8 100644 --- a/intl/ChangeLog +++ b/intl/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libada/ChangeLog b/libada/ChangeLog index b46401c0f85..0157b271db8 100644 --- a/libada/ChangeLog +++ b/libada/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index bfb1e194160..df5e3e5303e 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog index 59908dc6dce..5b655c634eb 100644 --- a/libcpp/po/ChangeLog +++ b/libcpp/po/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libdecnumber/ChangeLog b/libdecnumber/ChangeLog index 9fb29a80cc9..50a25b2caa7 100644 --- a/libdecnumber/ChangeLog +++ b/libdecnumber/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libffi/ChangeLog b/libffi/ChangeLog index 50779683022..3889b2a9948 100644 --- a/libffi/ChangeLog +++ b/libffi/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 45981daf6e6..17c5290d5e8 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-03-20 Joel Sherrill <joel.sherrill@oarcorp.com> * config.host (v850*-*-*): Add to tmake_file instead of resetting it. diff --git a/libgcc/config/libbid/ChangeLog b/libgcc/config/libbid/ChangeLog index 4d10c69db91..d0aab4be48e 100644 --- a/libgcc/config/libbid/ChangeLog +++ b/libgcc/config/libbid/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 75805d2bbcf..bcc0237988a 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,18 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + +2014-05-26 Janne Blomqvist <jb@gcc.gnu.org> + + Backport from mainline + PR libfortran/61310 + * intrinsics/ctime.c (strctime): Rename to gf_ctime, use snprintf + instead of strftime. + (fdate): Use gf_ctime. + (fdate_sub): Likewise. + (ctime): Likewise. + (ctime_sub): Likewise. + 2014-05-16 Janne Blomqvist <jb@gcc.gnu.org> Backport from trunk: diff --git a/libgfortran/intrinsics/ctime.c b/libgfortran/intrinsics/ctime.c index 05bf31fc779..86e8e565cb4 100644 --- a/libgfortran/intrinsics/ctime.c +++ b/libgfortran/intrinsics/ctime.c @@ -1,5 +1,5 @@ /* Implementation of the CTIME and FDATE g77 intrinsics. - Copyright (C) 2005, 2007, 2009, 2011 Free Software Foundation, Inc. + Copyright (C) 2005-2013 Free Software Foundation, Inc. Contributed by François-Xavier Coudert <coudert@clipper.ens.fr> This file is part of the GNU Fortran runtime library (libgfortran). @@ -31,31 +31,53 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #include <string.h> -/* strftime-like function that fills a C string with %c format which - is identical to ctime in the default locale. As ctime and ctime_r - are poorly specified and their usage not recommended, the - implementation instead uses strftime. */ +/* Maximum space a ctime-like string might need. A "normal" ctime + string is 26 bytes, and in our case 24 bytes as we don't include + the trailing newline and null. However, the longest possible year + number is -2,147,481,748 (1900 - 2,147,483,648, since tm_year is a + 32-bit signed integer) so an extra 7 bytes are needed. */ +#define CTIME_BUFSZ 31 -static size_t -strctime (char *s, size_t max, const time_t *timep) + +/* Thread-safe ctime-like function that fills a Fortran + string. ctime_r is a portability headache and marked as obsolescent + in POSIX 2008, which recommends strftime in its place. However, + strftime(..., "%c",...) doesn't produce ctime-like output on + MinGW, so do it manually with snprintf. */ + +static int +gf_ctime (char *s, size_t max, const time_t timev) { struct tm ltm; int failed; + char buf[CTIME_BUFSZ + 1]; /* Some targets provide a localtime_r based on a draft of the POSIX standard where the return type is int rather than the standardized struct tm*. */ - __builtin_choose_expr (__builtin_classify_type (localtime_r (timep, <m)) + __builtin_choose_expr (__builtin_classify_type (localtime_r (&timev, <m)) == 5, - failed = localtime_r (timep, <m) == NULL, - failed = localtime_r (timep, <m) != 0); + failed = localtime_r (&timev, <m) == NULL, + failed = localtime_r (&timev, <m) != 0); if (failed) - return 0; - return strftime (s, max, "%c", <m); + goto blank; + int n = snprintf (buf, sizeof (buf), + "%3.3s %3.3s%3d %.2d:%.2d:%.2d %d", + "SunMonTueWedThuFriSat" + ltm.tm_wday * 3, + "JanFebMarAprMayJunJulAugSepOctNovDec" + ltm.tm_mon * 3, + ltm.tm_mday, ltm.tm_hour, ltm.tm_min, ltm.tm_sec, + 1900 + ltm.tm_year); + if (n < 0) + goto blank; + if ((size_t) n <= max) + { + cf_strcpy (s, max, buf); + return n; + } + blank: + memset (s, ' ', max); + return 0; } -/* In the default locale, the date and time representation fits in 26 - bytes. However, other locales might need more space. */ -#define CSZ 100 extern void fdate (char **, gfc_charlen_type *); export_proto(fdate); @@ -64,8 +86,8 @@ void fdate (char ** date, gfc_charlen_type * date_len) { time_t now = time(NULL); - *date = get_mem (CSZ); - *date_len = strctime (*date, CSZ, &now); + *date = get_mem (CTIME_BUFSZ); + *date_len = gf_ctime (*date, CTIME_BUFSZ, now); } @@ -76,10 +98,7 @@ void fdate_sub (char * date, gfc_charlen_type date_len) { time_t now = time(NULL); - char *s = get_mem (date_len + 1); - size_t n = strctime (s, date_len + 1, &now); - fstrcpy (date, date_len, s, n); - free (s); + gf_ctime (date, date_len, now); } @@ -91,8 +110,8 @@ void PREFIX(ctime) (char ** date, gfc_charlen_type * date_len, GFC_INTEGER_8 t) { time_t now = t; - *date = get_mem (CSZ); - *date_len = strctime (*date, CSZ, &now); + *date = get_mem (CTIME_BUFSZ); + *date_len = gf_ctime (*date, CTIME_BUFSZ, now); } @@ -103,8 +122,5 @@ void ctime_sub (GFC_INTEGER_8 * t, char * date, gfc_charlen_type date_len) { time_t now = *t; - char *s = get_mem (date_len + 1); - size_t n = strctime (s, date_len + 1, &now); - fstrcpy (date, date_len, s, n); - free (s); + gf_ctime (date, date_len, now); } diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 8d3bc356eff..f2cb30d2fe9 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-04-02 Richard Henderson <rth@redhat.com> * config/linux/futex.h (futex_wait): Get error value from errno. diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index d63df9cd383..50571d412fb 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-11-15 Joseph Myers <joseph@codesourcery.com> Backport from mainline: diff --git a/libitm/ChangeLog b/libitm/ChangeLog index b94cd32cfd1..56242bac9cf 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-04-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * config/generic/asmcfi.h: Also check for diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 4632912f9c0..2e9dcc562d6 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-03-11 Uros Bizjak <ubizjak@gmail.com> * java/lang/natObject.cc (_Jv_MonitorEnter): Add missing parenthesis diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index a06cd1e6238..44f40de98ab 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libjava/libltdl/ChangeLog b/libjava/libltdl/ChangeLog index 84447da3f22..88141db9409 100644 --- a/libjava/libltdl/ChangeLog +++ b/libjava/libltdl/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libmudflap/ChangeLog b/libmudflap/ChangeLog index 48f74d60c42..26634fbc21f 100644 --- a/libmudflap/ChangeLog +++ b/libmudflap/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog index fc3b5c0aeba..5e211638051 100644 --- a/libobjc/ChangeLog +++ b/libobjc/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog index 855bdacdc82..928cd72993f 100644 --- a/libquadmath/ChangeLog +++ b/libquadmath/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libssp/ChangeLog b/libssp/ChangeLog index 5dcf0df24b4..e7ae7f243fc 100644 --- a/libssp/ChangeLog +++ b/libssp/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index fb49617b208..36c87cc1153 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + +2014-05-29 Jonathan Wakely <jwakely@redhat.com> + + * include/tr2/bool_set: Use UTF-8 for accented characters. + * scripts/run_doxygen: Handle Doxygen 1.8.x change. + 2014-05-08 Joshua Gay <jgay@gnu.org> PR libstdc++/61117 diff --git a/libstdc++-v3/include/tr2/bool_set b/libstdc++-v3/include/tr2/bool_set index f577ed0c76c..7252a8067e7 100644 --- a/libstdc++-v3/include/tr2/bool_set +++ b/libstdc++-v3/include/tr2/bool_set @@ -44,7 +44,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * bool_set * * See N2136, Bool_set: multi-valued logic - * by Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion. + * by Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion. * * The implicit conversion to bool is slippery! I may use the new * explicit conversion. This has been specialized in the language diff --git a/libstdc++-v3/scripts/run_doxygen b/libstdc++-v3/scripts/run_doxygen index 45b3f4a066a..8f9c251f643 100644 --- a/libstdc++-v3/scripts/run_doxygen +++ b/libstdc++-v3/scripts/run_doxygen @@ -194,8 +194,15 @@ fi if $do_latex; then cd ${outdir}/${mode} - # Also drop in the header file and style sheet - doxygen -w latex header.tex doxygen.sty + # Grrr, Doxygen 1.8.x changed the -w latex options. + need_footer=`doxygen -h | sed -n -e '/-w latex/s=.*footer.*=true=p'` + + # Also drop in the header file (maybe footer file) and style sheet + if $need_footer; then + doxygen -w latex header.tex footer.tex doxygen.sty + else + doxygen -w latex header.tex doxygen.sty + fi echo :: echo :: LaTeX pages begin with diff --git a/lto-plugin/ChangeLog b/lto-plugin/ChangeLog index 3e6d6938d5d..ff8bdb5b4fe 100644 --- a/lto-plugin/ChangeLog +++ b/lto-plugin/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/maintainer-scripts/ChangeLog b/maintainer-scripts/ChangeLog index c74b6cff836..f32ee87a07d 100644 --- a/maintainer-scripts/ChangeLog +++ b/maintainer-scripts/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/zlib/ChangeLog b/zlib/ChangeLog index aeabcd9dbda..3a3687d1f9d 100644 --- a/zlib/ChangeLog +++ b/zlib/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. |