From 74fd6a481624213c16c7bb04b5250d40d75f51e5 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 19 Feb 2014 00:16:24 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@207861 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 410ddac79b2..c3a362e0128 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140218 +20140219 -- cgit v1.2.1 From f95918fdf84e1c13446a31f30c4969cd15aa3802 Mon Sep 17 00:00:00 2001 From: jason Date: Wed, 19 Feb 2014 19:59:09 +0000 Subject: PR c++/60046 * pt.c (maybe_instantiate_noexcept): Don't instantiate exception spec from template context. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@207922 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/pt.c | 4 ++++ gcc/testsuite/g++.dg/cpp0x/noexcept22.C | 21 +++++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/noexcept22.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d32d4c4f380..5798bbc8584 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-02-19 Jason Merrill + + PR c++/60046 + * pt.c (maybe_instantiate_noexcept): Don't instantiate exception + spec from template context. + 2014-01-31 Jason Merrill PR c++/57043 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index ed33198dda2..f2b2f9bccf9 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -18093,6 +18093,10 @@ maybe_instantiate_noexcept (tree fn) { tree fntype, spec, noex, clone; + /* Don't instantiate a noexcept-specification from template context. */ + if (processing_template_decl) + return; + if (DECL_CLONED_FUNCTION_P (fn)) fn = DECL_CLONED_FUNCTION (fn); fntype = TREE_TYPE (fn); diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept22.C b/gcc/testsuite/g++.dg/cpp0x/noexcept22.C new file mode 100644 index 00000000000..7aab0f43c4e --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/noexcept22.C @@ -0,0 +1,21 @@ +// PR c++/60046 +// { dg-require-effective-target c++11 } + +constexpr bool foo () { return noexcept (true); } +template +struct V +{ + void bar (V &) noexcept (foo ()) {} +}; +template +struct W : public V +{ + void bar (W &x) { V ::bar (x); } +}; + +int +main () +{ + W a, b; + a.bar (b); +} -- cgit v1.2.1 From ebbbfa21af466d01000762193cfb3e61dce06cda Mon Sep 17 00:00:00 2001 From: hjl Date: Wed, 19 Feb 2014 22:45:34 +0000 Subject: Remove TFmode check for X86_64_INTEGER_CLASS Backport from mainline PR target/60207 * config/i386/i386.c (construct_container): Remove TFmode check for X86_64_INTEGER_CLASS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@207926 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/config/i386/i386.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2985bfab12c..f67671ebb17 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-02-19 H.J. Lu + + Backport from mainline + 2014-02-19 H.J. Lu + + PR target/60207 + * config/i386/i386.c (construct_container): Remove TFmode check + for X86_64_INTEGER_CLASS. + 2014-02-18 Kai Tietz Backport from mainline diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index d4c02bc61b1..bbf897854c3 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -6360,7 +6360,7 @@ construct_container (enum machine_mode mode, enum machine_mode orig_mode, return gen_rtx_REG (XFmode, FIRST_STACK_REG); if (n == 2 && regclass[0] == X86_64_INTEGER_CLASS && regclass[1] == X86_64_INTEGER_CLASS - && (mode == CDImode || mode == TImode || mode == TFmode) + && (mode == CDImode || mode == TImode) && intreg[0] + 1 == intreg[1]) return gen_rtx_REG (mode, intreg[0]); -- cgit v1.2.1 From 75809ab8697b3e250df0f62d75cbd21e5be81dc2 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 20 Feb 2014 00:16:36 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@207928 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index c3a362e0128..afcbf75781d 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140219 +20140220 -- cgit v1.2.1 From d597ea4514612bedf8f8f8243e79e02741ab155e Mon Sep 17 00:00:00 2001 From: xguo Date: Thu, 20 Feb 2014 02:32:49 +0000 Subject: 2014-02-20 Terry Guo Backport from mainline 2014-02-08 Terry Guo * doc/invoke.texi: Document ARM -march=armv7e-m. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@207931 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/doc/invoke.texi | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f67671ebb17..1d8f7426038 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-02-20 Terry Guo + + Backport from mainline + 2014-02-08 Terry Guo + + * doc/invoke.texi: Document ARM -march=armv7e-m. + 2014-02-19 H.J. Lu Backport from mainline diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index f1a6d1afe9d..b52a084e12e 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -10658,7 +10658,7 @@ of the @option{-mcpu=} option. Permissible names are: @samp{armv2}, @samp{armv5}, @samp{armv5t}, @samp{armv5e}, @samp{armv5te}, @samp{armv6}, @samp{armv6j}, @samp{armv6t2}, @samp{armv6z}, @samp{armv6zk}, @samp{armv6-m}, -@samp{armv7}, @samp{armv7-a}, @samp{armv7-r}, @samp{armv7-m}, +@samp{armv7}, @samp{armv7-a}, @samp{armv7-r}, @samp{armv7-m}, @samp{armv7e-m}, @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}. @option{-march=native} causes the compiler to auto-detect the architecture -- cgit v1.2.1 From 9e7eda7c60da2686ee4ecb39668d7e77690edf4d Mon Sep 17 00:00:00 2001 From: janus Date: Thu, 20 Feb 2014 08:00:48 +0000 Subject: 2014-02-20 Janus Weil Backport from mainline 2014-02-17 Janus Weil PR fortran/55907 * resolve.c (build_default_init_expr): Don't initialize character variable if -fno-automatic is given. 2014-02-20 Janus Weil Backport from mainline 2014-02-17 Janus Weil PR fortran/55907 * gfortran.dg/init_flag_12.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@207935 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 9 +++++++++ gcc/fortran/resolve.c | 2 +- gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gfortran.dg/init_flag_12.f90 | 13 +++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/init_flag_12.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 46bb56c3929..9a39dccc12d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2014-02-20 Janus Weil + + Backport from mainline + 2014-02-17 Janus Weil + + PR fortran/55907 + * resolve.c (build_default_init_expr): Don't initialize character + variable if -fno-automatic is given. + 2014-02-08 Mikael Morin PR fortran/57033 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 8e00739604d..7a15e9e42d8 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -10167,7 +10167,7 @@ build_default_init_expr (gfc_symbol *sym) init_expr = NULL; } if (!init_expr && gfc_option.flag_init_character == GFC_INIT_CHARACTER_ON - && sym->ts.u.cl->length) + && sym->ts.u.cl->length && gfc_option.flag_max_stack_var_size != 0) { gfc_actual_arglist *arg; init_expr = gfc_get_expr (); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9cca8d78779..beaf10997bc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-02-20 Janus Weil + + Backport from mainline + 2014-02-17 Janus Weil + + PR fortran/55907 + * gfortran.dg/init_flag_12.f90: New. + 2014-02-18 Kai Tietz PR target/60193 diff --git a/gcc/testsuite/gfortran.dg/init_flag_12.f90 b/gcc/testsuite/gfortran.dg/init_flag_12.f90 new file mode 100644 index 00000000000..5844398d534 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/init_flag_12.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! { dg-options "-fno-automatic -finit-local-zero" } +! +! PR 55907: [4.7/4.8/4.9 Regression] ICE with -fno-automatic -finit-local-zero +! +! Contributed by J.R. Garcia + +subroutine cchaine (i) + implicit none + integer :: i + character(len=i) :: chaine + write(*,*) chaine +end subroutine -- cgit v1.2.1 From 36704d5422dcf421efa2f26fa076b1b411071ceb Mon Sep 17 00:00:00 2001 From: ktietz Date: Thu, 20 Feb 2014 14:31:01 +0000 Subject: PR c++/58835 * semantics.c (finish_fname): Handle error_mark_node. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@207957 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/semantics.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5798bbc8584..00982df2e6e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2014-02-20 Kai Tietz + + PR c++/58835 + * semantics.c (finish_fname): Handle error_mark_node. + 2014-02-19 Jason Merrill PR c++/60046 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 1d95e3e930b..d5c35c695c3 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2430,7 +2430,8 @@ finish_fname (tree id) tree decl; decl = fname_decl (input_location, C_RID_CODE (id), id); - if (processing_template_decl && current_function_decl) + if (processing_template_decl && current_function_decl + && decl != error_mark_node) decl = DECL_NAME (decl); return decl; } -- cgit v1.2.1 From 415b0d6bd298d882b2bc84daf09b5ca953be5111 Mon Sep 17 00:00:00 2001 From: ktietz Date: Thu, 20 Feb 2014 16:04:37 +0000 Subject: PR c++/58873 * parser.c (cp_parser_functional_cast): Treat NULL_TREE valued type argument as error_mark_node. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@207963 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/parser.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 00982df2e6e..fbcba47d9bf 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2014-02-20 Kai Tietz + PR c++/58873 + * parser.c (cp_parser_functional_cast): Treat NULL_TREE + valued type argument as error_mark_node. + PR c++/58835 * semantics.c (finish_fname): Handle error_mark_node. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index c230d90c63d..fe8c84df795 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -21419,6 +21419,9 @@ cp_parser_functional_cast (cp_parser* parser, tree type) tree cast; bool nonconst_p; + if (!type) + type = error_mark_node; + if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) { maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); -- cgit v1.2.1 From a0d6f3ad1fda39dbb094cfc72b683824298ab343 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 21 Feb 2014 00:16:21 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@207974 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index afcbf75781d..fa515c99880 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140220 +20140221 -- cgit v1.2.1 From ced6cb8626573e3fb93d2756c650e6821b6b14fc Mon Sep 17 00:00:00 2001 From: uros Date: Fri, 21 Feb 2014 07:55:35 +0000 Subject: Backport from mainline 2014-02-21 Jakub Jelinek * config/i386/i386.c (ix86_expand_vec_perm): Use V8SImode mode for mask of V8SFmode permutation. Backport from 4.8 branch 2014-02-20 Jakub Jelinek PR target/57896 * config/i386/i386.c (expand_vec_perm_interleave2): Don't call gen_reg_rtx if d->testing_p. (expand_vec_perm_pshufb2, expand_vec_perm_even_odd_1, expand_vec_perm_broadcast_1): Return early if d->testing_p and we will certainly return true. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@207983 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 18 ++++++++++++++++++ gcc/config/i386/i386.c | 22 ++++++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1d8f7426038..d617bf77ff8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2014-02-21 Uros Bizjak + + Backport from mainline + 2014-02-21 Jakub Jelinek + + * config/i386/i386.c (ix86_expand_vec_perm): Use V8SImode + mode for mask of V8SFmode permutation. + + Backport from 4.8 branch + 2014-02-20 Jakub Jelinek + + PR target/57896 + * config/i386/i386.c (expand_vec_perm_interleave2): Don't call + gen_reg_rtx if d->testing_p. + (expand_vec_perm_pshufb2, expand_vec_perm_even_odd_1, + expand_vec_perm_broadcast_1): Return early if d->testing_p and + we will certainly return true. + 2014-02-20 Terry Guo Backport from mainline diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index bbf897854c3..8edb480eadc 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -20073,7 +20073,7 @@ ix86_expand_vec_perm (rtx operands[]) return; case V8SFmode: - mask = gen_lowpart (V8SFmode, mask); + mask = gen_lowpart (V8SImode, mask); if (one_operand_shuffle) emit_insn (gen_avx2_permvarv8sf (target, op0, mask)); else @@ -36655,7 +36655,9 @@ expand_vec_perm_interleave2 (struct expand_vec_perm_d *d) else dfinal.perm[i] = e; } - dfinal.op0 = gen_reg_rtx (dfinal.vmode); + + if (!d->testing_p) + dfinal.op0 = gen_reg_rtx (dfinal.vmode); dfinal.op1 = dfinal.op0; dremap.target = dfinal.op0; @@ -37052,6 +37054,8 @@ expand_vec_perm_even_odd_1 (struct expand_vec_perm_d *d, unsigned odd) switch (d->vmode) { case V4DFmode: + if (d->testing_p) + break; t1 = gen_reg_rtx (V4DFmode); t2 = gen_reg_rtx (V4DFmode); @@ -37071,6 +37075,8 @@ expand_vec_perm_even_odd_1 (struct expand_vec_perm_d *d, unsigned odd) { int mask = odd ? 0xdd : 0x88; + if (d->testing_p) + break; t1 = gen_reg_rtx (V8SFmode); t2 = gen_reg_rtx (V8SFmode); t3 = gen_reg_rtx (V8SFmode); @@ -37112,6 +37118,8 @@ expand_vec_perm_even_odd_1 (struct expand_vec_perm_d *d, unsigned odd) return expand_vec_perm_pshufb2 (d); else { + if (d->testing_p) + break; /* We need 2*log2(N)-1 operations to achieve odd/even with interleave. */ t1 = gen_reg_rtx (V8HImode); @@ -37133,6 +37141,8 @@ expand_vec_perm_even_odd_1 (struct expand_vec_perm_d *d, unsigned odd) return expand_vec_perm_pshufb2 (d); else { + if (d->testing_p) + break; t1 = gen_reg_rtx (V16QImode); t2 = gen_reg_rtx (V16QImode); t3 = gen_reg_rtx (V16QImode); @@ -37165,6 +37175,9 @@ expand_vec_perm_even_odd_1 (struct expand_vec_perm_d *d, unsigned odd) return expand_vec_perm_even_odd_1 (&d_copy, odd); } + if (d->testing_p) + break; + t1 = gen_reg_rtx (V4DImode); t2 = gen_reg_rtx (V4DImode); @@ -37191,6 +37204,9 @@ expand_vec_perm_even_odd_1 (struct expand_vec_perm_d *d, unsigned odd) return expand_vec_perm_even_odd_1 (&d_copy, odd); } + if (d->testing_p) + break; + t1 = gen_reg_rtx (V8SImode); t2 = gen_reg_rtx (V8SImode); @@ -37283,6 +37299,8 @@ expand_vec_perm_broadcast_1 (struct expand_vec_perm_d *d) case V16QImode: /* These can be implemented via interleave. We save one insn by stopping once we have promoted to V4SImode and then use pshufd. */ + if (d->testing_p) + return true; do { rtx dest; -- cgit v1.2.1 From 7aec221bfaeacd43c0075b8de011f88862afdffd Mon Sep 17 00:00:00 2001 From: uros Date: Fri, 21 Feb 2014 08:42:22 +0000 Subject: * config/i386/i386.c (expand_vec_perm_pshufb2): Commit missing part from my previous patch. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@207985 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/config/i386/i386.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 8edb480eadc..8bbf5d0484b 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -36855,6 +36855,9 @@ expand_vec_perm_pshufb2 (struct expand_vec_perm_d *d) return false; gcc_assert (d->op0 != d->op1); + if (d->testing_p) + return true; + nelt = d->nelt; eltsz = GET_MODE_SIZE (GET_MODE_INNER (d->vmode)); -- cgit v1.2.1 From 4c0a9f779f3c16917fb1fb30533da69af9018a19 Mon Sep 17 00:00:00 2001 From: jason Date: Fri, 21 Feb 2014 15:01:54 +0000 Subject: PR c++/60248 * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208005 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/mangle.c | 1 + gcc/testsuite/g++.dg/cpp0x/variadic149.C | 11 +++++++++++ 3 files changed, 17 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/variadic149.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index fbcba47d9bf..a27488a7936 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2014-02-21 Jason Merrill + + PR c++/60248 + * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL. + 2014-02-20 Kai Tietz PR c++/58873 diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index 2d1cd95831c..4f20af65333 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -3378,6 +3378,7 @@ mangle_decl (const tree decl) if (G.need_abi_warning /* Don't do this for a fake symbol we aren't going to emit anyway. */ + && TREE_CODE (decl) != TYPE_DECL && !DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl) && !DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (decl)) { diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic149.C b/gcc/testsuite/g++.dg/cpp0x/variadic149.C new file mode 100644 index 00000000000..a250e7c296a --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/variadic149.C @@ -0,0 +1,11 @@ +// PR c++/60248 +// { dg-options "-std=c++11 -g -fabi-version=2" } + +template struct A {}; + +template<> struct A<0> +{ + typedef enum { e } B; +}; + +A<0> a; -- cgit v1.2.1 From 6754765ef183228b2c62274d3b13c3a35a14dc72 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 22 Feb 2014 00:16:31 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208035 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index fa515c99880..dfe660afcb5 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140221 +20140222 -- cgit v1.2.1 From 3945ad681c4b573b96d0c7a5abc2c70453337cad Mon Sep 17 00:00:00 2001 From: mikael Date: Sat, 22 Feb 2014 12:41:53 +0000 Subject: fortran/ PR fortran/59599 * trans-intrinsic.c (gfc_conv_intrinsic_ichar): Calculate the number of arguments. testsuite/ PR fortran/59599 * gfortran.dg/ichar_3.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208043 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/trans-intrinsic.c | 4 +++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/ichar_3.f90 | 13 +++++++++++++ 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/ichar_3.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 9a39dccc12d..a11df7ba89e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2014-02-22 Mikael Morin + + PR fortran/59599 + * trans-intrinsic.c (gfc_conv_intrinsic_ichar): Calculate the + number of arguments. + 2014-02-20 Janus Weil Backport from mainline diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index f7afb786966..89dbb012f86 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -4665,8 +4665,10 @@ static void gfc_conv_intrinsic_ichar (gfc_se * se, gfc_expr * expr) { tree args[2], type, pchartype; + int nargs; - gfc_conv_intrinsic_function_args (se, expr, args, 2); + nargs = gfc_intrinsic_argument_list_length (expr); + gfc_conv_intrinsic_function_args (se, expr, args, nargs); gcc_assert (POINTER_TYPE_P (TREE_TYPE (args[1]))); pchartype = gfc_get_pchar_type (expr->value.function.actual->expr->ts.kind); args[1] = fold_build1_loc (input_location, NOP_EXPR, pchartype, args[1]); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index beaf10997bc..fc5526c9811 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-02-22 Mikael Morin + + PR fortran/59599 + * gfortran.dg/ichar_3.f90: New test. + 2014-02-20 Janus Weil Backport from mainline diff --git a/gcc/testsuite/gfortran.dg/ichar_3.f90 b/gcc/testsuite/gfortran.dg/ichar_3.f90 new file mode 100644 index 00000000000..d0f5c8b8cf8 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/ichar_3.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! +! PR fortran/59599 +! The call to ichar was triggering an ICE. +! +! Original testcase from Fran Martinez Fadrique + +character(1) cpk(2) +integer res(2) +cpk = 'a' +res = ichar( cpk, kind=1 ) +print *, ichar( cpk, kind=1 ) +end -- cgit v1.2.1 From 201ab45ce222afeba464e526be44421e0081fcfd Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 23 Feb 2014 00:16:15 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208046 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index dfe660afcb5..1a1a26a2dc1 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140222 +20140223 -- cgit v1.2.1 From 09a64d241c5fd0062eb7e612d39eaf833405cb9e Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 24 Feb 2014 00:16:22 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208063 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 1a1a26a2dc1..f490284b0f8 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140223 +20140224 -- cgit v1.2.1 From 8ede9b2daa83863cb0dfca0cfd01166a602e7ae8 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 25 Feb 2014 00:16:24 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208098 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index f490284b0f8..05ab05dfa18 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140224 +20140225 -- cgit v1.2.1 From a450c7f3a8393dcab7edfd33fb6b7ea180ca9ce2 Mon Sep 17 00:00:00 2001 From: danglin Date: Tue, 25 Feb 2014 00:54:41 +0000 Subject: * config/pa/pa.c (pa_output_move_double): Don't valididate when adjusting offsetable addresses. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208103 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/pa/pa.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d617bf77ff8..24aa9e7ecdc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-02-24 John David Anglin + + * config/pa/pa.c (pa_output_move_double): Don't valididate when + adjusting offsetable addresses. + 2014-02-21 Uros Bizjak Backport from mainline diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 9649cbc2468..18da1ec2443 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -2585,14 +2585,14 @@ pa_output_move_double (rtx *operands) if (optype0 == REGOP) latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) - latehalf[0] = adjust_address (operands[0], SImode, 4); + latehalf[0] = adjust_address_nv (operands[0], SImode, 4); else latehalf[0] = operands[0]; if (optype1 == REGOP) latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) - latehalf[1] = adjust_address (operands[1], SImode, 4); + latehalf[1] = adjust_address_nv (operands[1], SImode, 4); else if (optype1 == CNSTOP) split_double (operands[1], &operands[1], &latehalf[1]); else -- cgit v1.2.1 From 35176347c4674336b5ba93725d35c0b5704f0687 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 26 Feb 2014 00:16:18 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208160 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 05ab05dfa18..e44ee0e8a40 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140225 +20140226 -- cgit v1.2.1 From 0958a641e614f832728291f512df7a293137f784 Mon Sep 17 00:00:00 2001 From: fabien Date: Wed, 26 Feb 2014 21:16:15 +0000 Subject: 2014-02-26 Fabien Chene PR c++/37140 * parser.c (cp_parser_nonclass_name): Call strip_using_decl and move the code handling dependent USING_DECLs... * name-lookup.c (strip_using_decl): ...Here. 2014-02-26 Fabien Chene PR c++/37140 * g++.dg/template/using27.C: New. * g++.dg/template/using28.C: New. * g++.dg/template/using29.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208182 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/name-lookup.c | 20 +++++++++++++++++++- gcc/cp/parser.c | 20 +------------------- gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/g++.dg/template/using27.C | 33 +++++++++++++++++++++++++++++++++ gcc/testsuite/g++.dg/template/using28.C | 17 +++++++++++++++++ gcc/testsuite/g++.dg/template/using29.C | 21 +++++++++++++++++++++ 7 files changed, 104 insertions(+), 20 deletions(-) create mode 100644 gcc/testsuite/g++.dg/template/using27.C create mode 100644 gcc/testsuite/g++.dg/template/using28.C create mode 100644 gcc/testsuite/g++.dg/template/using29.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a27488a7936..d22e15327d2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-02-26 Fabien Chêne + PR c++/37140 + * parser.c (cp_parser_nonclass_name): Call strip_using_decl and + move the code handling dependent USING_DECLs... + * name-lookup.c (strip_using_decl): ...Here. + 2014-02-21 Jason Merrill PR c++/60248 diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 565d3966ca5..952903a7cd3 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -399,7 +399,8 @@ pop_binding (tree id, tree decl) } } -/* Strip non dependent using declarations. */ +/* Strip non dependent using declarations. If DECL is dependent, + surreptitiously create a typename_type and return it. */ tree strip_using_decl (tree decl) @@ -409,6 +410,23 @@ strip_using_decl (tree decl) while (TREE_CODE (decl) == USING_DECL && !DECL_DEPENDENT_P (decl)) decl = USING_DECL_DECLS (decl); + + if (TREE_CODE (decl) == USING_DECL && DECL_DEPENDENT_P (decl) + && USING_DECL_TYPENAME_P (decl)) + { + /* We have found a type introduced by a using + declaration at class scope that refers to a dependent + type. + + using typename :: [opt] nested-name-specifier unqualified-id ; + */ + decl = make_typename_type (TREE_TYPE (decl), + DECL_NAME (decl), + typename_type, tf_error); + if (decl != error_mark_node) + decl = TYPE_NAME (decl); + } + return decl; } diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index fe8c84df795..120360a4d92 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -13846,25 +13846,7 @@ cp_parser_nonclass_name (cp_parser* parser) /* Look up the type-name. */ type_decl = cp_parser_lookup_name_simple (parser, identifier, token->location); - if (TREE_CODE (type_decl) == USING_DECL) - { - if (!DECL_DEPENDENT_P (type_decl)) - type_decl = strip_using_decl (type_decl); - else if (USING_DECL_TYPENAME_P (type_decl)) - { - /* We have found a type introduced by a using - declaration at class scope that refers to a dependent - type. - - using typename :: [opt] nested-name-specifier unqualified-id ; - */ - type_decl = make_typename_type (TREE_TYPE (type_decl), - DECL_NAME (type_decl), - typename_type, tf_error); - if (type_decl != error_mark_node) - type_decl = TYPE_NAME (type_decl); - } - } + type_decl = strip_using_decl (type_decl); if (TREE_CODE (type_decl) != TYPE_DECL && (objc_is_id (identifier) || objc_is_class_name (identifier))) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fc5526c9811..4475c32a8ff 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2014-02-26 Fabien Chêne + + PR c++/37140 + * g++.dg/template/using27.C: New. + * g++.dg/template/using28.C: New. + * g++.dg/template/using29.C: New. + 2014-02-22 Mikael Morin PR fortran/59599 diff --git a/gcc/testsuite/g++.dg/template/using27.C b/gcc/testsuite/g++.dg/template/using27.C new file mode 100644 index 00000000000..f1835e17161 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/using27.C @@ -0,0 +1,33 @@ +// PR c++/37140 + +struct X +{ + typedef int nested_type; +}; + +template +struct A +{ + typedef X type; +}; + +template +struct B : A +{ + using typename A::type; + typename type::nested_type x; +}; + +template +struct C : B +{ + using typename B::type; + typename type::nested_type y; +}; + +struct D : C +{ + using C::type; + type::nested_type z; +}; + diff --git a/gcc/testsuite/g++.dg/template/using28.C b/gcc/testsuite/g++.dg/template/using28.C new file mode 100644 index 00000000000..52f68cfe467 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/using28.C @@ -0,0 +1,17 @@ +// PR c++/37140 + +struct C +{ + static const int block_size = 1; +}; + +template struct A { + typedef C type; +}; + +template struct B : public A { + using typename A::type; + static const int block_size = type::block_size; +}; + +template class B; diff --git a/gcc/testsuite/g++.dg/template/using29.C b/gcc/testsuite/g++.dg/template/using29.C new file mode 100644 index 00000000000..8726547efdb --- /dev/null +++ b/gcc/testsuite/g++.dg/template/using29.C @@ -0,0 +1,21 @@ +// PR c++/58047 + +template +struct print_arg { }; + +struct const_holder { + static const int CONSTANT = 42; +}; + +template +struct identity { + typedef T type; +}; + +template +struct test_case : public identity { + using typename identity::type; + print_arg printer; +}; + +template struct test_case; -- cgit v1.2.1 From 0cdd52881581e85f800f76b842f02e2736f7cfea Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 27 Feb 2014 00:16:32 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208189 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index e44ee0e8a40..d43caedb137 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140226 +20140227 -- cgit v1.2.1 From 88b40063e447b94866fcd89752aedf0b9b0134a4 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 28 Feb 2014 00:16:18 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208210 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index d43caedb137..edce8be60cf 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140227 +20140228 -- cgit v1.2.1 From 1d93b0c2d4722237b5f116fefb5525fb200a0a04 Mon Sep 17 00:00:00 2001 From: jye2 Date: Fri, 28 Feb 2014 22:05:13 +0000 Subject: 2014-02-28 Joey Ye Backport from mainline r208229 2014-02-28 Joey Ye PR libgcc/60166 * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANFRAC_S, _FP_NANFRAC_D, _FP_NANFRAC_Q): Set to zero. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208233 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgcc/ChangeLog | 10 ++++++++++ libgcc/config/arm/sfp-machine.h | 10 ++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 87f3eab9979..f87f51d8263 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,13 @@ +014-02-28 Joey Ye + + Backport from mainline r208229 + 2014-02-28 Joey Ye + + PR libgcc/60166 + * config/arm/sfp-machine.h (_FP_NANFRAC_H, + _FP_NANFRAC_S, _FP_NANFRAC_D, _FP_NANFRAC_Q): + Set to zero. + 2014-01-25 Walter Lee Backport from mainline diff --git a/libgcc/config/arm/sfp-machine.h b/libgcc/config/arm/sfp-machine.h index a89d05a00ba..8591ab439e9 100644 --- a/libgcc/config/arm/sfp-machine.h +++ b/libgcc/config/arm/sfp-machine.h @@ -19,10 +19,12 @@ typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__))); #define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) #define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) -#define _FP_NANFRAC_H ((_FP_QNANBIT_H << 1) - 1) -#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1) -#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1 -#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1 +/* According to RTABI, QNAN is only with the most significant bit of the + significand set, and all other significand bits zero. */ +#define _FP_NANFRAC_H 0 +#define _FP_NANFRAC_S 0 +#define _FP_NANFRAC_D 0, 0 +#define _FP_NANFRAC_Q 0, 0, 0, 0 #define _FP_NANSIGN_H 0 #define _FP_NANSIGN_S 0 #define _FP_NANSIGN_D 0 -- cgit v1.2.1 From 215b7c2663b42a4569acf7f21aac73aad3f7f726 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 1 Mar 2014 00:16:36 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208238 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index edce8be60cf..5f7118f15e4 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140228 +20140301 -- cgit v1.2.1 From 24b402f3ff7ee8d05c0fb87118e97e279631df25 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 2 Mar 2014 00:16:24 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208252 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 5f7118f15e4..a58a6eb606f 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140301 +20140302 -- cgit v1.2.1 From 75dfcf1c8caa3180aef81026a73d2ce4f5246ced Mon Sep 17 00:00:00 2001 From: mikael Date: Sun, 2 Mar 2014 18:49:18 +0000 Subject: fortran/ PR fortran/60341 * frontend-passes.c (optimize_comparison): Guard two union accesses with the corresponding tag checks. testsuite/ PR fortran/60341 * gfortran.dg/str_comp_optimize_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208259 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/frontend-passes.c | 2 ++ gcc/testsuite/ChangeLog | 13 +++++++++---- gcc/testsuite/gfortran.dg/str_comp_optimize_1.f90 | 22 ++++++++++++++++++++++ 4 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/str_comp_optimize_1.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a11df7ba89e..2763fb223f0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2014-03-02 Mikael Morin + + PR fortran/60341 + * frontend-passes.c (optimize_comparison): Guard two union accesses + with the corresponding tag checks. + 2014-02-22 Mikael Morin PR fortran/59599 diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c index 59e06410fe1..acfb14d069f 100644 --- a/gcc/fortran/frontend-passes.c +++ b/gcc/fortran/frontend-passes.c @@ -883,7 +883,9 @@ optimize_comparison (gfc_expr *e, gfc_intrinsic_op op) /* Replace A // B < A // C with B < C, and A // B < C // B with A < C. */ if (op1->ts.type == BT_CHARACTER && op2->ts.type == BT_CHARACTER + && op1->expr_type == EXPR_OP && op1->value.op.op == INTRINSIC_CONCAT + && op2->expr_type == EXPR_OP && op2->value.op.op == INTRINSIC_CONCAT) { gfc_expr *op1_left = op1->value.op.op1; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4475c32a8ff..b2e4e614bca 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,9 +1,14 @@ +2014-03-02 Mikael Morin + + PR fortran/60341 + * gfortran.dg/str_comp_optimize_1.f90: New test. + 2014-02-26 Fabien Chêne - PR c++/37140 - * g++.dg/template/using27.C: New. - * g++.dg/template/using28.C: New. - * g++.dg/template/using29.C: New. + PR c++/37140 + * g++.dg/template/using27.C: New. + * g++.dg/template/using28.C: New. + * g++.dg/template/using29.C: New. 2014-02-22 Mikael Morin diff --git a/gcc/testsuite/gfortran.dg/str_comp_optimize_1.f90 b/gcc/testsuite/gfortran.dg/str_comp_optimize_1.f90 new file mode 100644 index 00000000000..84287b475a5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/str_comp_optimize_1.f90 @@ -0,0 +1,22 @@ +! { dg-do compile } +! { dg-options "-ffrontend-optimize" } +! +! PR fortran/60341 +! An unguarded union access was wrongly enabling a frontend optimization on a +! string comparison, leading to an ICE. +! +! Original testcase from Steve Chapel . +! Reduced by Steven G. Kargl . +! + + subroutine modelg(ncm) + implicit none + integer, parameter :: pc = 30, pm = pc - 1 + integer i + character*4 catt(pm,2) + integer ncm,iatt(pm,pc) + do i=1,ncm + if (catt(i,1)//catt(i,2).eq.'central') exit + end do + iatt(i,4)=1 + end -- cgit v1.2.1 From 0aeb9be99a8f98255c7ee9962332953c3a2d0441 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 3 Mar 2014 00:16:19 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208263 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index a58a6eb606f..ddfa5824047 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140302 +20140303 -- cgit v1.2.1 From a674ca7082fa16ded45d3929588caba1ca659cef Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 4 Mar 2014 00:16:20 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208297 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ddfa5824047..2ec15934fef 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140303 +20140304 -- cgit v1.2.1 From 28d081032db778c4c63ee3df0cc8d8d3300d3804 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 5 Mar 2014 00:16:38 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208336 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 2ec15934fef..3c51f5e4c9c 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140304 +20140305 -- cgit v1.2.1 From a58bac28cc4c47ea0de0872eba27b6e45d4a66a7 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 6 Mar 2014 00:16:20 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208355 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 3c51f5e4c9c..d790801f5ac 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140305 +20140306 -- cgit v1.2.1 From 6d0716f2790c90f0173747468b552da4d01c7300 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 7 Mar 2014 00:16:28 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208387 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index d790801f5ac..3b14fbde877 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140306 +20140307 -- cgit v1.2.1 From 2b71b48817047796ef3baa8e60e8d307539cea00 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 8 Mar 2014 00:16:16 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208420 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 3b14fbde877..fee9c15ae04 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140307 +20140308 -- cgit v1.2.1 From 7d2188e888651f20602de3f7b08f6c101957b89b Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 9 Mar 2014 00:16:36 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208435 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index fee9c15ae04..9ae2dd138f3 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140308 +20140309 -- cgit v1.2.1 From 8f9ec66e689bfa24606cca5c3870384212014dfd Mon Sep 17 00:00:00 2001 From: janus Date: Sun, 9 Mar 2014 18:44:42 +0000 Subject: 2014-03-09 Janus Weil Backport from 4.8 2014-03-08 Janus Weil PR fortran/60450 * simplify.c (gfc_simplify_shape): Only clear shape if it was really created successfully. 2014-03-09 Janus Weil Backport from 4.8 2014-03-08 Janus Weil PR fortran/60450 * gfortran.dg/shape_8.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208443 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 9 +++++++++ gcc/fortran/simplify.c | 4 ++-- gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gfortran.dg/shape_8.f90 | 10 ++++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/shape_8.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2763fb223f0..928e0397d93 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2014-03-09 Janus Weil + + Backport from 4.8 + 2014-03-08 Janus Weil + + PR fortran/60450 + * simplify.c (gfc_simplify_shape): Only clear shape if it was really + created successfully. + 2014-03-02 Mikael Morin PR fortran/60341 diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 515528d489b..c9fd122f6e3 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -5518,7 +5518,7 @@ gfc_simplify_shape (gfc_expr *source, gfc_expr *kind) if (e == &gfc_bad_expr || range_check (e, "SHAPE") == &gfc_bad_expr) { gfc_free_expr (result); - if (t) + if (t == SUCCESS) gfc_clear_shape (shape, source->rank); return &gfc_bad_expr; } @@ -5526,7 +5526,7 @@ gfc_simplify_shape (gfc_expr *source, gfc_expr *kind) gfc_constructor_append_expr (&result->value.constructor, e, NULL); } - if (t) + if (t == SUCCESS) gfc_clear_shape (shape, source->rank); return result; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b2e4e614bca..0058553c294 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-03-09 Janus Weil + + Backport from 4.8 + 2014-03-08 Janus Weil + + PR fortran/60450 + * gfortran.dg/shape_8.f90: New. + 2014-03-02 Mikael Morin PR fortran/60341 diff --git a/gcc/testsuite/gfortran.dg/shape_8.f90 b/gcc/testsuite/gfortran.dg/shape_8.f90 new file mode 100644 index 00000000000..edeb5fd8e93 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/shape_8.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +! +! PR 60450: [4.7/4.8 Regression] ICE with SHAPE intrinsic +! +! Contributed by Dave Allured + + real, allocatable :: x(:,:) + allocate (x(3,2), source=99.) + print *, shape (x / 10.0) +end -- cgit v1.2.1 From f35e74846ba039e962075dacb5f50f1ebdc11c67 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 10 Mar 2014 00:16:04 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208445 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 9ae2dd138f3..5bc05e6cfbb 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140309 +20140310 -- cgit v1.2.1 From 08329ceb7679598b5df8c7def267b47121960999 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 11 Mar 2014 00:16:50 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208467 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 5bc05e6cfbb..69864b3d5b3 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140310 +20140311 -- cgit v1.2.1 From c439b7278a121e2be139e89806c1ce9c71481bc4 Mon Sep 17 00:00:00 2001 From: uros Date: Tue, 11 Mar 2014 18:58:16 +0000 Subject: * java/lang/natObject.cc (_Jv_MonitorEnter): Add missing parenthesis around comparison with (address | LOCKED) in JvAssert. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208493 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 5 +++++ libjava/java/lang/natObject.cc | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index aaad1837a8d..4632912f9c0 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2014-03-11 Uros Bizjak + + * java/lang/natObject.cc (_Jv_MonitorEnter): Add missing parenthesis + around comparison with (address | LOCKED) in JvAssert. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libjava/java/lang/natObject.cc b/libjava/java/lang/natObject.cc index 87f2044dd86..1a666407a66 100644 --- a/libjava/java/lang/natObject.cc +++ b/libjava/java/lang/natObject.cc @@ -929,7 +929,7 @@ retry: // only be held by other threads waiting for conversion, and // they, like us, drop it quickly without blocking. _Jv_MutexLock(&(hl->si.mutex)); - JvAssert(he -> address == address | LOCKED ); + JvAssert(he -> address == (address | LOCKED)); release_set(&(he -> address), (address | REQUEST_CONVERSION | HEAVY)); // release lock on he LOG(REQ_CONV, (address | REQUEST_CONVERSION | HEAVY), self); @@ -961,7 +961,7 @@ retry: } obj_addr_t was_heavy = (address & HEAVY); if ((address & LOCKED) || - !compare_and_swap(&(he -> address), address, (address | LOCKED ))) + !compare_and_swap(&(he -> address), address, address | LOCKED )) { wait_unlocked(he); goto retry; -- cgit v1.2.1 From e713a5c2764f514d3843a2cd162d81c374e3d99c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 12 Mar 2014 00:16:47 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208502 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 69864b3d5b3..391ceec87bc 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140311 +20140312 -- cgit v1.2.1 From f175579bed39c9556b64e43682d813d29d64a68f Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 13 Mar 2014 00:16:30 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208523 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 391ceec87bc..dc161342442 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140312 +20140313 -- cgit v1.2.1 From d7b5bab3bb6269b34dca50e7cd6a0a47bee0fd18 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Thu, 13 Mar 2014 15:43:01 +0000 Subject: PR ada/51483 * back_end.ads (Register_Type_Proc): Add 'precision' parameter. * cstand.adb (Register_Float_Type): Add 'precision' parameter and use it to set the RM size. Use directly 'size' for the Esize. * gcc-interface/gigi.h (enumerate_modes): Add integer parameter. * gcc-interface/misc.c (enumerate_modes): Likewise. Do not register types for vector modes, pass the size in addition to the precision. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208548 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 10 ++++++++++ gcc/ada/back_end.ads | 1 + gcc/ada/cstand.adb | 27 +++++++++++++++++++-------- gcc/ada/gcc-interface/gigi.h | 2 +- gcc/ada/gcc-interface/misc.c | 25 ++++++++++++------------- 5 files changed, 43 insertions(+), 22 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index e8b55eb77e3..25cf0ddbed3 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,13 @@ +2014-03-13 Eric Botcazou + + PR ada/51483 + * back_end.ads (Register_Type_Proc): Add 'precision' parameter. + * cstand.adb (Register_Float_Type): Add 'precision' parameter and use + it to set the RM size. Use directly 'size' for the Esize. + * gcc-interface/gigi.h (enumerate_modes): Add integer parameter. + * gcc-interface/misc.c (enumerate_modes): Likewise. Do not register + types for vector modes, pass the size in addition to the precision. + 2014-01-12 Eric Botcazou PR ada/59772 diff --git a/gcc/ada/back_end.ads b/gcc/ada/back_end.ads index bfa2eb5b440..9d92ce39c5c 100644 --- a/gcc/ada/back_end.ads +++ b/gcc/ada/back_end.ads @@ -55,6 +55,7 @@ package Back_End is Complex : Boolean; -- True iff type has real and imaginary parts Count : Natural; -- Number of elements in vector, 0 otherwise Float_Rep : Float_Rep_Kind; -- Representation used for fpt type + Precision : Positive; -- Precision of representation in bits Size : Positive; -- Size of representation in bits Alignment : Natural); -- Required alignment in bits pragma Convention (C, Register_Type_Proc); diff --git a/gcc/ada/cstand.adb b/gcc/ada/cstand.adb index c77afd2dc3c..5ec425cca49 100644 --- a/gcc/ada/cstand.adb +++ b/gcc/ada/cstand.adb @@ -151,6 +151,7 @@ package body CStand is Complex : Boolean; -- True iff type has real and imaginary parts Count : Natural; -- Number of elements in vector, 0 otherwise Float_Rep : Float_Rep_Kind; -- Representation used for fpt type + Precision : Positive; -- Precision of representation in bits Size : Positive; -- Size of representation in bits Alignment : Natural); -- Required alignment in bits pragma Convention (C, Register_Float_Type); @@ -2015,6 +2016,7 @@ package body CStand is Complex : Boolean; Count : Natural; Float_Rep : Float_Rep_Kind; + Precision : Positive; Size : Positive; Alignment : Natural) is @@ -2064,13 +2066,24 @@ package body CStand is else Write_Str ("mod 2**"); - Write_Int (Int (Size / Positive'Max (1, Count))); + Write_Int (Int (Precision / Positive'Max (1, Count))); Write_Line (";"); end if; - Write_Str ("for " & T & "'Size use "); - Write_Int (Int (Size)); - Write_Line (";"); + if Precision = Size then + Write_Str ("for " & T (1 .. Last) & "'Size use "); + Write_Int (Int (Size)); + Write_Line (";"); + + else + Write_Str ("for " & T (1 .. Last) & "'Value_Size use "); + Write_Int (Int (Precision)); + Write_Line (";"); + + Write_Str ("for " & T (1 .. Last) & "'Object_Size use "); + Write_Int (Int (Size)); + Write_Line (";"); + end if; Write_Str ("for " & T & "'Alignment use "); Write_Int (Int (Alignment / 8)); @@ -2093,15 +2106,13 @@ package body CStand is if Digs > 0 and then not Complex and then Count = 0 then declare Ent : constant Entity_Id := New_Standard_Entity; - Esize : constant Pos := Pos ((Size + Alignment - 1) - / Alignment * Alignment); begin Set_Defining_Identifier (New_Node (N_Full_Type_Declaration, Stloc), Ent); Make_Name (Ent, T (1 .. Last)); Set_Scope (Ent, Standard_Standard); - Build_Float_Type (Ent, Esize, Float_Rep, Pos (Digs)); - Set_RM_Size (Ent, UI_From_Int (Int (Size))); + Build_Float_Type (Ent, Int (Size), Float_Rep, Pos (Digs)); + Set_RM_Size (Ent, UI_From_Int (Int (Precision))); Set_Alignment (Ent, UI_From_Int (Int (Alignment / 8))); if No (Back_End_Float_Types) then diff --git a/gcc/ada/gcc-interface/gigi.h b/gcc/ada/gcc-interface/gigi.h index 5a766b4515d..9651aea1ff1 100644 --- a/gcc/ada/gcc-interface/gigi.h +++ b/gcc/ada/gcc-interface/gigi.h @@ -992,7 +992,7 @@ extern Nat get_target_double_scalar_alignment (void); /* This function is called by the front-end to enumerate all the supported modes for the machine, as well as some predefined C types. */ extern void enumerate_modes (void (*f) (const char *, int, int, int, int, int, - int)); + int, int)); #ifdef __cplusplus } diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c index 08ca5bb92b3..d6296b46b28 100644 --- a/gcc/ada/gcc-interface/misc.c +++ b/gcc/ada/gcc-interface/misc.c @@ -632,7 +632,7 @@ must_pass_by_ref (tree gnu_type) /* This function is called by the front-end to enumerate all the supported modes for the machine, as well as some predefined C types. F is a function which is called back with the parameters as listed below, first a string, - then six ints. The name is any arbitrary null-terminated string and has + then seven ints. The name is any arbitrary null-terminated string and has no particular significance, except for the case of predefined C types, where it should be the name of the C type. For integer types, only signed types should be listed, unsigned versions are assumed. The order of types should @@ -648,11 +648,12 @@ must_pass_by_ref (tree gnu_type) COMPLEX_P nonzero is this represents a complex mode COUNT count of number of items, nonzero for vector mode FLOAT_REP Float_Rep_Kind for FP, otherwise undefined - SIZE number of bits used to store data + PRECISION number of bits used to store data + SIZE number of bits occupied by the mode ALIGN number of bits to which mode is aligned. */ void -enumerate_modes (void (*f) (const char *, int, int, int, int, int, int)) +enumerate_modes (void (*f) (const char *, int, int, int, int, int, int, int)) { const tree c_types[] = { float_type_node, double_type_node, long_double_type_node }; @@ -726,28 +727,26 @@ enumerate_modes (void (*f) (const char *, int, int, int, int, int, int)) /* First register any C types for this mode that the front end may need to know about, unless the mode should be skipped. */ - - if (!skip_p) + if (!skip_p && !vector_p) for (nameloop = 0; nameloop < ARRAY_SIZE (c_types); nameloop++) { - tree typ = c_types[nameloop]; - const char *nam = c_names[nameloop]; + tree type = c_types[nameloop]; + const char *name = c_names[nameloop]; - if (TYPE_MODE (typ) == i) + if (TYPE_MODE (type) == i) { - f (nam, digs, complex_p, - vector_p ? GET_MODE_NUNITS (i) : 0, float_rep, - TYPE_PRECISION (typ), TYPE_ALIGN (typ)); + f (name, digs, complex_p, 0, float_rep, TYPE_PRECISION (type), + TREE_INT_CST_LOW (TYPE_SIZE (type)), TYPE_ALIGN (type)); skip_p = true; } } /* If no predefined C types were found, register the mode itself. */ - if (!skip_p) f (GET_MODE_NAME (i), digs, complex_p, vector_p ? GET_MODE_NUNITS (i) : 0, float_rep, - GET_MODE_PRECISION (i), GET_MODE_ALIGNMENT (i)); + GET_MODE_PRECISION (i), GET_MODE_BITSIZE (i), + GET_MODE_ALIGNMENT (i)); } } -- cgit v1.2.1 From d634c8db91278c6393a3196e9dfa1661a0a9a360 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 14 Mar 2014 00:16:33 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208559 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index dc161342442..d00c8b4d7a9 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140313 +20140314 -- cgit v1.2.1 From 8426b94c7e11f1eaf8851d9b19c6720ab9bbd4ed Mon Sep 17 00:00:00 2001 From: gjl Date: Fri, 14 Mar 2014 09:52:07 +0000 Subject: Backport from 2014-03-14 trunk r208562. PR target/59396 * config/avr/avr.c (avr_set_current_function): Pass function name through default_strip_name_encoding before sanity checking instead of skipping the first char of the assembler name. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208565 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/config/avr/avr.c | 10 +++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 24aa9e7ecdc..73d19db3775 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-03-14 Georg-Johann Lay + + Backport from 2014-03-14 trunk r208562. + + PR target/59396 + * config/avr/avr.c (avr_set_current_function): Pass function name + through default_strip_name_encoding before sanity checking instead + of skipping the first char of the assembler name. + 2014-02-24 John David Anglin * config/pa/pa.c (pa_output_move_double): Don't valididate when diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 93a4cc2d755..2cba13ef326 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -552,10 +552,14 @@ avr_set_current_function (tree decl) const char *name; name = DECL_ASSEMBLER_NAME_SET_P (decl) - /* Remove the leading '*' added in set_user_assembler_name. */ - ? 1 + IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)) + ? IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)) : IDENTIFIER_POINTER (DECL_NAME (decl)); - + + /* Skip a leading '*' that might still prefix the assembler name, + e.g. in non-LTO runs. */ + + name = default_strip_name_encoding (name); + /* Silently ignore 'signal' if 'interrupt' is present. AVR-LibC startet using this when it switched from SIGNAL and INTERRUPT to ISR. */ -- cgit v1.2.1 From 3c6f3884b127e4c622c8d115c3fc9d50982e979a Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 15 Mar 2014 00:16:25 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208583 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index d00c8b4d7a9..2e0ee87c887 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140314 +20140315 -- cgit v1.2.1 From 5c59a3c4ad5f661bda400fcea1cd44bc306c12e0 Mon Sep 17 00:00:00 2001 From: jvdelisle Date: Sat, 15 Mar 2014 23:06:44 +0000 Subject: 2014-03-15 Jerry DeLisle Backport from mainline PR libfortran/58324 PR libfortran/38199 * intrinsics/string_intriniscs_inc.c (string_len_trim): Remove prototypes for string_len_trim and move to... * libgfortran.h (string_len_trim): ... here and (string_len_trim_char4): ...here. * io/list_read.c (finish_list_read): Read one character to check for the end of the file. If it is the end, then issue the file end error message. If not, use eat_line to reach the end without giving error. The next attempt to read will then issue the error as described above. * io/read.c (read_decimal): Quickly skip spaces to avoid calls to next_char. * io/unit.c (is_trim_ok): New helper function to check various conditions to see if its OK to trim the internal unit string. (get_internal_unit): Use LEN_TRIM to shorten selected internal unit strings for optimizing READ. Enable this optimization for formatted READ. Backport from mainline PR libfortran/58324 * gfortran.dg/list_read_12.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208599 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 6 ++++ gcc/testsuite/gfortran.dg/list_read_12.f90 | 11 ++++++ libgfortran/ChangeLog | 22 ++++++++++++ libgfortran/intrinsics/string_intrinsics_inc.c | 3 -- libgfortran/io/list_read.c | 21 ++++++++--- libgfortran/io/read.c | 8 ++++- libgfortran/io/unit.c | 49 ++++++++++++++++++++++++++ libgfortran/libgfortran.h | 7 ++++ 8 files changed, 118 insertions(+), 9 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/list_read_12.f90 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0058553c294..ca7f1799202 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-03-15 Jerry DeLisle + + Backport from mainline + PR libfortran/58324 + * gfortran.dg/list_read_12.f90: New test. + 2014-03-09 Janus Weil Backport from 4.8 diff --git a/gcc/testsuite/gfortran.dg/list_read_12.f90 b/gcc/testsuite/gfortran.dg/list_read_12.f90 new file mode 100644 index 00000000000..811ef152a5b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/list_read_12.f90 @@ -0,0 +1,11 @@ +! { dg-do run } +! PR58324 Bogus end of file condition +integer :: i, ios +open(99, access='stream', form='unformatted') +write(99) "5 a" +close(99) + +open(99, access='sequential', form='formatted') +read(99, *, iostat=ios) i +if (ios /= 0) call abort +end diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index c8f77fe00ad..7d6fd05ee02 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,25 @@ +2014-03-15 Jerry DeLisle + + Backport from mainline + PR libfortran/58324 + PR libfortran/38199 + * intrinsics/string_intriniscs_inc.c (string_len_trim): + Remove prototypes for string_len_trim and move to... + * libgfortran.h (string_len_trim): ... here and + (string_len_trim_char4): ...here. + * io/list_read.c (finish_list_read): Read one character to check + for the end of the file. If it is the end, then issue the file + end error message. If not, use eat_line to reach the end + without giving error. The next attempt to read will then + issue the error as described above. + * io/read.c (read_decimal): Quickly skip spaces to avoid calls + to next_char. + * io/unit.c (is_trim_ok): New helper function to check various + conditions to see if its OK to trim the internal unit string. + (get_internal_unit): Use LEN_TRIM to shorten selected internal + unit strings for optimizing READ. Enable this optimization for + formatted READ. + 2014-02-15 Jerry DeLisle Dominique d'Humieres diff --git a/libgfortran/intrinsics/string_intrinsics_inc.c b/libgfortran/intrinsics/string_intrinsics_inc.c index 8335a38d949..2f7a5ec61a5 100644 --- a/libgfortran/intrinsics/string_intrinsics_inc.c +++ b/libgfortran/intrinsics/string_intrinsics_inc.c @@ -44,9 +44,6 @@ extern void concat_string (gfc_charlen_type, CHARTYPE *, gfc_charlen_type, const CHARTYPE *); export_proto(concat_string); -extern gfc_charlen_type string_len_trim (gfc_charlen_type, const CHARTYPE *); -export_proto(string_len_trim); - extern void adjustl (CHARTYPE *, gfc_charlen_type, const CHARTYPE *); export_proto(adjustl); diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c index e44cc14a784..fa34e67a089 100644 --- a/libgfortran/io/list_read.c +++ b/libgfortran/io/list_read.c @@ -1985,8 +1985,6 @@ list_formatted_read (st_parameter_dt *dtp, bt type, void *p, int kind, void finish_list_read (st_parameter_dt *dtp) { - int err; - free_saved (dtp); fbuf_flush (dtp->u.p.current_unit, dtp->u.p.mode); @@ -1997,9 +1995,22 @@ finish_list_read (st_parameter_dt *dtp) return; } - err = eat_line (dtp); - if (err == LIBERROR_END) - hit_eof (dtp); + if (!is_internal_unit (dtp)) + { + int c; + c = next_char (dtp); + if (c == EOF) + { + free_line (dtp); + hit_eof (dtp); + return; + } + if (c != '\n') + eat_line (dtp); + } + + free_line (dtp); + } /* NAMELIST INPUT diff --git a/libgfortran/io/read.c b/libgfortran/io/read.c index aa41bc7b9d2..43eea8367fa 100644 --- a/libgfortran/io/read.c +++ b/libgfortran/io/read.c @@ -667,7 +667,13 @@ read_decimal (st_parameter_dt *dtp, const fnode *f, char *dest, int length) if (c == ' ') { - if (dtp->u.p.blank_status == BLANK_NULL) continue; + if (dtp->u.p.blank_status == BLANK_NULL) + { + /* Skip spaces. */ + for ( ; w > 0; p++, w--) + if (*p != ' ') break; + continue; + } if (dtp->u.p.blank_status == BLANK_ZERO) c = '0'; } diff --git a/libgfortran/io/unit.c b/libgfortran/io/unit.c index 7c71b090e3a..d71593b1946 100644 --- a/libgfortran/io/unit.c +++ b/libgfortran/io/unit.c @@ -30,6 +30,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #include "unix.h" #include #include +#include /* IO locking rules: @@ -377,6 +378,38 @@ find_or_create_unit (int n) } +/* Helper function to check rank, stride, format string, and namelist. + This is used for optimization. You can't trim out blanks or shorten + the string if trailing spaces are significant. */ +static bool +is_trim_ok (st_parameter_dt *dtp) +{ + /* Check rank and stride. */ + if (dtp->internal_unit_desc + && (GFC_DESCRIPTOR_RANK (dtp->internal_unit_desc) > 1 + || GFC_DESCRIPTOR_STRIDE(dtp->internal_unit_desc, 0) != 1)) + return false; + /* Format strings can not have 'BZ' or '/'. */ + if (dtp->common.flags & IOPARM_DT_HAS_FORMAT) + { + char *p = dtp->format; + off_t i; + if (dtp->common.flags & IOPARM_DT_HAS_BLANK) + return false; + for (i = 0; i < dtp->format_len; i++) + { + if (p[i] == '/') return false; + if (p[i] == 'b' || p[i] == 'B') + if (p[i+1] == 'z' || p[i+1] == 'Z') + return false; + } + } + if (dtp->u.p.ionml) /* A namelist. */ + return false; + return true; +} + + gfc_unit * get_internal_unit (st_parameter_dt *dtp) { @@ -410,6 +443,22 @@ get_internal_unit (st_parameter_dt *dtp) some other file I/O unit. */ iunit->unit_number = -1; + /* As an optimization, adjust the unit record length to not + include trailing blanks. This will not work under certain conditions + where trailing blanks have significance. */ + if (dtp->u.p.mode == READING && is_trim_ok (dtp)) + { + int len; + if (dtp->common.unit == 0) + len = string_len_trim (dtp->internal_unit_len, + dtp->internal_unit); + else + len = string_len_trim_char4 (dtp->internal_unit_len, + (const gfc_char4_t*) dtp->internal_unit); + dtp->internal_unit_len = len; + iunit->recl = dtp->internal_unit_len; + } + /* Set up the looping specification from the array descriptor, if any. */ if (is_array_io (dtp)) diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h index 148dcfb59a0..4cc40a318d0 100644 --- a/libgfortran/libgfortran.h +++ b/libgfortran/libgfortran.h @@ -788,6 +788,13 @@ internal_proto(fstrcpy); extern gfc_charlen_type cf_strcpy (char *, gfc_charlen_type, const char *); internal_proto(cf_strcpy); +extern gfc_charlen_type string_len_trim (gfc_charlen_type, const char *); +export_proto(string_len_trim); + +extern gfc_charlen_type string_len_trim_char4 (gfc_charlen_type, + const gfc_char4_t *); +export_proto(string_len_trim_char4); + /* io/intrinsics.c */ extern void flush_all_units (void); -- cgit v1.2.1 From 682cba57066400bb6415dc06b6dba9b7e850d376 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 16 Mar 2014 00:16:28 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208600 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 2e0ee87c887..36b32c53d8e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140315 +20140316 -- cgit v1.2.1 From 8af717126b55a6a74b7d9a29cbb9e2133e681f93 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 17 Mar 2014 00:16:19 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208607 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 36b32c53d8e..03eb03503ef 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140316 +20140317 -- cgit v1.2.1 From 837093ca8529c998468d319ea2389832e52b5595 Mon Sep 17 00:00:00 2001 From: rguenth Date: Mon, 17 Mar 2014 14:38:55 +0000 Subject: 2014-03-17 Richard Biener Backport from mainline 2013-05-21 Richard Biener PR tree-optimization/57303 * tree-ssa-sink.c (statement_sink_location): Properly handle self-assignments. * gcc.dg/torture/pr57303.c: New testcase. 2013-12-02 Richard Biener PR tree-optimization/59139 * tree-ssa-loop-niter.c (chain_of_csts_start): Properly match code in get_val_for. (get_val_for): Use gcc_checking_asserts. * gcc.dg/torture/pr59139.c: New testcase. 2014-02-14 Richard Biener PR tree-optimization/60183 * tree-ssa-phiprop.c (propagate_with_phi): Avoid speculating loads. (tree_ssa_phiprop): Calculate and free post-dominators. * gcc.dg/torture/pr60183.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208618 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 23 ++++++++++++++++++++ gcc/testsuite/ChangeLog | 18 ++++++++++++++++ gcc/testsuite/gcc.dg/torture/pr57303.c | 33 ++++++++++++++++++++++++++++ gcc/testsuite/gcc.dg/torture/pr59139.c | 20 +++++++++++++++++ gcc/testsuite/gcc.dg/torture/pr60183.c | 39 ++++++++++++++++++++++++++++++++++ gcc/tree-ssa-loop-niter.c | 7 +++--- gcc/tree-ssa-phiprop.c | 9 ++++++++ gcc/tree-ssa-sink.c | 10 ++++++++- 8 files changed, 155 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr57303.c create mode 100644 gcc/testsuite/gcc.dg/torture/pr59139.c create mode 100644 gcc/testsuite/gcc.dg/torture/pr60183.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 73d19db3775..974814a0dbb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,26 @@ +2014-03-17 Richard Biener + + Backport from mainline + 2013-05-21 Richard Biener + + PR tree-optimization/57303 + * tree-ssa-sink.c (statement_sink_location): Properly handle + self-assignments. + + 2013-12-02 Richard Biener + + PR tree-optimization/59139 + * tree-ssa-loop-niter.c (chain_of_csts_start): Properly match + code in get_val_for. + (get_val_for): Use gcc_checking_asserts. + + 2014-02-14 Richard Biener + + PR tree-optimization/60183 + * tree-ssa-phiprop.c (propagate_with_phi): Avoid speculating + loads. + (tree_ssa_phiprop): Calculate and free post-dominators. + 2014-03-14 Georg-Johann Lay Backport from 2014-03-14 trunk r208562. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ca7f1799202..2cd6e12618f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,21 @@ +2014-03-17 Richard Biener + + Backport from mainline + 2013-05-21 Richard Biener + + PR tree-optimization/57303 + * gcc.dg/torture/pr57303.c: New testcase. + + 2013-12-02 Richard Biener + + PR tree-optimization/59139 + * gcc.dg/torture/pr59139.c: New testcase. + + 2014-02-14 Richard Biener + + PR tree-optimization/60183 + * gcc.dg/torture/pr60183.c: New testcase. + 2014-03-15 Jerry DeLisle Backport from mainline diff --git a/gcc/testsuite/gcc.dg/torture/pr57303.c b/gcc/testsuite/gcc.dg/torture/pr57303.c new file mode 100644 index 00000000000..1ddb5a8aab3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr57303.c @@ -0,0 +1,33 @@ +/* { dg-do run } */ + +void abort (void); + +struct S0 +{ + int f0; +}; +struct S1 +{ + struct S0 f0; +}; + +struct S1 x = { {0} }; +struct S1 y = { {1} }; + +static void +foo (struct S0 p) +{ + struct S0 *l = &y.f0; + *l = x.f0; + if (p.f0) + *l = *l; +} + +int +main () +{ + foo(y.f0); + if (y.f0.f0 != 0) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr59139.c b/gcc/testsuite/gcc.dg/torture/pr59139.c new file mode 100644 index 00000000000..4ec9177ffe7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr59139.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ + +int a, b, c, d, e; +int fn1(p1, p2) { return p2 == 0 ? p1 : 1 % p2; } + +void fn2() +{ + c = 0; + for (;; c = (unsigned short)c) + { + b = 2; + for (; b; b = a) + { + e = fn1(2, c && 1); + d = c == 0 ? e : c; + if (d) + return; + } + } +} diff --git a/gcc/testsuite/gcc.dg/torture/pr60183.c b/gcc/testsuite/gcc.dg/torture/pr60183.c new file mode 100644 index 00000000000..3f676637ba8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr60183.c @@ -0,0 +1,39 @@ +/* { dg-do run } */ +/* { dg-require-effective-target size32plus } */ + +/* Large so an out-of-bound read will crash. */ +unsigned char c[0x30001] = { 1 }; +int j = 2; + +static void +foo (unsigned long *x, unsigned char *y) +{ + int i; + unsigned long w = x[0]; + for (i = 0; i < j; i++) + { + w += *y; + y += 0x10000; + w += *y; + y += 0x10000; + } + x[1] = w; +} + +__attribute__ ((noinline, noclone)) void +bar (unsigned long *x) +{ + foo (x, c); +} + +int +main () +{ + unsigned long a[2] = { 0, -1UL }; + asm volatile (""::"r" (c):"memory"); + c[0] = 0; + bar (a); + if (a[1] != 0) + __builtin_abort (); + return 0; +} diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index 15ea06b8b9b..9c02122295f 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -2068,7 +2068,8 @@ chain_of_csts_start (struct loop *loop, tree x) return NULL; } - if (gimple_code (stmt) != GIMPLE_ASSIGN) + if (gimple_code (stmt) != GIMPLE_ASSIGN + || gimple_assign_rhs_class (stmt) == GIMPLE_TERNARY_RHS) return NULL; code = gimple_assign_rhs_code (stmt); @@ -2136,7 +2137,7 @@ get_val_for (tree x, tree base) { gimple stmt; - gcc_assert (is_gimple_min_invariant (base)); + gcc_checking_assert (is_gimple_min_invariant (base)); if (!x) return base; @@ -2145,7 +2146,7 @@ get_val_for (tree x, tree base) if (gimple_code (stmt) == GIMPLE_PHI) return base; - gcc_assert (is_gimple_assign (stmt)); + gcc_checking_assert (is_gimple_assign (stmt)); /* STMT must be either an assignment of a single SSA name or an expression involving an SSA name and a constant. Try to fold that diff --git a/gcc/tree-ssa-phiprop.c b/gcc/tree-ssa-phiprop.c index 30644372564..7dd94a4f566 100644 --- a/gcc/tree-ssa-phiprop.c +++ b/gcc/tree-ssa-phiprop.c @@ -314,6 +314,12 @@ propagate_with_phi (basic_block bb, gimple phi, struct phiprop_d *phivn, gimple def_stmt; tree vuse; + /* Only replace loads in blocks that post-dominate the PHI node. That + makes sure we don't end up speculating loads. */ + if (!dominated_by_p (CDI_POST_DOMINATORS, + bb, gimple_bb (use_stmt))) + continue; + /* Check whether this is a load of *ptr. */ if (!(is_gimple_assign (use_stmt) && TREE_CODE (gimple_assign_lhs (use_stmt)) == SSA_NAME @@ -385,6 +391,7 @@ tree_ssa_phiprop (void) size_t n; calculate_dominance_info (CDI_DOMINATORS); + calculate_dominance_info (CDI_POST_DOMINATORS); n = num_ssa_names; phivn = XCNEWVEC (struct phiprop_d, n); @@ -402,6 +409,8 @@ tree_ssa_phiprop (void) VEC_free (basic_block, heap, bbs); free (phivn); + free_dominance_info (CDI_POST_DOMINATORS); + return 0; } diff --git a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c index d42b46a1801..19cacfc56ea 100644 --- a/gcc/tree-ssa-sink.c +++ b/gcc/tree-ssa-sink.c @@ -412,7 +412,15 @@ statement_sink_location (gimple stmt, basic_block frombb, && gimple_vdef (use_stmt) && operand_equal_p (gimple_assign_lhs (stmt), gimple_assign_lhs (use_stmt), 0)) - continue; + { + /* If use_stmt is or might be a nop assignment then USE_STMT + acts as a use as well as definition. */ + if (stmt != use_stmt + && ref_maybe_used_by_stmt_p (use_stmt, + gimple_assign_lhs (stmt))) + return false; + continue; + } if (gimple_code (use_stmt) != GIMPLE_PHI) return false; -- cgit v1.2.1 From dccdc217208da2c242fd3e2c01189fb71e361de5 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 18 Mar 2014 00:16:21 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208626 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 03eb03503ef..6118677ac79 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140317 +20140318 -- cgit v1.2.1 From 405909382bc547ac006a5bbbfeb8d81f07fc733b Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 18 Mar 2014 08:46:21 +0000 Subject: 2014-03-18 Richard Biener Backport from mainline 2013-08-27 Richard Biener PR tree-optimization/57521 * tree-if-conv.c (if_convertible_bb_p): Verify that at least one edge is non-critical. (find_phi_replacement_condition): Make sure to use a non-critical edge. Cleanup and remove old bug workarounds. (bb_postdominates_preds): Remove. (if_convertible_loop_p_1): Do not compute post-dominators. (combine_blocks): Do not free post-dominators. (main_tree_if_conversion): Likewise. * gcc.dg/torture/pr57521.c: New testcase. 2013-09-03 Richard Biener PR middle-end/57656 * fold-const.c (negate_expr_p): Fix division case. (negate_expr): Likewise. * gcc.dg/torture/pr57656.c: New testcase. 2013-11-19 Richard Biener PR tree-optimization/57517 * tree-predcom.c (combinable_refs_p): Verify the combination is always executed when the refs are. * gfortran.fortran-torture/compile/pr57517.f90: New testcase. * gcc.dg/torture/pr57517.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208632 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 27 +++++++ gcc/fold-const.c | 45 ++++++++---- gcc/testsuite/ChangeLog | 19 +++++ gcc/testsuite/gcc.dg/torture/pr57517.c | 16 +++++ gcc/testsuite/gcc.dg/torture/pr57521.c | 51 ++++++++++++++ gcc/testsuite/gcc.dg/torture/pr57656.c | 13 ++++ .../gfortran.fortran-torture/compile/pr57517.f90 | 13 ++++ gcc/tree-if-conv.c | 82 +++++++--------------- gcc/tree-predcom.c | 6 +- 9 files changed, 199 insertions(+), 73 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr57517.c create mode 100644 gcc/testsuite/gcc.dg/torture/pr57521.c create mode 100644 gcc/testsuite/gcc.dg/torture/pr57656.c create mode 100644 gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 974814a0dbb..9eadc622bc8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,30 @@ +2014-03-18 Richard Biener + + Backport from mainline + 2013-08-27 Richard Biener + + PR tree-optimization/57521 + * tree-if-conv.c (if_convertible_bb_p): Verify that at least + one edge is non-critical. + (find_phi_replacement_condition): Make sure to use a non-critical + edge. Cleanup and remove old bug workarounds. + (bb_postdominates_preds): Remove. + (if_convertible_loop_p_1): Do not compute post-dominators. + (combine_blocks): Do not free post-dominators. + (main_tree_if_conversion): Likewise. + + 2013-09-03 Richard Biener + + PR middle-end/57656 + * fold-const.c (negate_expr_p): Fix division case. + (negate_expr): Likewise. + + 2013-11-19 Richard Biener + + PR tree-optimization/57517 + * tree-predcom.c (combinable_refs_p): Verify the combination + is always executed when the refs are. + 2014-03-17 Richard Biener Backport from mainline diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 1f864a78ce9..804a05f927a 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -486,11 +486,24 @@ negate_expr_p (tree t) and actually traps on some architectures. But if overflow is undefined, we can negate, because - (INT_MIN / 1) is an overflow. */ - if (INTEGRAL_TYPE_P (TREE_TYPE (t)) - && !TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (t))) - break; - return negate_expr_p (TREE_OPERAND (t, 1)) - || negate_expr_p (TREE_OPERAND (t, 0)); + if (INTEGRAL_TYPE_P (TREE_TYPE (t))) + { + if (!TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (t))) + break; + /* If overflow is undefined then we have to be careful because + we ask whether it's ok to associate the negate with the + division which is not ok for example for + -((a - b) / c) where (-(a - b)) / c may invoke undefined + overflow because of negating INT_MIN. So do not use + negate_expr_p here but open-code the two important cases. */ + if (TREE_CODE (TREE_OPERAND (t, 0)) == NEGATE_EXPR + || (TREE_CODE (TREE_OPERAND (t, 0)) == INTEGER_CST + && may_negate_without_overflow_p (TREE_OPERAND (t, 0)))) + return true; + } + else if (negate_expr_p (TREE_OPERAND (t, 0))) + return true; + return negate_expr_p (TREE_OPERAND (t, 1)); case NOP_EXPR: /* Negate -((double)float) as (double)(-float). */ @@ -670,16 +683,20 @@ fold_negate_expr (location_t loc, tree t) return fold_build2_loc (loc, TREE_CODE (t), type, TREE_OPERAND (t, 0), negate_expr (tem)); } + /* If overflow is undefined then we have to be careful because + we ask whether it's ok to associate the negate with the + division which is not ok for example for + -((a - b) / c) where (-(a - b)) / c may invoke undefined + overflow because of negating INT_MIN. So do not use + negate_expr_p here but open-code the two important cases. */ tem = TREE_OPERAND (t, 0); - if (negate_expr_p (tem)) - { - if (INTEGRAL_TYPE_P (type) - && (TREE_CODE (tem) != INTEGER_CST - || tree_int_cst_equal (tem, TYPE_MIN_VALUE (type)))) - fold_overflow_warning (warnmsg, WARN_STRICT_OVERFLOW_MISC); - return fold_build2_loc (loc, TREE_CODE (t), type, - negate_expr (tem), TREE_OPERAND (t, 1)); - } + if ((INTEGRAL_TYPE_P (type) + && (TREE_CODE (tem) == NEGATE_EXPR + || (TREE_CODE (tem) == INTEGER_CST + && may_negate_without_overflow_p (tem)))) + || !INTEGRAL_TYPE_P (type)) + return fold_build2_loc (loc, TREE_CODE (t), type, + negate_expr (tem), TREE_OPERAND (t, 1)); } break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2cd6e12618f..835bd98665d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,22 @@ +2014-03-18 Richard Biener + + Backport from mainline + 2013-08-27 Richard Biener + + PR tree-optimization/57521 + * gcc.dg/torture/pr57521.c: New testcase. + + 2013-09-03 Richard Biener + + PR middle-end/57656 + * gcc.dg/torture/pr57656.c: New testcase. + + 2013-11-19 Richard Biener + + PR tree-optimization/57517 + * gfortran.fortran-torture/compile/pr57517.f90: New testcase. + * gcc.dg/torture/pr57517.c: Likewise. + 2014-03-17 Richard Biener Backport from mainline diff --git a/gcc/testsuite/gcc.dg/torture/pr57517.c b/gcc/testsuite/gcc.dg/torture/pr57517.c new file mode 100644 index 00000000000..2422d8ee64a --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr57517.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ + +int x[1024], y[1024], z[1024], w[1024]; +void foo (void) +{ + int i; + for (i = 1; i < 1024; ++i) + { + int a = x[i]; + int b = y[i]; + int c = x[i-1]; + int d = y[i-1]; + if (w[i]) + z[i] = (a + b) + (c + d); + } +} diff --git a/gcc/testsuite/gcc.dg/torture/pr57521.c b/gcc/testsuite/gcc.dg/torture/pr57521.c new file mode 100644 index 00000000000..e7832cb00e8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr57521.c @@ -0,0 +1,51 @@ +/* { dg-do run } */ +/* { dg-options "-ftree-loop-if-convert" } */ + +void abort (void); + +int a, b, c, d, o = 1, p; +short e; + +int +fn1 (int * p1) +{ + int f, g, h, j = 0, k = 0, l = 0; + unsigned int i; + int *m[1] = { &l }; + for (; b >= 0; b--) + { + if (*p1) + if (j >= 0) + { + int n = 1; + e = 1; + h = a ? a : 1 % n; + g = h > 0 ? 0 : h + 1; + k = c + g; + } + else + continue; + else + { + + f = d > 0 ? 0 : d + 1; + i = f; + j = 1 + i; + } + l++; + } + return k; +} + +int +main () +{ + for (;; p++) + { + fn1 (&o); + break; + } + if (e != 1) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr57656.c b/gcc/testsuite/gcc.dg/torture/pr57656.c new file mode 100644 index 00000000000..4f3645e4693 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr57656.c @@ -0,0 +1,13 @@ +/* { dg-do run } */ +/* { dg-options "-fstrict-overflow" } */ + +int main (void) +{ + int a = -1; + int b = __INT_MAX__; + int c = 2; + int t = 1 - ((a - b) / c); // t = 1 - ( __INT_MIN__ / 2 ) + if (t != (1 - (-1 - __INT_MAX__) / 2)) + __builtin_abort(); + return 0; +} diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90 new file mode 100644 index 00000000000..f32698aa3a6 --- /dev/null +++ b/gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90 @@ -0,0 +1,13 @@ +SUBROUTINE cal_helicity (uh, ph, phb, wavg, ims, ime, its, ite) + INTEGER, INTENT( IN ) :: ims, ime, its, ite + REAL, DIMENSION( ims:ime), INTENT( IN ) :: ph, phb, wavg + REAL, DIMENSION( ims:ime), INTENT( INOUT ) :: uh + INTEGER :: i + REAL :: zu + DO i = its, ite + zu = (ph(i ) + phb(i)) + (ph(i-1) + phb(i-1)) + IF (wavg(i) .GT. 0) THEN + uh(i) = uh(i) + zu + ENDIF + END DO +END SUBROUTINE cal_helicity diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index 9d09f0f4d26..316b4e2d57d 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -758,20 +758,6 @@ if_convertible_stmt_p (gimple stmt, VEC (data_reference_p, heap) *refs) return true; } -/* Return true when BB post-dominates all its predecessors. */ - -static bool -bb_postdominates_preds (basic_block bb) -{ - unsigned i; - - for (i = 0; i < EDGE_COUNT (bb->preds); i++) - if (!dominated_by_p (CDI_POST_DOMINATORS, EDGE_PRED (bb, i)->src, bb)) - return false; - - return true; -} - /* Return true when BB is if-convertible. This routine does not check basic block's statements and phis. @@ -830,10 +816,23 @@ if_convertible_bb_p (struct loop *loop, basic_block bb, basic_block exit_bb) return false; } - if (EDGE_COUNT (bb->preds) == 2 - && bb != loop->header - && !bb_postdominates_preds (bb)) - return false; + /* At least one incoming edge has to be non-critical as otherwise edge + predicates are not equal to basic-block predicates of the edge + source. */ + if (EDGE_COUNT (bb->preds) > 1 + && bb != loop->header) + { + bool found = false; + FOR_EACH_EDGE (e, ei, bb->preds) + if (EDGE_COUNT (e->src->succs) == 1) + found = true; + if (!found) + { + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, "only critical predecessors\n"); + return false; + } + } return true; } @@ -1048,7 +1047,6 @@ if_convertible_loop_p_1 (struct loop *loop, return false; calculate_dominance_info (CDI_DOMINATORS); - calculate_dominance_info (CDI_POST_DOMINATORS); /* Allow statements that can be handled during if-conversion. */ ifc_bbs = get_loop_body_in_if_conv_order (loop); @@ -1184,8 +1182,7 @@ if_convertible_loop_p (struct loop *loop) if-conversion. */ static basic_block -find_phi_replacement_condition (struct loop *loop, - basic_block bb, tree *cond, +find_phi_replacement_condition (basic_block bb, tree *cond, gimple_stmt_iterator *gsi) { edge first_edge, second_edge; @@ -1195,34 +1192,10 @@ find_phi_replacement_condition (struct loop *loop, first_edge = EDGE_PRED (bb, 0); second_edge = EDGE_PRED (bb, 1); - /* Use condition based on following criteria: - 1) - S1: x = !c ? a : b; - - S2: x = c ? b : a; - - S2 is preferred over S1. Make 'b' first_bb and use its condition. - - 2) Do not make loop header first_bb. - - 3) - S1: x = !(c == d)? a : b; - - S21: t1 = c == d; - S22: x = t1 ? b : a; - - S3: x = (c == d) ? b : a; - - S3 is preferred over S1 and S2*, Make 'b' first_bb and use - its condition. - - 4) If pred B is dominated by pred A then use pred B's condition. - See PR23115. */ - - /* Select condition that is not TRUTH_NOT_EXPR. */ + /* Prefer an edge with a not negated predicate. + ??? That's a very weak cost model. */ tmp_cond = bb_predicate (first_edge->src); gcc_assert (tmp_cond); - if (TREE_CODE (tmp_cond) == TRUTH_NOT_EXPR) { edge tmp_edge; @@ -1232,11 +1205,9 @@ find_phi_replacement_condition (struct loop *loop, second_edge = tmp_edge; } - /* Check if FIRST_BB is loop header or not and make sure that - FIRST_BB does not dominate SECOND_BB. */ - if (first_edge->src == loop->header - || dominated_by_p (CDI_DOMINATORS, - second_edge->src, first_edge->src)) + /* Check if the edge we take the condition from is not critical. + We know that at least one non-critical edge exists. */ + if (EDGE_COUNT (first_edge->src->succs) > 1) { *cond = bb_predicate (second_edge->src); @@ -1311,9 +1282,6 @@ predicate_scalar_phi (gimple phi, tree cond, arg_1 = gimple_phi_arg_def (phi, 1); } - gcc_checking_assert (bb == bb->loop_father->header - || bb_postdominates_preds (bb)); - /* Build new RHS using selected condition and arguments. */ rhs = build3 (COND_EXPR, TREE_TYPE (res), unshare_expr (cond), arg_0, arg_1); @@ -1359,7 +1327,7 @@ predicate_all_scalar_phis (struct loop *loop) /* BB has two predecessors. Using predecessor's aux field, set appropriate condition for the PHI node replacement. */ gsi = gsi_after_labels (bb); - true_bb = find_phi_replacement_condition (loop, bb, &cond, &gsi); + true_bb = find_phi_replacement_condition (bb, &cond, &gsi); while (!gsi_end_p (phi_gsi)) { @@ -1791,8 +1759,6 @@ main_tree_if_conversion (void) if (changed && flag_tree_loop_if_convert_stores) todo |= TODO_update_ssa_only_virtuals; - free_dominance_info (CDI_POST_DOMINATORS); - return todo; } diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c index 1566902e3d7..61a1c741d1c 100644 --- a/gcc/tree-predcom.c +++ b/gcc/tree-predcom.c @@ -2117,7 +2117,11 @@ combinable_refs_p (dref r1, dref r2, stmt = find_common_use_stmt (&name1, &name2); - if (!stmt) + if (!stmt + /* A simple post-dominance check - make sure the combination + is executed under the same condition as the references. */ + || (gimple_bb (stmt) != gimple_bb (r1->stmt) + && gimple_bb (stmt) != gimple_bb (r2->stmt))) return false; acode = gimple_assign_rhs_code (stmt); -- cgit v1.2.1 From c1997ae1e3bccbfcaaf344e1bfa13758f3dfda95 Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 18 Mar 2014 10:58:22 +0000 Subject: 2014-03-18 Richard Biener Backport from mainline 2013-11-05 Richard Biener PR middle-end/58941 * tree-dfa.c (get_ref_base_and_extent): Merge common code in MEM_REF and TARGET_MEM_REF handling. Make sure to process trailing array detection before diving into the view-converted object (and possibly apply some extra offset). * gcc.dg/torture/pr58941.c: New testcase. 2012-05-07 Eric Botcazou * tree-dfa.c (get_ref_base_and_extent) : Do the offset computation using the precision of the index type. 2012-05-31 Eric Botcazou * tree-dfa.c (get_ref_base_and_extent): Compute the offset using double ints throughout. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208640 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 21 ++++ gcc/testsuite/ChangeLog | 8 ++ gcc/testsuite/gcc.dg/torture/pr58941.c | 33 ++++++ gcc/tree-dfa.c | 185 ++++++++++++++++++--------------- 4 files changed, 164 insertions(+), 83 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr58941.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9eadc622bc8..f6867dcc11b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,24 @@ +2014-03-18 Richard Biener + + Backport from mainline + 2013-11-05 Richard Biener + + PR middle-end/58941 + * tree-dfa.c (get_ref_base_and_extent): Merge common code + in MEM_REF and TARGET_MEM_REF handling. Make sure to + process trailing array detection before diving into the + view-converted object (and possibly apply some extra offset). + + 2012-05-07 Eric Botcazou + + * tree-dfa.c (get_ref_base_and_extent) : Do the offset + computation using the precision of the index type. + + 2012-05-31 Eric Botcazou + + * tree-dfa.c (get_ref_base_and_extent): Compute the offset using + double ints throughout. + 2014-03-18 Richard Biener Backport from mainline diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 835bd98665d..451a078c104 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-03-18 Richard Biener + + Backport from mainline + 2013-11-05 Richard Biener + + PR middle-end/58941 + * gcc.dg/torture/pr58941.c: New testcase. + 2014-03-18 Richard Biener Backport from mainline diff --git a/gcc/testsuite/gcc.dg/torture/pr58941.c b/gcc/testsuite/gcc.dg/torture/pr58941.c new file mode 100644 index 00000000000..c0eea073165 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr58941.c @@ -0,0 +1,33 @@ +/* { dg-do run } */ + +extern void abort (void); + +typedef struct { + int msgLength; + unsigned char data[1000]; +} SMsg; + +typedef struct { + int dummy; + int d[0]; +} SData; + +int condition = 3; + +int main() +{ + SMsg msg; + SData *pData = (SData*)(msg.data); + unsigned int i = 0; + for (i = 0; i < 1; i++) + { + pData->d[i] = 0; + if(condition & 1) + pData->d[i] |= 0x55; + if(condition & 2) + pData->d[i] |= 0xaa; + } + if (pData->d[0] != 0xff) + abort (); + return 0; +} diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index 0ecec816b6a..e380e9d47d6 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -713,9 +713,9 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, HOST_WIDE_INT bitsize = -1; HOST_WIDE_INT maxsize = -1; tree size_tree = NULL_TREE; - HOST_WIDE_INT bit_offset = 0; + double_int bit_offset = double_int_zero; + HOST_WIDE_INT hbit_offset; bool seen_variable_array_ref = false; - tree base_type; /* First get the final access size from just the outermost expression. */ if (TREE_CODE (exp) == COMPONENT_REF) @@ -746,12 +746,12 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, and find the ultimate containing object. */ while (1) { - base_type = TREE_TYPE (exp); - switch (TREE_CODE (exp)) { case BIT_FIELD_REF: - bit_offset += TREE_INT_CST_LOW (TREE_OPERAND (exp, 2)); + bit_offset + = double_int_add (bit_offset, + tree_to_double_int (TREE_OPERAND (exp, 2))); break; case COMPONENT_REF: @@ -759,22 +759,23 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, tree field = TREE_OPERAND (exp, 1); tree this_offset = component_ref_field_offset (exp); - if (this_offset - && TREE_CODE (this_offset) == INTEGER_CST - && host_integerp (this_offset, 0)) + if (this_offset && TREE_CODE (this_offset) == INTEGER_CST) { - HOST_WIDE_INT hthis_offset = TREE_INT_CST_LOW (this_offset); - hthis_offset *= BITS_PER_UNIT; - hthis_offset - += TREE_INT_CST_LOW (DECL_FIELD_BIT_OFFSET (field)); - bit_offset += hthis_offset; + double_int doffset = tree_to_double_int (this_offset); + doffset = double_int_lshift (doffset, + BITS_PER_UNIT == 8 + ? 3 : exact_log2 (BITS_PER_UNIT), + HOST_BITS_PER_DOUBLE_INT, true); + doffset = double_int_add (doffset, + tree_to_double_int + (DECL_FIELD_BIT_OFFSET (field))); + bit_offset = double_int_add (bit_offset, doffset); /* If we had seen a variable array ref already and we just referenced the last field of a struct or a union member then we have to adjust maxsize by the padding at the end of our field. */ - if (seen_variable_array_ref - && maxsize != -1) + if (seen_variable_array_ref && maxsize != -1) { tree stype = TREE_TYPE (TREE_OPERAND (exp, 0)); tree next = DECL_CHAIN (field); @@ -786,10 +787,12 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, tree fsize = DECL_SIZE_UNIT (field); tree ssize = TYPE_SIZE_UNIT (stype); if (host_integerp (fsize, 0) - && host_integerp (ssize, 0)) + && host_integerp (ssize, 0) + && double_int_fits_in_shwi_p (doffset)) maxsize += ((TREE_INT_CST_LOW (ssize) - TREE_INT_CST_LOW (fsize)) - * BITS_PER_UNIT - hthis_offset); + * BITS_PER_UNIT + - double_int_to_shwi (doffset)); else maxsize = -1; } @@ -801,8 +804,12 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, /* We need to adjust maxsize to the whole structure bitsize. But we can subtract any constant offset seen so far, because that would get us out of the structure otherwise. */ - if (maxsize != -1 && csize && host_integerp (csize, 1)) - maxsize = TREE_INT_CST_LOW (csize) - bit_offset; + if (maxsize != -1 + && csize + && host_integerp (csize, 1) + && double_int_fits_in_shwi_p (bit_offset)) + maxsize = TREE_INT_CST_LOW (csize) + - double_int_to_shwi (bit_offset); else maxsize = -1; } @@ -817,18 +824,23 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, /* If the resulting bit-offset is constant, track it. */ if (TREE_CODE (index) == INTEGER_CST - && host_integerp (index, 0) && (low_bound = array_ref_low_bound (exp), - host_integerp (low_bound, 0)) + TREE_CODE (low_bound) == INTEGER_CST) && (unit_size = array_ref_element_size (exp), - host_integerp (unit_size, 1))) + TREE_CODE (unit_size) == INTEGER_CST)) { - HOST_WIDE_INT hindex = TREE_INT_CST_LOW (index); - - hindex -= TREE_INT_CST_LOW (low_bound); - hindex *= TREE_INT_CST_LOW (unit_size); - hindex *= BITS_PER_UNIT; - bit_offset += hindex; + double_int doffset + = double_int_sext + (double_int_sub (TREE_INT_CST (index), + TREE_INT_CST (low_bound)), + TYPE_PRECISION (TREE_TYPE (index))); + doffset = double_int_mul (doffset, + tree_to_double_int (unit_size)); + doffset = double_int_lshift (doffset, + BITS_PER_UNIT == 8 + ? 3 : exact_log2 (BITS_PER_UNIT), + HOST_BITS_PER_DOUBLE_INT, true); + bit_offset = double_int_add (bit_offset, doffset); /* An array ref with a constant index up in the structure hierarchy will constrain the size of any variable array ref @@ -841,8 +853,12 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, /* We need to adjust maxsize to the whole array bitsize. But we can subtract any constant offset seen so far, because that would get us outside of the array otherwise. */ - if (maxsize != -1 && asize && host_integerp (asize, 1)) - maxsize = TREE_INT_CST_LOW (asize) - bit_offset; + if (maxsize != -1 + && asize + && host_integerp (asize, 1) + && double_int_fits_in_shwi_p (bit_offset)) + maxsize = TREE_INT_CST_LOW (asize) + - double_int_to_shwi (bit_offset); else maxsize = -1; @@ -857,13 +873,45 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, break; case IMAGPART_EXPR: - bit_offset += bitsize; + bit_offset + = double_int_add (bit_offset, uhwi_to_double_int (bitsize)); break; case VIEW_CONVERT_EXPR: break; + case TARGET_MEM_REF: + /* Via the variable index or index2 we can reach the + whole object. Still hand back the decl here. */ + if (TREE_CODE (TMR_BASE (exp)) == ADDR_EXPR + && (TMR_INDEX (exp) || TMR_INDEX2 (exp))) + { + exp = TREE_OPERAND (TMR_BASE (exp), 0); + bit_offset = double_int_zero; + maxsize = -1; + goto done; + } + /* Fallthru. */ case MEM_REF: + /* We need to deal with variable arrays ending structures such as + struct { int length; int a[1]; } x; x.a[d] + struct { struct { int a; int b; } a[1]; } x; x.a[d].a + struct { struct { int a[1]; } a[1]; } x; x.a[0][d], x.a[d][0] + struct { int len; union { int a[1]; struct X x; } u; } x; x.u.a[d] + where we do not know maxsize for variable index accesses to + the array. The simplest way to conservatively deal with this + is to punt in the case that offset + maxsize reaches the + base type boundary. This needs to include possible trailing + padding that is there for alignment purposes. */ + if (seen_variable_array_ref + && maxsize != -1 + && (!double_int_fits_in_shwi_p (bit_offset) + || !host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1) + || (double_int_to_shwi (bit_offset) + maxsize + == (HOST_WIDE_INT) TREE_INT_CST_LOW + (TYPE_SIZE (TREE_TYPE (exp)))))) + maxsize = -1; + /* Hand back the decl for MEM[&decl, off]. */ if (TREE_CODE (TREE_OPERAND (exp, 0)) == ADDR_EXPR) { @@ -876,74 +924,45 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, BITS_PER_UNIT == 8 ? 3 : exact_log2 (BITS_PER_UNIT), HOST_BITS_PER_DOUBLE_INT, true); - off = double_int_add (off, shwi_to_double_int (bit_offset)); + off = double_int_add (off, bit_offset); if (double_int_fits_in_shwi_p (off)) { - bit_offset = double_int_to_shwi (off); + bit_offset = off; exp = TREE_OPERAND (TREE_OPERAND (exp, 0), 0); } } } goto done; - case TARGET_MEM_REF: - /* Hand back the decl for MEM[&decl, off]. */ - if (TREE_CODE (TMR_BASE (exp)) == ADDR_EXPR) - { - /* Via the variable index or index2 we can reach the - whole object. */ - if (TMR_INDEX (exp) || TMR_INDEX2 (exp)) - { - exp = TREE_OPERAND (TMR_BASE (exp), 0); - bit_offset = 0; - maxsize = -1; - goto done; - } - if (integer_zerop (TMR_OFFSET (exp))) - exp = TREE_OPERAND (TMR_BASE (exp), 0); - else - { - double_int off = mem_ref_offset (exp); - off = double_int_lshift (off, - BITS_PER_UNIT == 8 - ? 3 : exact_log2 (BITS_PER_UNIT), - HOST_BITS_PER_DOUBLE_INT, true); - off = double_int_add (off, shwi_to_double_int (bit_offset)); - if (double_int_fits_in_shwi_p (off)) - { - bit_offset = double_int_to_shwi (off); - exp = TREE_OPERAND (TMR_BASE (exp), 0); - } - } - } - goto done; - default: goto done; } exp = TREE_OPERAND (exp, 0); } - done: - - /* We need to deal with variable arrays ending structures such as - struct { int length; int a[1]; } x; x.a[d] - struct { struct { int a; int b; } a[1]; } x; x.a[d].a - struct { struct { int a[1]; } a[1]; } x; x.a[0][d], x.a[d][0] - struct { int len; union { int a[1]; struct X x; } u; } x; x.u.a[d] - where we do not know maxsize for variable index accesses to - the array. The simplest way to conservatively deal with this - is to punt in the case that offset + maxsize reaches the - base type boundary. This needs to include possible trailing padding - that is there for alignment purposes. */ + /* We need to deal with variable arrays ending structures. */ if (seen_variable_array_ref && maxsize != -1 - && (!host_integerp (TYPE_SIZE (base_type), 1) - || (bit_offset + maxsize - == (signed) TREE_INT_CST_LOW (TYPE_SIZE (base_type))))) + && (!double_int_fits_in_shwi_p (bit_offset) + || !host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1) + || (double_int_to_shwi (bit_offset) + maxsize + == (HOST_WIDE_INT) + TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp)))))) maxsize = -1; + done: + if (!double_int_fits_in_shwi_p (bit_offset)) + { + *poffset = 0; + *psize = bitsize; + *pmax_size = -1; + + return exp; + } + + hbit_offset = double_int_to_shwi (bit_offset); + /* In case of a decl or constant base object we can do better. */ if (DECL_P (exp)) @@ -952,7 +971,7 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, base decl. */ if (maxsize == -1 && host_integerp (DECL_SIZE (exp), 1)) - maxsize = TREE_INT_CST_LOW (DECL_SIZE (exp)) - bit_offset; + maxsize = TREE_INT_CST_LOW (DECL_SIZE (exp)) - hbit_offset; } else if (CONSTANT_CLASS_P (exp)) { @@ -960,13 +979,13 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, base type constant. */ if (maxsize == -1 && host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1)) - maxsize = TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp))) - bit_offset; + maxsize = TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp))) - hbit_offset; } /* ??? Due to negative offsets in ARRAY_REF we can end up with negative bit_offset here. We might want to store a zero offset in this case. */ - *poffset = bit_offset; + *poffset = hbit_offset; *psize = bitsize; *pmax_size = maxsize; -- cgit v1.2.1 From 8030a55e7fe000384306250aa764e781a8453a58 Mon Sep 17 00:00:00 2001 From: ktietz Date: Tue, 18 Mar 2014 20:08:03 +0000 Subject: PR rtl-optimization/56356 * sdbout.c (sdbout_parms): Verify that parms' incoming argument is valid. (sdbout_reg_parms): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208665 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/sdbout.c | 10 ++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f6867dcc11b..78b39c74d11 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-03-18 Kai Tietz + + PR rtl-optimization/56356 + * sdbout.c (sdbout_parms): Verify that parms' + incoming argument is valid. + (sdbout_reg_parms): Likewise. + 2014-03-18 Richard Biener Backport from mainline diff --git a/gcc/sdbout.c b/gcc/sdbout.c index 255c68e7b04..4d42da9221e 100644 --- a/gcc/sdbout.c +++ b/gcc/sdbout.c @@ -1264,7 +1264,10 @@ static void sdbout_parms (tree parms) { for (; parms; parms = TREE_CHAIN (parms)) - if (DECL_NAME (parms)) + if (DECL_NAME (parms) + && TREE_TYPE (parms) != error_mark_node + && DECL_RTL_SET_P (parms) + && DECL_INCOMING_RTL (parms)) { int current_sym_value = 0; const char *name = IDENTIFIER_POINTER (DECL_NAME (parms)); @@ -1396,7 +1399,10 @@ static void sdbout_reg_parms (tree parms) { for (; parms; parms = TREE_CHAIN (parms)) - if (DECL_NAME (parms)) + if (DECL_NAME (parms) + && TREE_TYPE (parms) != error_mark_node + && DECL_RTL_SET_P (parms) + && DECL_INCOMING_RTL (parms)) { const char *name = IDENTIFIER_POINTER (DECL_NAME (parms)); -- cgit v1.2.1 From 1fc1c8077a5b356dcc934da46d3f2d2504f9e745 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 19 Mar 2014 00:16:25 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208670 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 6118677ac79..6651a0f7926 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140318 +20140319 -- cgit v1.2.1 From 6399b0243b9395a597f167ece585af0bc3e63550 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Wed, 19 Mar 2014 09:40:03 +0000 Subject: * tree-dfa.c (get_ref_base_and_extent) : Remove space. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208678 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/tree-dfa.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 78b39c74d11..a517bdebd03 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2014-03-19 Eric Botcazou + + * tree-dfa.c (get_ref_base_and_extent) : Remove space. + 2014-03-18 Kai Tietz PR rtl-optimization/56356 diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index e380e9d47d6..3bcca2b31f3 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -825,7 +825,7 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, /* If the resulting bit-offset is constant, track it. */ if (TREE_CODE (index) == INTEGER_CST && (low_bound = array_ref_low_bound (exp), - TREE_CODE (low_bound) == INTEGER_CST) + TREE_CODE (low_bound) == INTEGER_CST) && (unit_size = array_ref_element_size (exp), TREE_CODE (unit_size) == INTEGER_CST)) { -- cgit v1.2.1 From ae5efb4bfc668324ecd78c0e8fd220d29134d434 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 20 Mar 2014 00:16:40 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208689 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 6651a0f7926..df5f537d8bb 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140319 +20140320 -- cgit v1.2.1 From 25148c0733f49d366cfad97a78086d493c2e6dfe Mon Sep 17 00:00:00 2001 From: joel Date: Thu, 20 Mar 2014 16:13:10 +0000 Subject: 2014-03-20 Joel Sherrill * config.host (v850*-*-*): Add to tmake_file instead of resetting it. This was removing the v850*-*-rtems* settings. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208711 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgcc/ChangeLog | 5 +++++ libgcc/config.host | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index f87f51d8263..9e77f194543 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,8 @@ +2014-03-20 Joel Sherrill + + * config.host (v850*-*-*): Add to tmake_file instead of resetting + it. This was removing the v850*-*-rtems* settings. + 014-02-28 Joey Ye Backport from mainline r208229 diff --git a/libgcc/config.host b/libgcc/config.host index a6f7c450d70..b64da4a26d9 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -1110,7 +1110,7 @@ tilepro-*-linux*) md_unwind_header=tilepro/linux-unwind.h ;; v850*-*-*) - tmake_file="v850/t-v850 t-fdpbit" + tmake_file="${tmake_file} v850/t-v850 t-fdpbit" ;; vax-*-linux*) tmake_file="$tmake_file vax/t-linux" -- cgit v1.2.1 From 7cac1c8970b6e0660b8b7eed2e2935c17053e7f8 Mon Sep 17 00:00:00 2001 From: joel Date: Thu, 20 Mar 2014 16:14:37 +0000 Subject: ChangeLog: Fix typo git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208712 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgcc/ChangeLog | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 9e77f194543..d6ee3353aee 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,7 +1,6 @@ 2014-03-20 Joel Sherrill - * config.host (v850*-*-*): Add to tmake_file instead of resetting - it. This was removing the v850*-*-rtems* settings. + * config.host (v850*-*-*): Add to tmake_file instead of resetting it. 014-02-28 Joey Ye -- cgit v1.2.1 From bcc9bac2baced86dc69cc1e401954ca391a9520f Mon Sep 17 00:00:00 2001 From: jakub Date: Thu, 20 Mar 2014 16:34:32 +0000 Subject: PR target/60568 * config/i386/i386.c (x86_output_mi_thunk): Surround UNSPEC_GOT into CONST, put pic register as first operand of PLUS. Use gen_const_mem for both 32-bit and 64-bit PIC got loads. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208717 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/config/i386/i386.c | 7 ++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a517bdebd03..08484ca96d0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-03-20 Jakub Jelinek + + PR target/60568 + * config/i386/i386.c (x86_output_mi_thunk): Surround UNSPEC_GOT + into CONST, put pic register as first operand of PLUS. Use + gen_const_mem for both 32-bit and 64-bit PIC got loads. + 2014-03-19 Eric Botcazou * tree-dfa.c (get_ref_base_and_extent) : Remove space. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 8bbf5d0484b..9116dd4c63f 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -32406,7 +32406,7 @@ x86_output_mi_thunk (FILE *file, { tmp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, fnaddr), UNSPEC_GOTPCREL); tmp = gen_rtx_CONST (Pmode, tmp); - fnaddr = gen_rtx_MEM (Pmode, tmp); + fnaddr = gen_const_mem (Pmode, tmp); } } else @@ -32426,8 +32426,9 @@ x86_output_mi_thunk (FILE *file, output_set_got (tmp, NULL_RTX); fnaddr = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, fnaddr), UNSPEC_GOT); - fnaddr = gen_rtx_PLUS (Pmode, fnaddr, tmp); - fnaddr = gen_rtx_MEM (Pmode, fnaddr); + fnaddr = gen_rtx_CONST (Pmode, fnaddr); + fnaddr = gen_rtx_PLUS (Pmode, tmp, fnaddr); + fnaddr = gen_const_mem (Pmode, fnaddr); } } -- cgit v1.2.1 From c5ad4f2870c02eda34cb6b351e74304c1039f39e Mon Sep 17 00:00:00 2001 From: burnus Date: Thu, 20 Mar 2014 19:42:15 +0000 Subject: 2014-03-20 Tobias Burnus PR fortran/60543 PR fortran/60283 * gfortran.h (gfc_unset_implicit_pure): New prototype. * resolve.c (gfc_unset_implicit_pure): New. (resolve_structure_cons, resolve_function, pure_subroutine, resolve_ordinary_assign): Use it. * decl.c (match_old_style_init, gfc_match_data, match_pointer_init, variable_decl): Ditto. * expr.c (gfc_check_pointer_assign): Ditto. * intrinsic.c (gfc_intrinsic_sub_interface): Ditto. * io.c (match_vtag, gfc_match_open, gfc_match_close, match_filepos, gfc_match_inquire, gfc_match_print, gfc_match_wait, check_io_constraints): Ditto. * match.c (gfc_match_critical, gfc_match_stopcode, lock_unlock_statement, sync_statement, gfc_match_allocate, gfc_match_deallocate): Ditto. * parse.c (decode_omp_directive): Ditto. * symbol.c (gfc_add_save): Ditto. 2014-03-20 Tobias Burnus PR fortran/60543 PR fortran/60283 * gfortran.dg/implicit_pure_4.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208733 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 21 +++++++++++ gcc/fortran/decl.c | 13 ++++--- gcc/fortran/gfortran.h | 1 + gcc/fortran/intrinsic.c | 5 ++- gcc/fortran/io.c | 33 +++++++--------- gcc/fortran/match.c | 27 ++++++-------- gcc/fortran/parse.c | 3 +- gcc/fortran/resolve.c | 54 +++++++++++++++++++-------- gcc/fortran/symbol.c | 4 +- gcc/testsuite/ChangeLog | 8 +++- gcc/testsuite/gfortran.dg/implicit_pure_4.f90 | 22 +++++++++++ 11 files changed, 128 insertions(+), 63 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/implicit_pure_4.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 928e0397d93..a56f12043b7 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,24 @@ +2014-03-20 Tobias Burnus + + PR fortran/60543 + PR fortran/60283 + * gfortran.h (gfc_unset_implicit_pure): New prototype. + * resolve.c (gfc_unset_implicit_pure): New. + (resolve_structure_cons, resolve_function, + pure_subroutine, resolve_ordinary_assign): Use it. + * decl.c (match_old_style_init, gfc_match_data, + match_pointer_init, variable_decl): Ditto. + * expr.c (gfc_check_pointer_assign): Ditto. + * intrinsic.c (gfc_intrinsic_sub_interface): Ditto. + * io.c (match_vtag, gfc_match_open, gfc_match_close, + match_filepos, gfc_match_inquire, gfc_match_print, + gfc_match_wait, check_io_constraints): Ditto. + * match.c (gfc_match_critical, gfc_match_stopcode, + lock_unlock_statement, sync_statement, gfc_match_allocate, + gfc_match_deallocate): Ditto. + * parse.c (decode_omp_directive): Ditto. + * symbol.c (gfc_add_save): Ditto. + 2014-03-09 Janus Weil Backport from 4.8 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 3e7c6e618aa..e86f107d969 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -509,9 +509,7 @@ match_old_style_init (const char *name) free (newdata); return MATCH_ERROR; } - - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (gfc_current_ns->proc_name); /* Mark the variable as having appeared in a data statement. */ if (gfc_add_data (&sym->attr, sym->name, &sym->declared_at) == FAILURE) @@ -570,9 +568,7 @@ gfc_match_data (void) gfc_error ("DATA statement at %C is not allowed in a PURE procedure"); return MATCH_ERROR; } - - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (gfc_current_ns->proc_name); return MATCH_YES; @@ -1730,6 +1726,7 @@ match_pointer_init (gfc_expr **init, int procptr) gfc_error ("Error in pointer initialization at %C"); return MATCH_ERROR; } + gfc_unset_implicit_pure (gfc_current_ns->proc_name); if (!procptr) gfc_resolve_expr (*init); @@ -2015,6 +2012,10 @@ variable_decl (int elem) m = MATCH_ERROR; } + if (current_attr.flavor != FL_PARAMETER + && gfc_state_stack->state != COMP_DERIVED) + gfc_unset_implicit_pure (gfc_current_ns->proc_name); + if (m != MATCH_YES) goto cleanup; } diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 6e1fc780d66..54310dfbea1 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -2795,6 +2795,7 @@ void gfc_resolve_blocks (gfc_code *, gfc_namespace *); int gfc_impure_variable (gfc_symbol *); int gfc_pure (gfc_symbol *); int gfc_implicit_pure (gfc_symbol *); +void gfc_unset_implicit_pure (gfc_symbol *); int gfc_elemental (gfc_symbol *); gfc_try gfc_resolve_iterator (gfc_iterator *, bool); gfc_try find_forall_index (gfc_expr *, gfc_symbol *, int); diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index 38bcb273fdd..a2666f90e65 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -4217,13 +4217,16 @@ gfc_intrinsic_sub_interface (gfc_code *c, int error_flag) c->resolved_sym->attr.elemental = isym->elemental; } - if (gfc_pure (NULL) && !isym->pure) + if (!isym->pure && gfc_pure (NULL)) { gfc_error ("Subroutine call to intrinsic '%s' at %L is not PURE", name, &c->loc); return MATCH_ERROR; } + if (!isym->pure) + gfc_unset_implicit_pure (NULL); + c->resolved_sym->attr.noreturn = isym->noreturn; return MATCH_YES; diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index 7caadc5056c..86f158fdbc9 100644 --- a/gcc/fortran/io.c +++ b/gcc/fortran/io.c @@ -1307,7 +1307,8 @@ match_vtag (const io_tag *tag, gfc_expr **v) return MATCH_ERROR; } - if (gfc_pure (NULL) && gfc_impure_variable (result->symtree->n.sym)) + bool impure = gfc_impure_variable (result->symtree->n.sym); + if (impure && gfc_pure (NULL)) { gfc_error ("Variable %s cannot be assigned in PURE procedure at %C", tag->name); @@ -1315,8 +1316,8 @@ match_vtag (const io_tag *tag, gfc_expr **v) return MATCH_ERROR; } - if (gfc_implicit_pure (NULL) && gfc_impure_variable (result->symtree->n.sym)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + if (impure) + gfc_unset_implicit_pure (NULL); *v = result; return MATCH_YES; @@ -1836,8 +1837,7 @@ gfc_match_open (void) goto cleanup; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); warn = (open->err || open->iostat) ? true : false; @@ -2249,8 +2249,7 @@ gfc_match_close (void) goto cleanup; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); warn = (close->iostat || close->err) ? true : false; @@ -2417,8 +2416,7 @@ done: goto cleanup; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); new_st.op = op; new_st.ext.filepos = fp; @@ -3274,9 +3272,8 @@ if (condition) \ "an internal file in a PURE procedure", io_kind_name (k)); - if (gfc_implicit_pure (NULL) && (k == M_READ || k == M_WRITE)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; - + if (k == M_READ || k == M_WRITE) + gfc_unset_implicit_pure (NULL); } if (k != M_READ) @@ -3807,8 +3804,7 @@ gfc_match_print (void) return MATCH_ERROR; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); return MATCH_YES; } @@ -3966,8 +3962,7 @@ gfc_match_inquire (void) return MATCH_ERROR; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); new_st.block = gfc_get_code (); new_st.block->op = EXEC_IOLENGTH; @@ -4020,8 +4015,7 @@ gfc_match_inquire (void) goto cleanup; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); if (inquire->id != NULL && inquire->pending == NULL) { @@ -4206,8 +4200,7 @@ gfc_match_wait (void) goto cleanup; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); new_st.op = EXEC_WAIT; new_st.ext.wait = wait; diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index cb750cf67d2..194fafcb6d3 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -1754,8 +1754,7 @@ gfc_match_critical (void) return MATCH_ERROR; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: CRITICAL statement at %C") == FAILURE) @@ -2684,8 +2683,7 @@ gfc_match_stopcode (gfc_statement st) goto cleanup; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); if (st == ST_STOP && gfc_find_state (COMP_CRITICAL) == SUCCESS) { @@ -2825,8 +2823,7 @@ lock_unlock_statement (gfc_statement st) return MATCH_ERROR; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); if (gfc_option.coarray == GFC_FCOARRAY_NONE) { @@ -3017,8 +3014,7 @@ sync_statement (gfc_statement st) return MATCH_ERROR; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: SYNC statement at %C") == FAILURE) @@ -3493,15 +3489,15 @@ gfc_match_allocate (void) if (gfc_check_do_variable (tail->expr->symtree)) goto cleanup; - if (gfc_pure (NULL) && gfc_impure_variable (tail->expr->symtree->n.sym)) + bool impure = gfc_impure_variable (tail->expr->symtree->n.sym); + if (impure && gfc_pure (NULL)) { gfc_error ("Bad allocate-object at %C for a PURE procedure"); goto cleanup; } - if (gfc_implicit_pure (NULL) - && gfc_impure_variable (tail->expr->symtree->n.sym)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + if (impure) + gfc_unset_implicit_pure (NULL); if (tail->expr->ts.deferred) { @@ -3868,14 +3864,15 @@ gfc_match_deallocate (void) sym = tail->expr->symtree->n.sym; - if (gfc_pure (NULL) && gfc_impure_variable (sym)) + bool impure = gfc_impure_variable (sym); + if (impure && gfc_pure (NULL)) { gfc_error ("Illegal allocate-object at %C for a PURE procedure"); goto cleanup; } - if (gfc_implicit_pure (NULL) && gfc_impure_variable (sym)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + if (impure) + gfc_unset_implicit_pure (NULL); if (gfc_is_coarray (tail->expr) && gfc_find_state (COMP_DO_CONCURRENT) == SUCCESS) diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index 5fbddd0e4b6..7132a937cb3 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -545,8 +545,7 @@ decode_omp_directive (void) return ST_NONE; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); old_locus = gfc_current_locus; diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 7a15e9e42d8..514060882d6 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -1193,9 +1193,10 @@ resolve_structure_cons (gfc_expr *expr, int init) } /* F2003, C1272 (3). */ - if (gfc_pure (NULL) && cons->expr->expr_type == EXPR_VARIABLE - && (gfc_impure_variable (cons->expr->symtree->n.sym) - || gfc_is_coindexed (cons->expr))) + bool impure = cons->expr->expr_type == EXPR_VARIABLE + && (gfc_impure_variable (cons->expr->symtree->n.sym) + || gfc_is_coindexed (cons->expr)); + if (impure && gfc_pure (NULL)) { t = FAILURE; gfc_error ("Invalid expression in the structure constructor for " @@ -1203,12 +1204,8 @@ resolve_structure_cons (gfc_expr *expr, int init) comp->name, &cons->expr->where); } - if (gfc_implicit_pure (NULL) - && cons->expr->expr_type == EXPR_VARIABLE - && (gfc_impure_variable (cons->expr->symtree->n.sym) - || gfc_is_coindexed (cons->expr))) - gfc_current_ns->proc_name->attr.implicit_pure = 0; - + if (impure) + gfc_unset_implicit_pure (NULL); } return t; @@ -3203,8 +3200,7 @@ resolve_function (gfc_expr *expr) t = FAILURE; } - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); } /* Functions without the RECURSIVE attribution are not allowed to @@ -3269,8 +3265,7 @@ pure_subroutine (gfc_code *c, gfc_symbol *sym) gfc_error ("Subroutine call to '%s' at %L is not PURE", sym->name, &c->loc); - if (gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); } @@ -9224,7 +9219,7 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns) if (lhs->expr_type == EXPR_VARIABLE && lhs->symtree->n.sym != gfc_current_ns->proc_name && lhs->symtree->n.sym->ns != gfc_current_ns) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); if (lhs->ts.type == BT_DERIVED && lhs->expr_type == EXPR_VARIABLE @@ -9232,11 +9227,11 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns) && rhs->expr_type == EXPR_VARIABLE && (gfc_impure_variable (rhs->symtree->n.sym) || gfc_is_coindexed (rhs))) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); /* Fortran 2008, C1283. */ if (gfc_is_coindexed (lhs)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + gfc_unset_implicit_pure (NULL); } /* F03:7.4.1.2. */ @@ -13288,6 +13283,33 @@ gfc_implicit_pure (gfc_symbol *sym) } +void +gfc_unset_implicit_pure (gfc_symbol *sym) +{ + gfc_namespace *ns; + + if (sym == NULL) + { + /* Check if the current procedure is implicit_pure. Walk up + the procedure list until we find a procedure. */ + for (ns = gfc_current_ns; ns; ns = ns->parent) + { + sym = ns->proc_name; + if (sym == NULL) + return; + + if (sym->attr.flavor == FL_PROCEDURE) + break; + } + } + + if (sym->attr.flavor == FL_PROCEDURE) + sym->attr.implicit_pure = 0; + else + sym->attr.pure = 0; +} + + /* Test whether the current procedure is elemental or not. */ int diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index dcf40d9a47f..52dfb166e48 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -1121,8 +1121,8 @@ gfc_add_save (symbol_attribute *attr, save_state s, const char *name, return FAILURE; } - if (s == SAVE_EXPLICIT && gfc_implicit_pure (NULL)) - gfc_current_ns->proc_name->attr.implicit_pure = 0; + if (s == SAVE_EXPLICIT) + gfc_unset_implicit_pure (NULL); if (s == SAVE_EXPLICIT && attr->save == SAVE_EXPLICIT) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 451a078c104..7e77479ca2f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-03-20 Tobias Burnus + + PR fortran/60543 + PR fortran/60283 + * gfortran.dg/implicit_pure_4.f90: New. + 2014-03-18 Richard Biener Backport from mainline @@ -7,7 +13,7 @@ * gcc.dg/torture/pr58941.c: New testcase. 2014-03-18 Richard Biener - + Backport from mainline 2013-08-27 Richard Biener diff --git a/gcc/testsuite/gfortran.dg/implicit_pure_4.f90 b/gcc/testsuite/gfortran.dg/implicit_pure_4.f90 new file mode 100644 index 00000000000..8563dd72108 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/implicit_pure_4.f90 @@ -0,0 +1,22 @@ +! { dg-do compile } +! +! PR fortran/60543 +! PR fortran/60283 +! +module m +contains + REAL(8) FUNCTION random() + CALL RANDOM_NUMBER(random) + END FUNCTION random + REAL(8) FUNCTION random2() + block + block + block + CALL RANDOM_NUMBER(random2) + end block + end block + end block + END FUNCTION random2 +end module m + +! { dg-final { scan-module-absence "m" "IMPLICIT_PURE" } } -- cgit v1.2.1 From 7dcf5efa76482924b02300d9c652ef437a36e7a8 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 21 Mar 2014 00:16:20 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208741 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index df5f537d8bb..cf4fbf6b607 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140320 +20140321 -- cgit v1.2.1 From b7d1eae5c7ddf7305b7123ea20f55309a6dc15d0 Mon Sep 17 00:00:00 2001 From: jye2 Date: Fri, 21 Mar 2014 02:38:22 +0000 Subject: Fix typo in ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208744 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgcc/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index d6ee3353aee..45981daf6e6 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -2,7 +2,7 @@ * config.host (v850*-*-*): Add to tmake_file instead of resetting it. -014-02-28 Joey Ye +2014-02-28 Joey Ye Backport from mainline r208229 2014-02-28 Joey Ye -- cgit v1.2.1 From df769ae81c29a78b624bde94f6af922ed2481906 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 22 Mar 2014 00:16:15 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208760 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index cf4fbf6b607..1252ab0dff3 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140321 +20140322 -- cgit v1.2.1 From d5a357c5bab61fb8c45ec02be66a6e621fc10b92 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 23 Mar 2014 00:16:20 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208767 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 1252ab0dff3..b58a70b88b9 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140322 +20140323 -- cgit v1.2.1 From e6784e4a9daa8a9fdcaec2161828d6be879970a0 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Sun, 23 Mar 2014 11:31:36 +0000 Subject: PR rtl-optimization/60601 * bb-reorder.c (fix_up_fall_thru_edges): Test EDGE_FALLTHRU everywhere. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208772 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/bb-reorder.c | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 08484ca96d0..36ec2a5eb9b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-03-23 Eric Botcazou + + PR rtl-optimization/60601 + * bb-reorder.c (fix_up_fall_thru_edges): Test EDGE_FALLTHRU everywhere. + 2014-03-20 Jakub Jelinek PR target/60568 diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index a35b8e62942..2ab2a910b57 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -1478,9 +1478,8 @@ fix_up_fall_thru_edges (void) edge e; edge_iterator ei; - /* Find EDGE_CAN_FALLTHRU edge. */ FOR_EACH_EDGE (e, ei, cur_bb->succs) - if (e->flags & EDGE_CAN_FALLTHRU) + if (e->flags & EDGE_FALLTHRU) { fall_thru = e; break; -- cgit v1.2.1 From f828b50559a9c218b57757d5b61c6acfe74e0b5c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 24 Mar 2014 00:16:35 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208777 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index b58a70b88b9..5b49f7fbdae 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140323 +20140324 -- cgit v1.2.1 From b02bf5fedad88f869d6346bf5ce31b2a8cd10c64 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 25 Mar 2014 00:16:20 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208800 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 5b49f7fbdae..83ada668757 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140324 +20140325 -- cgit v1.2.1 From 8306d48492d69c8ca5333a49859ca02a02a69727 Mon Sep 17 00:00:00 2001 From: redi Date: Tue, 25 Mar 2014 20:40:17 +0000 Subject: PR libstdc++/60658 * include/bits/atomic_base.h (__atomic_base<_PTp*>::is_lock_free()): Use sizeof pointer type not the element type. * testsuite/29_atomics/atomic/60658.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208821 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 7 ++++ libstdc++-v3/include/bits/atomic_base.h | 4 +-- libstdc++-v3/testsuite/29_atomics/atomic/60658.cc | 43 +++++++++++++++++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 libstdc++-v3/testsuite/29_atomics/atomic/60658.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ecb98513702..4378c9b1928 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2014-03-25 Jonathan Wakely + + PR libstdc++/60658 + * include/bits/atomic_base.h (__atomic_base<_PTp*>::is_lock_free()): + Use sizeof pointer type not the element type. + * testsuite/29_atomics/atomic/60658.cc: New. + 2013-11-05 Jonathan Wakely * doc/xml/manual/status_cxx2011.xml: Document aligned_union as diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h index 191db7b5f01..8995b1b4021 100644 --- a/libstdc++-v3/include/bits/atomic_base.h +++ b/libstdc++-v3/include/bits/atomic_base.h @@ -722,11 +722,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION bool is_lock_free() const noexcept - { return __atomic_is_lock_free(_M_type_size(1), &_M_p); } + { return __atomic_is_lock_free(sizeof(__pointer_type), &_M_p); } bool is_lock_free() const volatile noexcept - { return __atomic_is_lock_free(_M_type_size(1), &_M_p); } + { return __atomic_is_lock_free(sizeof(__pointer_type), &_M_p); } void store(__pointer_type __p, diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/60658.cc b/libstdc++-v3/testsuite/29_atomics/atomic/60658.cc new file mode 100644 index 00000000000..5634085ad4b --- /dev/null +++ b/libstdc++-v3/testsuite/29_atomics/atomic/60658.cc @@ -0,0 +1,43 @@ +// { dg-require-atomic-builtins "" } +// { dg-options "-std=gnu++11" } + +// Copyright (C) 2014 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +#include +#include + +// libstdc++/60658 + +struct Foo { + char buf[1]; +}; + +struct Bar { + char buf[100]; +}; + +int +main () +{ + bool test __attribute__((unused)) = true; + + std::atomic a; + std::atomic b; + + VERIFY (a.is_lock_free() == b.is_lock_free()); +} -- cgit v1.2.1 From b57c4fb1b1c47f702dcb1c6d63149fed7c177214 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 26 Mar 2014 00:16:42 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208827 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 83ada668757..737ba4f849e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140325 +20140326 -- cgit v1.2.1 From ff6d171f2db1fa278e746bd1d59d184bf5b130bc Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 27 Mar 2014 00:16:30 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208857 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 737ba4f849e..59890450516 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140326 +20140327 -- cgit v1.2.1 From 1332df189c0257233f71fa894afb3079c24fca10 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 28 Mar 2014 00:16:40 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208884 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 59890450516..b572c86cd9e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140327 +20140328 -- cgit v1.2.1 From fffeafb8aa4d6c31b3a278e28cf6a4360fa56a49 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 29 Mar 2014 00:16:37 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208928 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index b572c86cd9e..e19894e3c9c 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140328 +20140329 -- cgit v1.2.1 From a2f28b40c4efeb34fdfa668909631426e3867671 Mon Sep 17 00:00:00 2001 From: tkoenig Date: Sat, 29 Mar 2014 11:51:17 +0000 Subject: 2014-04-29 Thomas Koenig PR fortran/60522 * frontend-passes.c (cfe_code): Do not walk subtrees for WHERE. 2014-04-29 Thomas Koenig PR fortran/60522 * gfortran.dg/where_4.f90: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208934 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/frontend-passes.c | 27 +++++++++++++++++++++++++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/where_4.f90 | 18 ++++++++++++++++++ 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/where_4.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a56f12043b7..35a1bf3837a 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2014-04-29 Thomas Koenig + + PR fortran/60522 + * frontend-passes.c (cfe_code): Do not walk subtrees + for WHERE. + 2014-03-20 Tobias Burnus PR fortran/60543 diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c index acfb14d069f..05ecd20a874 100644 --- a/gcc/fortran/frontend-passes.c +++ b/gcc/fortran/frontend-passes.c @@ -442,12 +442,35 @@ cfe_expr_0 (gfc_expr **e, int *walk_subtrees, to insert statements as needed. */ static int -cfe_code (gfc_code **c, int *walk_subtrees ATTRIBUTE_UNUSED, - void *data ATTRIBUTE_UNUSED) +cfe_code (gfc_code **c, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) { current_code = c; inserted_block = NULL; changed_statement = NULL; + + /* Do not do anything inside a WHERE statement; scalar assignments, BLOCKs + and allocation on assigment are prohibited inside WHERE, and finally + masking an expression would lead to wrong-code when replacing + + WHERE (a>0) + b = sum(foo(a) + foo(a)) + END WHERE + + with + + WHERE (a > 0) + tmp = foo(a) + b = sum(tmp + tmp) + END WHERE +*/ + + if ((*c)->op == EXEC_WHERE) + { + *walk_subtrees = 0; + return 0; + } + + return 0; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7e77479ca2f..e6f2832f45a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-04-29 Thomas Koenig + + PR fortran/60522 + * gfortran.dg/where_4.f90: New test case. + 2014-03-20 Tobias Burnus PR fortran/60543 diff --git a/gcc/testsuite/gfortran.dg/where_4.f90 b/gcc/testsuite/gfortran.dg/where_4.f90 new file mode 100644 index 00000000000..1ff2e4ca31a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/where_4.f90 @@ -0,0 +1,18 @@ +! { dg-do compile } +! PR 60522 - this used to ICE. +! Original test case Roger Ferrer Ibanez +subroutine foo(a, b) + implicit none + integer, dimension(:), intent(inout) :: a + integer, dimension(:), intent(in) :: b + + where (b(:) > 0) + where (b(:) > 100) + a(lbound(a, 1):ubound(a, 1)) = b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) - 100 + elsewhere + a(lbound(a, 1):ubound(a, 1)) = b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) + end where + elsewhere + a(lbound(a, 1):ubound(a, 1)) = - b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) + end where +end subroutine foo -- cgit v1.2.1 From c09e451ef187ff076d1be391f765ed0a4d08ead9 Mon Sep 17 00:00:00 2001 From: mikael Date: Sat, 29 Mar 2014 12:14:41 +0000 Subject: fortran/ PR fortran/60677 * trans-intrinsic.c (gfc_conv_intrinsic_ichar): Enlarge argument list buffer. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208935 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 8 +++++++- gcc/fortran/trans-intrinsic.c | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 35a1bf3837a..11cbdde933b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,4 +1,10 @@ -2014-04-29 Thomas Koenig +2014-03-29 Mikael Morin + + PR fortran/60677 + * trans-intrinsic.c (gfc_conv_intrinsic_ichar): Enlarge argument + list buffer. + +2014-03-29 Thomas Koenig PR fortran/60522 * frontend-passes.c (cfe_code): Do not walk subtrees diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 89dbb012f86..b8752995fca 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -4664,7 +4664,7 @@ gfc_conv_intrinsic_index_scan_verify (gfc_se * se, gfc_expr * expr, static void gfc_conv_intrinsic_ichar (gfc_se * se, gfc_expr * expr) { - tree args[2], type, pchartype; + tree args[3], type, pchartype; int nargs; nargs = gfc_intrinsic_argument_list_length (expr); -- cgit v1.2.1 From 3709da7fd99945ff6f0cdc2cb81c4d5991fe02da Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 30 Mar 2014 00:16:33 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208942 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index e19894e3c9c..f3565a60a0f 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140329 +20140330 -- cgit v1.2.1 From d32a1b12c47dbca08c63d97aaae3a464ed9d5015 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Sun, 30 Mar 2014 15:48:48 +0000 Subject: PR ada/60703 * system-linux-alpha.ads: Adjust for Ada 2005. * system-linux-mips.ads: Likewise. * system-linux-mips64el.ads: Likewise. * system-linux-mipsel.ads: Likewise. * system-linux-s390.ads: Likewise. * system-linux-s390x.ads: Likewise. * system-linux-sparc.ads: Likewise. * system-linux-sparcv9.ads: Likewise. * system-rtems.ads: Likewise. * system-vxworks-arm.ads: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208947 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 14 ++++++++++++++ gcc/ada/system-linux-alpha.ads | 8 +++++--- gcc/ada/system-linux-mips.ads | 1 + gcc/ada/system-linux-mips64el.ads | 1 + gcc/ada/system-linux-mipsel.ads | 1 + gcc/ada/system-linux-s390.ads | 8 +++++--- gcc/ada/system-linux-s390x.ads | 8 +++++--- gcc/ada/system-linux-sparc.ads | 8 +++++--- gcc/ada/system-linux-sparcv9.ads | 10 ++++++---- gcc/ada/system-rtems.ads | 8 ++++---- gcc/ada/system-vxworks-arm.ads | 8 ++++---- 11 files changed, 51 insertions(+), 24 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 25cf0ddbed3..3259967be50 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,17 @@ +2014-03-30 Eric Botcazou + + PR ada/60703 + * system-linux-alpha.ads: Adjust for Ada 2005. + * system-linux-mips.ads: Likewise. + * system-linux-mips64el.ads: Likewise. + * system-linux-mipsel.ads: Likewise. + * system-linux-s390.ads: Likewise. + * system-linux-s390x.ads: Likewise. + * system-linux-sparc.ads: Likewise. + * system-linux-sparcv9.ads: Likewise. + * system-rtems.ads: Likewise. + * system-vxworks-arm.ads: Likewise. + 2014-03-13 Eric Botcazou PR ada/51483 diff --git a/gcc/ada/system-linux-alpha.ads b/gcc/ada/system-linux-alpha.ads index 154c01bf6c5..f5aa9506ff9 100644 --- a/gcc/ada/system-linux-alpha.ads +++ b/gcc/ada/system-linux-alpha.ads @@ -35,9 +35,10 @@ ------------------------------------------------------------------------------ package System is -pragma Pure (System); --- Note that we take advantage of the implementation permission to --- make this unit Pure instead of Preelaborable, see RM 13.7(36) + pragma Pure; + -- Note that we take advantage of the implementation permission to make + -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada + -- 2005, this is Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; @@ -61,6 +62,7 @@ pragma Pure (System); -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff --git a/gcc/ada/system-linux-mips.ads b/gcc/ada/system-linux-mips.ads index 885995c076c..8f5713fed3a 100644 --- a/gcc/ada/system-linux-mips.ads +++ b/gcc/ada/system-linux-mips.ads @@ -62,6 +62,7 @@ package System is -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff --git a/gcc/ada/system-linux-mips64el.ads b/gcc/ada/system-linux-mips64el.ads index de3215b3ec4..ad94841c980 100644 --- a/gcc/ada/system-linux-mips64el.ads +++ b/gcc/ada/system-linux-mips64el.ads @@ -62,6 +62,7 @@ package System is -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff --git a/gcc/ada/system-linux-mipsel.ads b/gcc/ada/system-linux-mipsel.ads index a25642a153c..5c2e0a54835 100644 --- a/gcc/ada/system-linux-mipsel.ads +++ b/gcc/ada/system-linux-mipsel.ads @@ -62,6 +62,7 @@ package System is -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff --git a/gcc/ada/system-linux-s390.ads b/gcc/ada/system-linux-s390.ads index 19ad00025ad..7864db845af 100644 --- a/gcc/ada/system-linux-s390.ads +++ b/gcc/ada/system-linux-s390.ads @@ -35,9 +35,10 @@ ------------------------------------------------------------------------------ package System is -pragma Pure (System); --- Note that we take advantage of the implementation permission to --- make this unit Pure instead of Preelaborable, see RM 13.7(36) + pragma Pure; + -- Note that we take advantage of the implementation permission to make + -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada + -- 2005, this is Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; @@ -61,6 +62,7 @@ pragma Pure (System); -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff --git a/gcc/ada/system-linux-s390x.ads b/gcc/ada/system-linux-s390x.ads index 6ed5749aafd..7a28cccf1c3 100644 --- a/gcc/ada/system-linux-s390x.ads +++ b/gcc/ada/system-linux-s390x.ads @@ -35,9 +35,10 @@ ------------------------------------------------------------------------------ package System is -pragma Pure (System); --- Note that we take advantage of the implementation permission to --- make this unit Pure instead of Preelaborable, see RM 13.7(36) + pragma Pure; + -- Note that we take advantage of the implementation permission to make + -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada + -- 2005, this is Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; @@ -61,6 +62,7 @@ pragma Pure (System); -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff --git a/gcc/ada/system-linux-sparc.ads b/gcc/ada/system-linux-sparc.ads index 1f4f2207d45..ab8591675a7 100644 --- a/gcc/ada/system-linux-sparc.ads +++ b/gcc/ada/system-linux-sparc.ads @@ -35,9 +35,10 @@ ------------------------------------------------------------------------------ package System is -pragma Pure (System); --- Note that we take advantage of the implementation permission to --- make this unit Pure instead of Preelaborable, see RM 13.7(36) + pragma Pure; + -- Note that we take advantage of the implementation permission to make + -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada + -- 2005, this is Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; @@ -61,6 +62,7 @@ pragma Pure (System); -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff --git a/gcc/ada/system-linux-sparcv9.ads b/gcc/ada/system-linux-sparcv9.ads index 14d89f929b2..5b7598f3e43 100644 --- a/gcc/ada/system-linux-sparcv9.ads +++ b/gcc/ada/system-linux-sparcv9.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (GNU/Linux-SPARCV9 Version) -- -- -- --- Copyright (C) 1992-2011, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2014, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -35,9 +35,10 @@ ------------------------------------------------------------------------------ package System is -pragma Pure (System); --- Note that we take advantage of the implementation permission to --- make this unit Pure instead of Preelaborable, see RM 13.7(36) + pragma Pure; + -- Note that we take advantage of the implementation permission to make + -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada + -- 2005, this is Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; @@ -61,6 +62,7 @@ pragma Pure (System); -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff --git a/gcc/ada/system-rtems.ads b/gcc/ada/system-rtems.ads index 3cab22abfe4..50bf7ac6402 100644 --- a/gcc/ada/system-rtems.ads +++ b/gcc/ada/system-rtems.ads @@ -7,7 +7,7 @@ -- S p e c -- -- (Compiler Version) -- -- -- --- Copyright (C) 1992-2011 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2014 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -34,9 +34,8 @@ -- -- ------------------------------------------------------------------------------ --- This version of System is a RTEMS version that is used in building --- the compiler. This is based as closely as possible on the generic --- version with the following exceptions: +-- This version is for RTEMS. It is based as closely as possible on the +-- generic version with the following exceptions: -- + priority definitions package System is @@ -67,6 +66,7 @@ package System is -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := Standard'Storage_Unit; diff --git a/gcc/ada/system-vxworks-arm.ads b/gcc/ada/system-vxworks-arm.ads index 484d40d95c7..265066aab33 100644 --- a/gcc/ada/system-vxworks-arm.ads +++ b/gcc/ada/system-vxworks-arm.ads @@ -35,10 +35,10 @@ ------------------------------------------------------------------------------ package System is -pragma Pure (System); --- Note that we take advantage of the implementation permission to make this --- unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada 2005, this is --- Pure in any case (AI-362). + pragma Pure; + -- Note that we take advantage of the implementation permission to make + -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada + -- 2005, this is Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; -- cgit v1.2.1 From 40469349494074e364a785ec1796e2be694a0483 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 31 Mar 2014 00:16:30 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208951 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index f3565a60a0f..074d526a528 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140330 +20140331 -- cgit v1.2.1 From 73f0d0b9e49c448a8c0c449f152342e8c93c315d Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 1 Apr 2014 00:16:15 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208967 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 074d526a528..a7cffcf326d 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140331 +20140401 -- cgit v1.2.1 From 328ac763525236a9fd50a35243dddfd03f539e28 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Tue, 1 Apr 2014 08:26:10 +0000 Subject: * doc/invoke.texi (mapp-regs): Clarify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208975 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/doc/invoke.texi | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 36ec2a5eb9b..60da2b1f9c1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2014-04-01 Sebastian Huber + + * doc/invoke.texi (mapp-regs): Clarify. + 2014-03-23 Eric Botcazou PR rtl-optimization/60601 diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index b52a084e12e..625fef25a6c 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -18309,8 +18309,9 @@ These @samp{-m} options are supported on the SPARC: @opindex mno-app-regs @opindex mapp-regs Specify @option{-mapp-regs} to generate output using the global registers -2 through 4, which the SPARC SVR4 ABI reserves for applications. This -is the default. +2 through 4, which the SPARC SVR4 ABI reserves for applications. Like the +global register 1, each global register 2 through 4 is then treated as an +allocable register that is clobbered by function calls. This is the default. To be fully SVR4 ABI compliant at the cost of some performance loss, specify @option{-mno-app-regs}. You should compile libraries and system -- cgit v1.2.1 From f50b88830e71386da5ee62290eaeb204c551f818 Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 1 Apr 2014 08:52:32 +0000 Subject: 2014-04-01 Richard Biener * gimple.h (struct gimple_statement_base): Align subcode to 16 bits. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208976 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/gimple.h | 3 +++ 2 files changed, 8 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 60da2b1f9c1..93121803569 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-04-01 Richard Biener + + * gimple.h (struct gimple_statement_base): Align subcode to + 16 bits. + 2014-04-01 Sebastian Huber * doc/invoke.texi (mapp-regs): Clarify. diff --git a/gcc/gimple.h b/gcc/gimple.h index 97eec59fcb0..4a168207144 100644 --- a/gcc/gimple.h +++ b/gcc/gimple.h @@ -305,6 +305,9 @@ struct GTY(()) gimple_statement_base { /* Nonzero if this statement contains volatile operands. */ unsigned has_volatile_ops : 1; + /* Padding to get subcode to 16 bit alignment. */ + unsigned pad : 1; + /* The SUBCODE field can be used for tuple-specific flags for tuples that do not require subcodes. Note that SUBCODE should be at least as wide as tree codes, as several tuples store tree codes -- cgit v1.2.1 From 3b3233e3993639def914a61801986437192ac2c6 Mon Sep 17 00:00:00 2001 From: jason Date: Tue, 1 Apr 2014 17:28:29 +0000 Subject: Core DR 475 PR c++/41174 PR c++/59224 * libsupc++/eh_throw.cc (__cxa_throw): Set uncaughtExceptions. * libsupc++/eh_alloc.cc (__cxa_allocate_dependent_exception) (__cxa_allocate_exception): Don't set it here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@208991 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/g++.dg/eh/uncaught1.C | 2 +- gcc/testsuite/g++.dg/eh/uncaught4.C | 29 +++++++++++++++++++++++++++++ libstdc++-v3/ChangeLog | 9 +++++++++ libstdc++-v3/libsupc++/eh_alloc.cc | 12 ------------ libstdc++-v3/libsupc++/eh_throw.cc | 3 +++ 5 files changed, 42 insertions(+), 13 deletions(-) create mode 100644 gcc/testsuite/g++.dg/eh/uncaught4.C diff --git a/gcc/testsuite/g++.dg/eh/uncaught1.C b/gcc/testsuite/g++.dg/eh/uncaught1.C index afbf5af4d22..e96af334a8c 100644 --- a/gcc/testsuite/g++.dg/eh/uncaught1.C +++ b/gcc/testsuite/g++.dg/eh/uncaught1.C @@ -13,7 +13,7 @@ struct Check { static Check const data[] = { { 0, 0, false }, // construct [0] - { 1, 0, true }, // [1] = [0] + { 1, 0, false }, // [1] = [0] { 0, 0, true }, // destruct [0] { 2, 1, true }, // [2] = [1] { 2, 2, true }, // destruct [2] diff --git a/gcc/testsuite/g++.dg/eh/uncaught4.C b/gcc/testsuite/g++.dg/eh/uncaught4.C new file mode 100644 index 00000000000..227d11b330b --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/uncaught4.C @@ -0,0 +1,29 @@ +// PR c++/41174 +// { dg-do run } + +#include + +#define assert(E) if (!(E)) __builtin_abort(); + +struct e { + e() + { + assert( !std::uncaught_exception() ); + try { + throw 1; + } catch (int i) { + assert( !std::uncaught_exception() ); + throw; + } + } +}; + +int main() +{ + try { + throw e(); + } catch (int i) { + assert( !std::uncaught_exception() ); + } + assert( !std::uncaught_exception() ); +} diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 4378c9b1928..f5273be0c2c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2014-04-01 Jason Merrill + + Core DR 475 + PR c++/41174 + PR c++/59224 + * libsupc++/eh_throw.cc (__cxa_throw): Set uncaughtExceptions. + * libsupc++/eh_alloc.cc (__cxa_allocate_dependent_exception) + (__cxa_allocate_exception): Don't set it here. + 2014-03-25 Jonathan Wakely PR libstdc++/60658 diff --git a/libstdc++-v3/libsupc++/eh_alloc.cc b/libstdc++-v3/libsupc++/eh_alloc.cc index 74474d82ec6..9f4a52e1ee5 100644 --- a/libstdc++-v3/libsupc++/eh_alloc.cc +++ b/libstdc++-v3/libsupc++/eh_alloc.cc @@ -126,12 +126,6 @@ __cxxabiv1::__cxa_allocate_exception(std::size_t thrown_size) _GLIBCXX_NOTHROW std::terminate (); } - // We have an uncaught exception as soon as we allocate memory. This - // yields uncaught_exception() true during the copy-constructor that - // initializes the exception object. See Issue 475. - __cxa_eh_globals *globals = __cxa_get_globals (); - globals->uncaughtExceptions += 1; - memset (ret, 0, sizeof (__cxa_refcounted_exception)); return (void *)((char *)ret + sizeof (__cxa_refcounted_exception)); @@ -188,12 +182,6 @@ __cxxabiv1::__cxa_allocate_dependent_exception() _GLIBCXX_NOTHROW std::terminate (); } - // We have an uncaught exception as soon as we allocate memory. This - // yields uncaught_exception() true during the copy-constructor that - // initializes the exception object. See Issue 475. - __cxa_eh_globals *globals = __cxa_get_globals (); - globals->uncaughtExceptions += 1; - memset (ret, 0, sizeof (__cxa_dependent_exception)); return ret; diff --git a/libstdc++-v3/libsupc++/eh_throw.cc b/libstdc++-v3/libsupc++/eh_throw.cc index de00602cdea..58759488373 100644 --- a/libstdc++-v3/libsupc++/eh_throw.cc +++ b/libstdc++-v3/libsupc++/eh_throw.cc @@ -61,6 +61,9 @@ extern "C" void __cxxabiv1::__cxa_throw (void *obj, std::type_info *tinfo, void (_GLIBCXX_CDTOR_CALLABI *dest) (void *)) { + __cxa_eh_globals *globals = __cxa_get_globals (); + globals->uncaughtExceptions += 1; + // Definitely a primary. __cxa_refcounted_exception *header = __get_refcounted_exception_header_from_obj (obj); -- cgit v1.2.1 From b2527be03a7bc8722271251a00b192f03a7fa829 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 2 Apr 2014 00:16:33 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209005 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index a7cffcf326d..9b2bb2031b3 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140401 +20140402 -- cgit v1.2.1 From edc64304b06edfc07515743ad3bce5755ebc7bae Mon Sep 17 00:00:00 2001 From: rth Date: Wed, 2 Apr 2014 20:30:55 +0000 Subject: libgomp: Fix default futex vs errno * config/linux/futex.h (futex_wait): Get error value from errno. (futex_wake): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209037 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgomp/ChangeLog | 5 +++++ libgomp/config/linux/futex.h | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index bc33ea9a37b..8d3bc356eff 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2014-04-02 Richard Henderson + + * config/linux/futex.h (futex_wait): Get error value from errno. + (futex_wake): Likewise. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libgomp/config/linux/futex.h b/libgomp/config/linux/futex.h index d0136f50ac2..b1ce2afadd4 100644 --- a/libgomp/config/linux/futex.h +++ b/libgomp/config/linux/futex.h @@ -41,8 +41,8 @@ static inline void futex_wait (int *addr, int val) { - long err = syscall (SYS_futex, addr, gomp_futex_wait, val, NULL); - if (__builtin_expect (err == -ENOSYS, 0)) + int err = syscall (SYS_futex, addr, gomp_futex_wait, val, NULL); + if (__builtin_expect (err < 0 && errno == ENOSYS, 0)) { gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG; gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG; @@ -53,8 +53,8 @@ futex_wait (int *addr, int val) static inline void futex_wake (int *addr, int count) { - long err = syscall (SYS_futex, addr, gomp_futex_wake, count); - if (__builtin_expect (err == -ENOSYS, 0)) + int err = syscall (SYS_futex, addr, gomp_futex_wake, count); + if (__builtin_expect (err < 0 && errno == ENOSYS, 0)) { gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG; gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG; -- cgit v1.2.1 From dbcce5c3a2d46ed005eb67532c347f9a49798d8e Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 3 Apr 2014 00:16:15 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209043 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 9b2bb2031b3..cd99a911103 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140402 +20140403 -- cgit v1.2.1 From e1114241c3acedfb91670eccb409a9100827a018 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 4 Apr 2014 00:16:20 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209066 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index cd99a911103..9f1ee5d634b 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140403 +20140404 -- cgit v1.2.1 From 11ba5d591c5736e46afec6b9c43d97ba26b67836 Mon Sep 17 00:00:00 2001 From: rguenth Date: Fri, 4 Apr 2014 12:04:03 +0000 Subject: 2014-04-04 Richard Biener * tree-ssanames.c (make_ssa_name_fn): Fix assert. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209082 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/tree-ssanames.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 93121803569..b0c6fc8ea6f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2014-04-04 Richard Biener + + * tree-ssanames.c (make_ssa_name_fn): Fix assert. + 2014-04-01 Richard Biener * gimple.h (struct gimple_statement_base): Align subcode to diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c index 42eb9243252..f14ee439575 100644 --- a/gcc/tree-ssanames.c +++ b/gcc/tree-ssanames.c @@ -133,7 +133,7 @@ make_ssa_name_fn (struct function *fn, tree var, gimple stmt) /* The node was cleared out when we put it on the free list, so there is no need to do so again here. */ - gcc_assert (ssa_name (SSA_NAME_VERSION (t)) == NULL); + gcc_assert (VEC_index (tree, SSANAMES (fn), SSA_NAME_VERSION (t)) == NULL); VEC_replace (tree, SSANAMES (fn), SSA_NAME_VERSION (t), t); } else -- cgit v1.2.1 From a2cbaf585c3240f1cfccb1d58c1f09860df101da Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 5 Apr 2014 00:16:35 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209135 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 9f1ee5d634b..cff053e11c5 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140404 +20140405 -- cgit v1.2.1 From db04af01ca6041728ed878bd8fae8ca05ed23207 Mon Sep 17 00:00:00 2001 From: dominiq Date: Sat, 5 Apr 2014 12:29:27 +0000 Subject: 2012-04-05 Dominique d'Humieres Jack Howarth PR target/54407 * 30_threads/condition_variable/54185.cc: Skip for darwin < 11. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209153 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 6 ++++++ libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index f5273be0c2c..99190b6d92b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2012-04-05 Dominique d'Humieres + Jack Howarth + + PR target/54407 + * 30_threads/condition_variable/54185.cc: Skip for darwin < 11. + 2014-04-01 Jason Merrill Core DR 475 diff --git a/libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc b/libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc index 57696708766..924271826b9 100644 --- a/libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc +++ b/libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc @@ -1,11 +1,11 @@ -// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* powerpc-ibm-aix* } } -// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* powerpc-ibm-aix* } } +// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-gnu* *-*-solaris* *-*-cygwin *-*-darwin1[1-9]* powerpc-ibm-aix* } } +// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-gnu* powerpc-ibm-aix* } } // { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } } // { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } } // { dg-require-cstdint "" } // { dg-require-gthreads "" } -// Copyright (C) 2012 Free Software Foundation, Inc. +// Copyright (C) 2012-2014 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the -- cgit v1.2.1 From a44db067ae5fcadae92c842dc0e7c96269863734 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 6 Apr 2014 00:16:18 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209158 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index cff053e11c5..29c36beb7d5 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140405 +20140406 -- cgit v1.2.1 From 5f51af5cd8abbbb2a861f0b2ad2493167945c325 Mon Sep 17 00:00:00 2001 From: dominiq Date: Sun, 6 Apr 2014 11:43:38 +0000 Subject: 2014-04-06 Dominique d'Humieres Iain Sandoe PR target/54083 * gcc.dg/attr-weakref-1.c: Allow the test on darwin with the additional options -Wl,-undefined,dynamic_lookup and -Wl,-flat_namespace * gcc.dg/torture/pr53922.c: Additional option -Wl,-flat_namespace for darwin[89]. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209162 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 10 ++++++++++ gcc/testsuite/gcc.dg/attr-weakref-1.c | 4 +++- gcc/testsuite/gcc.dg/torture/pr53922.c | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e6f2832f45a..758789199ee 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2014-04-06 Dominique d'Humieres + Iain Sandoe + + PR target/54083 + * gcc.dg/attr-weakref-1.c: Allow the test on darwin with + the additional options -Wl,-undefined,dynamic_lookup and + -Wl,-flat_namespace + * gcc.dg/torture/pr53922.c: Additional option + -Wl,-flat_namespace for darwin[89]. + 2014-04-29 Thomas Koenig PR fortran/60522 diff --git a/gcc/testsuite/gcc.dg/attr-weakref-1.c b/gcc/testsuite/gcc.dg/attr-weakref-1.c index 31d5379e47c..0cd08454535 100644 --- a/gcc/testsuite/gcc.dg/attr-weakref-1.c +++ b/gcc/testsuite/gcc.dg/attr-weakref-1.c @@ -5,12 +5,14 @@ // is not available on alpha*-dec-osf* and hppa*-*-hpux*. The test is // skipped rather than xfailed to suppress the warning that would otherwise // arise. -// { dg-skip-if "" { "alpha*-dec-osf*" "*-*-darwin*" "hppa*-*-hpux*" } "*" { "" } } +// { dg-skip-if "" { "alpha*-dec-osf*" "hppa*-*-hpux*" } "*" { "" } } // For kernel modules and static RTPs, the loader treats undefined weak // symbols in the same way as undefined strong symbols. The test // therefore fails to load, so skip it. // { dg-skip-if "" { "*-*-vxworks*" && nonpic } "*" { "-non-static" } } // { dg-options "-O2" } +// { dg-additional-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } +// { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } // { dg-additional-sources "attr-weakref-1a.c" } // Copyright 2005 Free Software Foundation, Inc. diff --git a/gcc/testsuite/gcc.dg/torture/pr53922.c b/gcc/testsuite/gcc.dg/torture/pr53922.c index 980bab589f1..750b006bf60 100644 --- a/gcc/testsuite/gcc.dg/torture/pr53922.c +++ b/gcc/testsuite/gcc.dg/torture/pr53922.c @@ -2,6 +2,8 @@ /* { dg-require-weak "" } */ /* { dg-skip-if "No undefined weak" { alpha*-*-osf* } } */ /* { dg-skip-if "No undefined weak" { hppa*-*-hpux* && { ! lp64 } } } */ +/* { dg-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } */ +/* { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } */ int x(int a) { -- cgit v1.2.1 From 4dc0b2343db189cf71f5f51f9c17c1752fd8f7e2 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 7 Apr 2014 00:16:15 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209171 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 29c36beb7d5..fd21c815f7c 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140406 +20140407 -- cgit v1.2.1 From add666855265d35f10674990e40685a5b1bd5d31 Mon Sep 17 00:00:00 2001 From: dominiq Date: Mon, 7 Apr 2014 08:00:55 +0000 Subject: 2014-04-07 Dominique d'Humieres Backport from mainline 2013-09-14 Iain Sandoe gcc: PR target/48094 * config/darwin.c (darwin_objc2_section): Note if ObjC Metadata is seen. (darwin_objc1_section): Likewise. (darwin_file_end): Emit Image Info section when required. gcc/c-family: PR target/48094 * c.opt (fgnu-runtime, fnext-runtime, fobjc-abi-version, fobjc-gc, freplace-objc-classes): Accept for LTO. gcc/objc: PR target/48094 * objc-next-runtime-abi-01.c (generate_objc_image_info): Remove. (objc_generate_v1_next_metadata): Remove generation of ImageInfo. * objc-next-runtime-abi-02.c (generate_v2_objc_image_info): Remove. (objc_generate_v2_next_metadata): Remove generation of ImageInfo. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209176 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++ gcc/c-family/ChangeLog | 9 ++++++ gcc/c-family/c.opt | 10 +++---- gcc/config/darwin.c | 58 +++++++++++++++++++++++++++---------- gcc/objc/ChangeLog | 11 +++++++ gcc/objc/objc-next-runtime-abi-01.c | 32 -------------------- gcc/objc/objc-next-runtime-abi-02.c | 28 ------------------ 7 files changed, 79 insertions(+), 80 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b0c6fc8ea6f..8177c047164 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2014-04-07 Dominique d'Humieres + + Backport from mainline + 2013-09-14 Iain Sandoe + + PR target/48094 + * config/darwin.c (darwin_objc2_section): Note if ObjC Metadata + is seen. + (darwin_objc1_section): Likewise. + (darwin_file_end): Emit Image Info section when required. + 2014-04-04 Richard Biener * tree-ssanames.c (make_ssa_name_fn): Fix assert. diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index f09b3a61f9d..210fbf8a8ee 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,12 @@ +2014-04-07 Dominique d'Humieres + + Backport from mainline + 2013-09-14 Iain Sandoe + + PR target/48094 + * c.opt (fgnu-runtime, fnext-runtime, fobjc-abi-version, + fobjc-gc, freplace-objc-classes): Accept for LTO. + 2013-09-01 Iain Sandoe Backported from 4.8 diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index 40ff96cc50f..8c65e33c217 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -814,7 +814,7 @@ C++ ObjC++ Var(flag_no_gnu_keywords, 0) Recognize GNU-defined keywords fgnu-runtime -ObjC ObjC++ Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME) +ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME) Generate code for GNU runtime environment fgnu89-inline @@ -888,7 +888,7 @@ fnew-abi C++ ObjC++ Ignore Warn(switch %qs is no longer supported) fnext-runtime -ObjC ObjC++ Report RejectNegative Var(flag_next_runtime) +ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime) Generate code for NeXT (Apple Mac OS X) runtime environment fnil-receivers @@ -906,7 +906,7 @@ C++ ObjC++ Optimization Var(flag_nothrow_opt) Treat a throw() exception specification as noexcept to improve code size fobjc-abi-version= -ObjC ObjC++ Joined Report RejectNegative UInteger Var(flag_objc_abi) +ObjC ObjC++ LTO Joined Report RejectNegative UInteger Var(flag_objc_abi) Specify which ABI to use for Objective-C family code and meta-data generation. ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods @@ -926,7 +926,7 @@ ObjC ObjC++ Var(flag_objc_exceptions) Enable Objective-C exception and synchronization syntax fobjc-gc -ObjC ObjC++ Var(flag_objc_gc) +ObjC ObjC++ LTO Var(flag_objc_gc) Enable garbage collection (GC) in Objective-C/Objective-C++ programs fobjc-nilcheck @@ -986,7 +986,7 @@ C++ ObjC++ Var(flag_pretty_templates) Init(1) -fno-pretty-templates Do not pretty-print template specializations as the template signature followed by the arguments freplace-objc-classes -ObjC ObjC++ Var(flag_replace_objc_classes) +ObjC ObjC++ LTO Var(flag_replace_objc_classes) Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime frepo diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c index aec3d13d6d9..bc41687855f 100644 --- a/gcc/config/darwin.c +++ b/gcc/config/darwin.c @@ -1322,6 +1322,9 @@ is_objc_metadata (tree decl) return NULL_TREE; } +static int classes_seen; +static int objc_metadata_seen; + /* Return the section required for Objective C ABI 2 metadata. */ static section * darwin_objc2_section (tree decl ATTRIBUTE_UNUSED, tree meta, section * base) @@ -1331,12 +1334,9 @@ darwin_objc2_section (tree decl ATTRIBUTE_UNUSED, tree meta, section * base) gcc_assert (TREE_CODE (ident) == IDENTIFIER_NODE); p = IDENTIFIER_POINTER (ident); - /* If we are in LTO, then we don't know the state of flag_next_runtime - or flag_objc_abi when the code was generated. We set these from the - meta-data - which is needed to deal with const string constructors. */ + gcc_checking_assert (flag_next_runtime == 1 && flag_objc_abi == 2); - flag_next_runtime = 1; - flag_objc_abi = 2; + objc_metadata_seen = 1; if (base == data_section) base = darwin_sections[objc2_metadata_section]; @@ -1359,7 +1359,10 @@ darwin_objc2_section (tree decl ATTRIBUTE_UNUSED, tree meta, section * base) else if (!strncmp (p, "V2_NLCL", 7)) return darwin_sections[objc2_nonlazy_class_section]; else if (!strncmp (p, "V2_CLAB", 7)) - return darwin_sections[objc2_classlist_section]; + { + classes_seen = 1; + return darwin_sections[objc2_classlist_section]; + } else if (!strncmp (p, "V2_SRFS", 7)) return darwin_sections[objc2_selector_refs_section]; else if (!strncmp (p, "V2_NLCA", 7)) @@ -1394,12 +1397,9 @@ darwin_objc1_section (tree decl ATTRIBUTE_UNUSED, tree meta, section * base) gcc_assert (TREE_CODE (ident) == IDENTIFIER_NODE); p = IDENTIFIER_POINTER (ident); - /* If we are in LTO, then we don't know the state of flag_next_runtime - or flag_objc_abi when the code was generated. We set these from the - meta-data - which is needed to deal with const string constructors. */ - flag_next_runtime = 1; - if (!global_options_set.x_flag_objc_abi) - flag_objc_abi = 1; + gcc_checking_assert (flag_next_runtime == 1 && flag_objc_abi < 2); + + objc_metadata_seen = 1; /* String sections first, cos there are lots of strings. */ if (!strncmp (p, "V1_STRG", 7)) @@ -1412,7 +1412,10 @@ darwin_objc1_section (tree decl ATTRIBUTE_UNUSED, tree meta, section * base) return darwin_sections[objc_meth_var_types_section]; else if (!strncmp (p, "V1_CLAS", 7)) - return darwin_sections[objc_class_section]; + { + classes_seen = 1; + return darwin_sections[objc_class_section]; + } else if (!strncmp (p, "V1_META", 7)) return darwin_sections[objc_meta_class_section]; else if (!strncmp (p, "V1_CATG", 7)) @@ -1596,8 +1599,6 @@ machopic_select_section (tree decl, if (TREE_CODE (name) == TYPE_DECL) name = DECL_NAME (name); - /* FIXME: This is unsatisfactory for LTO, since it relies on other - metadata determining the source FE. */ if (!strcmp (IDENTIFIER_POINTER (name), "__builtin_ObjCString")) { if (flag_next_runtime) @@ -2788,6 +2789,33 @@ darwin_file_start (void) void darwin_file_end (void) { + + /* If we are expecting to output NeXT ObjC meta-data, (and we actually see + some) then we output the fix-and-continue marker (Image Info). + This applies to Objective C, Objective C++ and LTO with either language + as part of the input. */ + if (flag_next_runtime && objc_metadata_seen) + { + unsigned int flags = 0; + if (flag_objc_abi >= 2) + { + flags = 16; + output_section_asm_op + (darwin_sections[objc2_image_info_section]->unnamed.data); + } + else + output_section_asm_op + (darwin_sections[objc_image_info_section]->unnamed.data); + + ASM_OUTPUT_ALIGN (asm_out_file, 2); + fputs ("L_OBJC_ImageInfo:\n", asm_out_file); + + flags |= (flag_replace_objc_classes && classes_seen) ? 1 : 0; + flags |= flag_objc_gc ? 2 : 0; + + fprintf (asm_out_file, "\t.long\t0\n\t.long\t%u\n", flags); + } + machopic_finish (asm_out_file); if (strcmp (lang_hooks.name, "GNU C++") == 0) { diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index a2b987bc941..f359cdc1577 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,14 @@ +2014-04-07 Dominique d'Humieres + + Backport from mainline + 2013-09-14 Iain Sandoe + + PR target/48094 + * objc-next-runtime-abi-01.c (generate_objc_image_info): Remove. + (objc_generate_v1_next_metadata): Remove generation of ImageInfo. + * objc-next-runtime-abi-02.c (generate_v2_objc_image_info): Remove. + (objc_generate_v2_next_metadata): Remove generation of ImageInfo. + 2013-09-01 Iain Sandoe Backported from 4.8 diff --git a/gcc/objc/objc-next-runtime-abi-01.c b/gcc/objc/objc-next-runtime-abi-01.c index 92bf6135e2b..699ed8ee827 100644 --- a/gcc/objc/objc-next-runtime-abi-01.c +++ b/gcc/objc/objc-next-runtime-abi-01.c @@ -2333,35 +2333,6 @@ generate_classref_translation_entry (tree chain) } -/* The Fix-and-Continue functionality available in Mac OS X 10.3 and - later requires that ObjC translation units participating in F&C be - specially marked. The following routine accomplishes this. */ - -/* static int _OBJC_IMAGE_INFO[2] = { 0, 1 }; */ - -static void -generate_objc_image_info (void) -{ - tree decl; - int flags - = ((flag_replace_objc_classes && imp_count ? 1 : 0) - | (flag_objc_gc ? 2 : 0)); - VEC(constructor_elt,gc) *v = NULL; - tree array_type; - - array_type = build_sized_array_type (integer_type_node, 2); - - decl = start_var_decl (array_type, "_OBJC_ImageInfo"); - - CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, integer_zero_node); - CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (integer_type_node, flags)); - /* The runtime wants this and refers to it in a manner hidden from the compiler. - So we must force the output. */ - DECL_PRESERVE_P (decl) = 1; - OBJCMETA (decl, objc_meta, meta_info); - finish_var_decl (decl, objc_build_constructor (TREE_TYPE (decl), v)); -} - static void objc_generate_v1_next_metadata (void) { @@ -2412,9 +2383,6 @@ objc_generate_v1_next_metadata (void) attr = build_tree_list (objc_meta, meta_modules); build_module_descriptor (vers, attr); - /* This conveys information on GC usage and zero-link. */ - generate_objc_image_info (); - /* Dump the class references. This forces the appropriate classes to be linked into the executable image, preserving unix archive semantics. */ diff --git a/gcc/objc/objc-next-runtime-abi-02.c b/gcc/objc/objc-next-runtime-abi-02.c index 4512c846cc0..678633a91b1 100644 --- a/gcc/objc/objc-next-runtime-abi-02.c +++ b/gcc/objc/objc-next-runtime-abi-02.c @@ -3341,31 +3341,6 @@ build_v2_ivar_offset_ref_table (void) finish_var_decl (ref->decl, ref->offset); } -/* static int _OBJC_IMAGE_INFO[2] = { 0, 16 | flags }; */ - -static void -generate_v2_objc_image_info (void) -{ - tree decl, array_type; - VEC(constructor_elt,gc) *v = NULL; - int flags = - ((flag_replace_objc_classes && imp_count ? 1 : 0) - | (flag_objc_gc ? 2 : 0)); - - flags |= 16; - - array_type = build_sized_array_type (integer_type_node, 2); - - decl = start_var_decl (array_type, "_OBJC_ImageInfo"); - - CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, integer_zero_node); - CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (integer_type_node, flags)); - /* The Runtime wants this. */ - DECL_PRESERVE_P (decl) = 1; - OBJCMETA (decl, objc_meta, meta_info); - finish_var_decl (decl, objc_build_constructor (TREE_TYPE (decl), v)); -} - static void objc_generate_v2_next_metadata (void) { @@ -3417,9 +3392,6 @@ objc_generate_v2_next_metadata (void) build_v2_address_table (nonlazy_category_list, "_OBJC_NonLazyCategoryList$", meta_label_nonlazy_categorylist); - /* This conveys information on GC usage and zero-link. */ - generate_v2_objc_image_info (); - /* Generate catch objects for eh, if any are needed. */ build_v2_eh_catch_objects (); -- cgit v1.2.1 From 15336be7423addfea34f928ccde75c31039ca8af Mon Sep 17 00:00:00 2001 From: jamborm Date: Mon, 7 Apr 2014 09:54:55 +0000 Subject: 2014-04-07 Martin Jambor PR ipa/60640 * ipa-cp.c (propagate_constants_accross_call): Do not propagate accross thunks. testsuite/ * g++.dg/ipa/pr60640-1.C: New test. * g++.dg/ipa/pr60640-2.C: Likewise. * g++.dg/ipa/pr60640-3.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209181 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 +++ gcc/ipa-cp.c | 16 +++---- gcc/testsuite/ChangeLog | 7 ++++ gcc/testsuite/g++.dg/ipa/pr60640-1.C | 50 ++++++++++++++++++++++ gcc/testsuite/g++.dg/ipa/pr60640-2.C | 15 +++++++ gcc/testsuite/g++.dg/ipa/pr60640-3.C | 81 ++++++++++++++++++++++++++++++++++++ 6 files changed, 167 insertions(+), 8 deletions(-) create mode 100644 gcc/testsuite/g++.dg/ipa/pr60640-1.C create mode 100644 gcc/testsuite/g++.dg/ipa/pr60640-2.C create mode 100644 gcc/testsuite/g++.dg/ipa/pr60640-3.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8177c047164..27001a1054c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-04-07 Martin Jambor + + PR ipa/60640 + * ipa-cp.c (propagate_constants_accross_call): Do not propagate + accross thunks. + 2014-04-07 Dominique d'Humieres Backport from mainline diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index 454283aabb2..ddf6605b2d7 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -1063,21 +1063,21 @@ propagate_constants_accross_call (struct cgraph_edge *cs) args_count = ipa_get_cs_argument_count (args); parms_count = ipa_get_param_count (callee_info); - /* If this call goes through a thunk we must not propagate to the first (0th) - parameter. However, we might need to uncover a thunk from below a series - of aliases first. */ + /* If this call goes through a thunk we should not propagate because we + cannot redirect edges to thunks. However, we might need to uncover a + thunk from below a series of aliases first. */ alias_or_thunk = cs->callee; while (alias_or_thunk->alias) alias_or_thunk = cgraph_alias_aliased_node (alias_or_thunk); if (alias_or_thunk->thunk.thunk_p) { - ret |= set_lattice_contains_variable (ipa_get_lattice (callee_info, 0)); - i = 1; + for (i = 0; i < parms_count; i++) + ret |= set_lattice_contains_variable (ipa_get_lattice (callee_info, i)); + + return ret; } - else - i = 0; - for (; (i < args_count) && (i < parms_count); i++) + for (i = 0; (i < args_count) && (i < parms_count); i++) { struct ipa_jump_func *jump_func = ipa_get_ith_jump_func (args, i); struct ipcp_lattice *dest_lat = ipa_get_lattice (callee_info, i); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 758789199ee..e8b525c08eb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2014-04-07 Martin Jambor + + PR ipa/60640 + * g++.dg/ipa/pr60640-1.C: New test. + * g++.dg/ipa/pr60640-2.C: Likewise. + * g++.dg/ipa/pr60640-3.C: Likewise. + 2014-04-06 Dominique d'Humieres Iain Sandoe diff --git a/gcc/testsuite/g++.dg/ipa/pr60640-1.C b/gcc/testsuite/g++.dg/ipa/pr60640-1.C new file mode 100644 index 00000000000..7a0b91893f8 --- /dev/null +++ b/gcc/testsuite/g++.dg/ipa/pr60640-1.C @@ -0,0 +1,50 @@ +// { dg-do compile } +// { dg-options "-O3" } + +class ASN1Object +{ +public: + virtual ~ASN1Object (); +}; +class A +{ + virtual unsigned m_fn1 () const; +}; +class B +{ +public: + ASN1Object Element; + virtual unsigned m_fn1 (bool) const; +}; +template class C : public BASE +{ +}; + +class D : ASN1Object, public B +{ +}; +class G : public D +{ + unsigned m_fn1 (bool) const {} +}; +class F : A +{ +public: + F (A); + unsigned m_fn1 () const + { + int a; + a = m_fn2 ().m_fn1 (0); + return a; + } + const B &m_fn2 () const { return m_groupParameters; } + C m_groupParameters; +}; +template void BenchMarkKeyAgreement (int *, int *, int) +{ + A f; + D d (f); +} + +void BenchmarkAll2 () { BenchMarkKeyAgreement(0, 0, 0); } + diff --git a/gcc/testsuite/g++.dg/ipa/pr60640-2.C b/gcc/testsuite/g++.dg/ipa/pr60640-2.C new file mode 100644 index 00000000000..c6e614cc004 --- /dev/null +++ b/gcc/testsuite/g++.dg/ipa/pr60640-2.C @@ -0,0 +1,15 @@ +// { dg-do compile } +// { dg-options "-O3" } + +struct B { virtual unsigned f () const; }; +struct C { virtual void f (); }; +struct F { virtual unsigned f (bool) const; ~F (); }; +struct J : C, F {}; +struct G : J { unsigned f (bool) const { return 0; } }; +struct H : B +{ + H (int); + unsigned f () const { return ((const F &) h).f (0); } + G h; +}; +H h (0); diff --git a/gcc/testsuite/g++.dg/ipa/pr60640-3.C b/gcc/testsuite/g++.dg/ipa/pr60640-3.C new file mode 100644 index 00000000000..21b1f58a040 --- /dev/null +++ b/gcc/testsuite/g++.dg/ipa/pr60640-3.C @@ -0,0 +1,81 @@ +// { dg-do run } +// { dg-options "-O3" } + +struct Distraction +{ + char fc[8]; + virtual Distraction * return_self () + { return this; } +}; + +namespace { + +struct A; +static A * __attribute__ ((noinline, noclone)) get_an_A (); + +static int go; + +struct A +{ + int fi; + + A () : fi(777) {} + A (int pi) : fi (pi) {} + virtual A * foo (int p) = 0; +}; + +struct B; +static B * __attribute__ ((noinline, noclone)) get_a_B (); + +struct B : public Distraction, A +{ + B () : Distraction(), A() { } + B (int pi) : Distraction (), A (pi) {} + virtual B * foo (int p) + { + int o = fi; + for (int i = 0; i < p; i++) + o += i + i * i; + go = o; + + return get_a_B (); + } +}; + + +struct B gb1 (1111), gb2 (2); +static B * __attribute__ ((noinline, noclone)) +get_a_B () +{ + return &gb1; +} + +static A * __attribute__ ((noinline, noclone)) +get_an_A () +{ + return &gb2; +} + +} + +static int __attribute__ ((noinline, noclone)) +get_a_number () +{ + return 5; +} + +extern "C" void abort (void); + +int main (int argc, char *argv[]) +{ + for (int i = 0; i < get_a_number (); i++) + { + struct A *p = get_an_A (); + struct A *r = p->foo (4); + if (r->fi != 1111) + abort (); + if (go != 22) + abort (); + } + return 0; +} -- cgit v1.2.1 From ad80e316337c96535cc13aa9d8ef2097a241a118 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 8 Apr 2014 00:16:37 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209206 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index fd21c815f7c..7710f7c974b 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140407 +20140408 -- cgit v1.2.1 From ff295f152d0e953d77fda7574dfcaf17f486b2b7 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 9 Apr 2014 00:16:33 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209231 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 7710f7c974b..59a4590ae28 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140408 +20140409 -- cgit v1.2.1 From 257278ce24d0d3498754fc30ed0d5d2d3690f4d8 Mon Sep 17 00:00:00 2001 From: ro Date: Wed, 9 Apr 2014 14:57:48 +0000 Subject: Check if GCC uses assembler cfi support * config/generic/asmcfi.h: Also check for __GCC_HAVE_DWARF2_CFI_ASM. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209245 138bc75d-0d04-0410-961f-82ee72b054a4 --- libitm/ChangeLog | 5 +++++ libitm/config/generic/asmcfi.h | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libitm/ChangeLog b/libitm/ChangeLog index 12636cc4fb7..b94cd32cfd1 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,3 +1,8 @@ +2014-04-09 Rainer Orth + + * config/generic/asmcfi.h: Also check for + __GCC_HAVE_DWARF2_CFI_ASM. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff --git a/libitm/config/generic/asmcfi.h b/libitm/config/generic/asmcfi.h index 3a5634b37e6..5bf7f4524ca 100644 --- a/libitm/config/generic/asmcfi.h +++ b/libitm/config/generic/asmcfi.h @@ -24,7 +24,7 @@ #include "config.h" -#ifdef HAVE_AS_CFI_PSEUDO_OP +#if defined(HAVE_AS_CFI_PSEUDO_OP) && defined(__GCC_HAVE_DWARF2_CFI_ASM) #define cfi_startproc .cfi_startproc #define cfi_endproc .cfi_endproc @@ -50,4 +50,4 @@ #define cfi_restore(r) #define cfi_undefined(r) -#endif /* HAVE_AS_CFI_PSEUDO_OP */ +#endif /* HAVE_AS_CFI_PSEUDO_OP && __GCC_HAVE_DWARF2_CFI_ASM */ -- cgit v1.2.1 From ddce56932413e95f149f22f3bd3dbdf0d3452285 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 10 Apr 2014 00:16:37 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209258 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 59a4590ae28..a1a54c958e7 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140409 +20140410 -- cgit v1.2.1 From 9a34200da273acd28cd55db9db5194395ea568c0 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 11 Apr 2014 00:16:34 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209287 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index a1a54c958e7..6985c06bfda 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140410 +20140411 -- cgit v1.2.1 From 43dfac9673dfe67a48d75318ec5858a20553a742 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 12 Apr 2014 00:16:28 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209330 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 6985c06bfda..7f7245d7b26 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140411 +20140412 -- cgit v1.2.1 From 29052ae7c83c9365ea2049d4adb1deddd6451155 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 13 Apr 2014 00:16:27 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209341 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 7f7245d7b26..cbf56c33387 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140412 +20140413 -- cgit v1.2.1 From a9957950f5c3b99a323062d1554ba55238cccaf7 Mon Sep 17 00:00:00 2001 From: jvdelisle Date: Sun, 13 Apr 2014 02:05:02 +0000 Subject: 2014-04-12 Jerry DeLisle Backport from mainline PR libfortran/60810 gfortran.dg/arrayio_13.f90: New test. PR libfortran/60810 io/unit.c (is_trim_ok): If internal unit is array, do not trim. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209345 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gfortran.dg/arrayio_13.f90 | 14 ++++++++++++++ libgfortran/ChangeLog | 6 ++++++ libgfortran/io/unit.c | 4 +--- 4 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/arrayio_13.f90 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e8b525c08eb..25cda77f56f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-04-12 Jerry DeLisle + + Backport from mainline + PR libfortran/60810 + gfortran.dg/arrayio_13.f90: New test. + 2014-04-07 Martin Jambor PR ipa/60640 diff --git a/gcc/testsuite/gfortran.dg/arrayio_13.f90 b/gcc/testsuite/gfortran.dg/arrayio_13.f90 new file mode 100644 index 00000000000..92a856bc869 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/arrayio_13.f90 @@ -0,0 +1,14 @@ +! { dg-do run } +! PR60810 Bogus end-of-file +program readstrlist + character(len=80), dimension(2) :: ver + integer :: a, b, c + a = 1 + b = 2 + c = 3 + ver(1) = '285 383' + ver(2) = '985' + read( ver, *) a, b, c + if (a /= 285 .or. b /= 383 .or. c /= 985) call abort + !write ( *, *) a, b, c +end diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 7d6fd05ee02..dde1b58f69c 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2014-04-12 Jerry DeLisle + + Backport from mainline + PR libfortran/60810 + io/unit.c (is_trim_ok): If internal unit is array, do not trim. + 2014-03-15 Jerry DeLisle Backport from mainline diff --git a/libgfortran/io/unit.c b/libgfortran/io/unit.c index d71593b1946..27ee051c8e9 100644 --- a/libgfortran/io/unit.c +++ b/libgfortran/io/unit.c @@ -385,9 +385,7 @@ static bool is_trim_ok (st_parameter_dt *dtp) { /* Check rank and stride. */ - if (dtp->internal_unit_desc - && (GFC_DESCRIPTOR_RANK (dtp->internal_unit_desc) > 1 - || GFC_DESCRIPTOR_STRIDE(dtp->internal_unit_desc, 0) != 1)) + if (dtp->internal_unit_desc) return false; /* Format strings can not have 'BZ' or '/'. */ if (dtp->common.flags & IOPARM_DT_HAS_FORMAT) -- cgit v1.2.1 From 8b66287bd4c41aa54572d6033a876a4b942b3406 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 14 Apr 2014 00:16:39 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209349 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index cbf56c33387..98f6999a71a 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140413 +20140414 -- cgit v1.2.1 From 21e417dc2071a1bb73d04317f7934af26c7c49f2 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 15 Apr 2014 00:16:18 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209396 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 98f6999a71a..86cdca393a9 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140414 +20140415 -- cgit v1.2.1 From ff095fd08769d18a5d97ac0498a4e25e5a5949f3 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 16 Apr 2014 00:16:31 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209436 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 86cdca393a9..b5942cba2ed 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140415 +20140416 -- cgit v1.2.1 From e80f1061aacd2919359fcd4f9f954007b3304edc Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 17 Apr 2014 00:16:15 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209453 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index b5942cba2ed..493fa0a805c 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140416 +20140417 -- cgit v1.2.1 From 1ee8861c45aa51b92d8c416835dca5a10e7a1df6 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 18 Apr 2014 00:16:14 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209510 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 493fa0a805c..14abd883c3c 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140417 +20140418 -- cgit v1.2.1 From 1fd9858560599d588e093957e364b3fec1a38e22 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 19 Apr 2014 00:16:22 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209527 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 14abd883c3c..6e5117630a9 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140418 +20140419 -- cgit v1.2.1 From 51c30d7ac344d77375e012be8c6f7395e28006f6 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 20 Apr 2014 00:16:25 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209531 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 6e5117630a9..75203bb51fd 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140419 +20140420 -- cgit v1.2.1 From e6f47d1818a9bf4c65ee015d2f8a438570ea8693 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 21 Apr 2014 00:16:25 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209539 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 75203bb51fd..4ef90c6fbfe 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140420 +20140421 -- cgit v1.2.1 From fbfd788b3485f46af2d12fd867a2f440735a1890 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 22 Apr 2014 00:16:04 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209550 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 4ef90c6fbfe..50894d11578 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140421 +20140422 -- cgit v1.2.1 From 4d1e445a3d6404ee0df243339345d094018b27df Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 23 Apr 2014 00:16:37 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209666 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 50894d11578..e2eb8ef719b 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140422 +20140423 -- cgit v1.2.1 From 3f7feb61f98c34efd706b14ac8f19836e58de5bb Mon Sep 17 00:00:00 2001 From: uros Date: Wed, 23 Apr 2014 19:05:33 +0000 Subject: Backport from mainline 2014-04-21 Uros Bizjak PR target/60909 * config/i386/i386.c (ix86_expand_builtin) : Use temporary register for target RTX. testsuite/ChangeLog: Backport from mainline 2014-04-21 Uros Bizjak PR target/60909 * gcc.target/i386/pr60909.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209718 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 14 ++++++++++++-- gcc/config/i386/i386.c | 3 ++- gcc/testsuite/ChangeLog | 10 +++++++++- gcc/testsuite/gcc.target/i386/pr60909.c | 11 +++++++++++ 4 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr60909.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 27001a1054c..153f6ab7ce5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,10 +1,20 @@ +2014-04-23 Uros Bizjak + + Backport from mainline + 2014-04-21 Uros Bizjak + + PR target/60909 + * config/i386/i386.c (ix86_expand_builtin) + : Use temporary + register for target RTX. + 2014-04-07 Martin Jambor PR ipa/60640 * ipa-cp.c (propagate_constants_accross_call): Do not propagate accross thunks. -2014-04-07 Dominique d'Humieres +2014-04-07 Dominique d'Humieres Backport from mainline 2013-09-14 Iain Sandoe @@ -73,7 +83,7 @@ double ints throughout. 2014-03-18 Richard Biener - + Backport from mainline 2013-08-27 Richard Biener diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 9116dd4c63f..b39ec9dea18 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -29693,7 +29693,8 @@ rdrand_step: else op2 = gen_rtx_SUBREG (SImode, op0, 0); - if (target == 0) + if (target == 0 + || !register_operand (target, SImode)) target = gen_reg_rtx (SImode); pat = gen_rtx_GEU (VOIDmode, gen_rtx_REG (CCCmode, FLAGS_REG), diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 25cda77f56f..e9fea1040ce 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,8 +1,16 @@ +2014-04-23 Uros Bizjak + + Backport from mainline + 2014-04-21 Uros Bizjak + + PR target/60909 + * gcc.target/i386/pr60909.c: New test. + 2014-04-12 Jerry DeLisle Backport from mainline PR libfortran/60810 - gfortran.dg/arrayio_13.f90: New test. + * gfortran.dg/arrayio_13.f90: New test. 2014-04-07 Martin Jambor diff --git a/gcc/testsuite/gcc.target/i386/pr60909.c b/gcc/testsuite/gcc.target/i386/pr60909.c new file mode 100644 index 00000000000..5a1ac3c0f6c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr60909.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-mrdrnd" } */ + +extern void bar (int); + +void +foo (unsigned *u) +{ + int i = __builtin_ia32_rdrand32_step (u); + bar (i); +} -- cgit v1.2.1 From 47d1945f3e78f90bb7a0cb9c4744bec150530bfc Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 24 Apr 2014 00:16:32 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209728 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index e2eb8ef719b..dd60d348052 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140423 +20140424 -- cgit v1.2.1 From 1019c534e9abae73e55f8aa8e498386ab86d0a90 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 25 Apr 2014 00:16:18 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209769 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index dd60d348052..ebb4b74ad8b 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140424 +20140425 -- cgit v1.2.1 From c2c37bc5cc67ee5b08f145a0d36d9d98d8b6bdb2 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Fri, 25 Apr 2014 10:47:44 +0000 Subject: PR target/60941 * config/sparc/sparc.md (ashlsi3_extend): Delete. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209793 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/sparc/sparc.md | 13 ------------- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.c-torture/execute/20140425-1.c | 23 +++++++++++++++++++++++ 4 files changed, 32 insertions(+), 13 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/execute/20140425-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 153f6ab7ce5..a5390e67db0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-04-25 Eric Botcazou + + PR target/60941 + * config/sparc/sparc.md (ashlsi3_extend): Delete. + 2014-04-23 Uros Bizjak Backport from mainline diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index 8a1bab06f76..3663b3507a0 100644 --- a/gcc/config/sparc/sparc.md +++ b/gcc/config/sparc/sparc.md @@ -5607,19 +5607,6 @@ } [(set_attr "type" "shift")]) -(define_insn "*ashlsi3_extend" - [(set (match_operand:DI 0 "register_operand" "=r") - (zero_extend:DI - (ashift:SI (match_operand:SI 1 "register_operand" "r") - (match_operand:SI 2 "arith_operand" "rI"))))] - "TARGET_ARCH64" -{ - if (GET_CODE (operands[2]) == CONST_INT) - operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f); - return "sll\t%1, %2, %0"; -} - [(set_attr "type" "shift")]) - (define_expand "ashldi3" [(set (match_operand:DI 0 "register_operand" "=r") (ashift:DI (match_operand:DI 1 "register_operand" "r") diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e9fea1040ce..e58454589f0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-04-25 Eric Botcazou + + * gcc.c-torture/execute/20140425-1.c: New test. + 2014-04-23 Uros Bizjak Backport from mainline diff --git a/gcc/testsuite/gcc.c-torture/execute/20140425-1.c b/gcc/testsuite/gcc.c-torture/execute/20140425-1.c new file mode 100644 index 00000000000..c447ef95b6c --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20140425-1.c @@ -0,0 +1,23 @@ +/* PR target/60941 */ +/* Reported by Martin Husemann */ + +extern void abort (void); + +static void __attribute__((noinline)) +set (unsigned long *l) +{ + *l = 31; +} + +int main (void) +{ + unsigned long l; + int i; + + set (&l); + i = (int) l; + l = (unsigned long)(2U << i); + if (l != 0) + abort (); + return 0; +} -- cgit v1.2.1 From 23536dcb31ac23386c3da7fbcfc9acf3a8bf66c8 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 26 Apr 2014 00:16:26 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209815 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ebb4b74ad8b..22138aabd02 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140425 +20140426 -- cgit v1.2.1 From 595afebdab4178820580b10fd829cad8a42914bd Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 27 Apr 2014 00:16:33 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209831 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 22138aabd02..f2ed71fb6d5 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140426 +20140427 -- cgit v1.2.1 From edaac13237a3b66cd4673edf5c77951df7ebf1c6 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 28 Apr 2014 00:17:00 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209845 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index f2ed71fb6d5..2eee80b2cf1 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140427 +20140428 -- cgit v1.2.1 From cceadbf8c798d02114171d37b52d562f25db995f Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 29 Apr 2014 00:16:20 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209884 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 2eee80b2cf1..4796b255fec 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140428 +20140429 -- cgit v1.2.1 From 2bcfb6f6b7a2b83df1abf5d44f8a1655ff70f181 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 30 Apr 2014 00:16:51 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209919 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 4796b255fec..5907e7a3156 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140429 +20140430 -- cgit v1.2.1 From 29a6152a0fd5c0c0aed73853e4aca14ad3ac2ce4 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 1 May 2014 00:16:31 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209963 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 5907e7a3156..a31f8654034 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140430 +20140501 -- cgit v1.2.1 From f86ca29181338d837fea3ced8ee36afbb55a8bbf Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 2 May 2014 00:16:40 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@209993 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index a31f8654034..9b4795934c6 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140501 +20140502 -- cgit v1.2.1 From 7fd4009052d726cf42b4636e5b8cc33c236c9786 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 3 May 2014 00:16:22 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210023 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 9b4795934c6..5069f75be20 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140502 +20140503 -- cgit v1.2.1 From 73001ac64afb32ea541efb7e3e53b9a0bcce7ce5 Mon Sep 17 00:00:00 2001 From: jb Date: Sat, 3 May 2014 21:03:10 +0000 Subject: PR 56919 Check _POSIX_MONOTONIC_CLOCK. 2014-05-04 Janne Blomqvist Backport from 4.9 PR libfortran/56919 * intrinsics/system_clock.c (GF_CLOCK_MONOTONIC): Check _POSIX_MONOTONIC_CLOCK as well. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210042 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgfortran/ChangeLog | 9 ++++++++- libgfortran/intrinsics/system_clock.c | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index dde1b58f69c..514ff6216d4 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,8 +1,15 @@ +2014-05-04 Janne Blomqvist + + Backport from 4.9 + PR libfortran/56919 + * intrinsics/system_clock.c (GF_CLOCK_MONOTONIC): Check + _POSIX_MONOTONIC_CLOCK as well. + 2014-04-12 Jerry DeLisle Backport from mainline PR libfortran/60810 - io/unit.c (is_trim_ok): If internal unit is array, do not trim. + * io/unit.c (is_trim_ok): If internal unit is array, do not trim. 2014-03-15 Jerry DeLisle diff --git a/libgfortran/intrinsics/system_clock.c b/libgfortran/intrinsics/system_clock.c index 6385c4f0c95..d4b2f850e55 100644 --- a/libgfortran/intrinsics/system_clock.c +++ b/libgfortran/intrinsics/system_clock.c @@ -33,7 +33,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see /* POSIX states that CLOCK_REALTIME must be present if clock_gettime is available, others are optional. */ #if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_GETTIME_LIBRT) -#ifdef CLOCK_MONOTONIC +#if defined(CLOCK_MONOTONIC) && defined(_POSIX_MONOTONIC_CLOCK) \ + && _POSIX_MONOTONIC_CLOCK >= 0 #define GF_CLOCK_MONOTONIC CLOCK_MONOTONIC #else #define GF_CLOCK_MONOTONIC CLOCK_REALTIME -- cgit v1.2.1 From 6fa243a7ecc2be6aba1223b52a0d38b63cc28dc5 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 4 May 2014 00:16:21 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210044 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 5069f75be20..b261315f751 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140503 +20140504 -- cgit v1.2.1 From 99bc2bcac1a02bcb0081e1b97cff9438d126a470 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 5 May 2014 00:16:04 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210050 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index b261315f751..d43065abe47 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140504 +20140505 -- cgit v1.2.1 From a1b95ce2faad54da93b2aad7a639cff27cdb3b8f Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 6 May 2014 00:16:37 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210089 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index d43065abe47..6696ff3d2e8 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140505 +20140506 -- cgit v1.2.1 From ade445ee765b32f2673194168099566b0a18ce4d Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 6 May 2014 14:22:41 +0000 Subject: 2014-05-06 Richard Biener Backport from mainline 2013-05-27 Richard Biener PR tree-optimization/57417 * tree-ssa-sccvn.c (set_ssa_val_to): Compare addresses using get_addr_base_and_unit_offset. * gcc.dg/torture/pr57417.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210110 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.dg/torture/pr57417.c | 12 ++++++++++++ gcc/tree-ssa-sccvn.c | 13 ++++++++++++- 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr57417.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a5390e67db0..030f3ffcd74 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-05-06 Richard Biener + + Backport from mainline + 2013-05-27 Richard Biener + + PR tree-optimization/57417 + * tree-ssa-sccvn.c (set_ssa_val_to): Compare addresses using + get_addr_base_and_unit_offset. + 2014-04-25 Eric Botcazou PR target/60941 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e58454589f0..6b5f1f57620 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-05-06 Richard Biener + + Backport from mainline + 2013-05-27 Richard Biener + + PR tree-optimization/57417 + * gcc.dg/torture/pr57417.c: New testcase. + 2014-04-25 Eric Botcazou * gcc.c-torture/execute/20140425-1.c: New test. diff --git a/gcc/testsuite/gcc.dg/torture/pr57417.c b/gcc/testsuite/gcc.dg/torture/pr57417.c new file mode 100644 index 00000000000..6eac6f932b8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr57417.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ + +int a, b; +volatile int *c; + +void foo () +{ + volatile int d[1]; + b = 0; + for (;; a--) + c = &d[b]; +} diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index c2bd59d6416..1e4dc14434d 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -2483,6 +2483,7 @@ static inline bool set_ssa_val_to (tree from, tree to) { tree currval = SSA_VAL (from); + HOST_WIDE_INT toff, coff; if (from != to) { @@ -2518,7 +2519,17 @@ set_ssa_val_to (tree from, tree to) print_generic_expr (dump_file, to, 0); } - if (currval != to && !operand_equal_p (currval, to, OEP_PURE_SAME)) + if (currval != to + && !operand_equal_p (currval, to, OEP_PURE_SAME) + /* ??? For addresses involving volatile objects or types operand_equal_p + does not reliably detect ADDR_EXPRs as equal. We know we are only + getting invariant gimple addresses here, so can use + get_addr_base_and_unit_offset to do this comparison. */ + && !(TREE_CODE (currval) == ADDR_EXPR + && TREE_CODE (to) == ADDR_EXPR + && (get_addr_base_and_unit_offset (TREE_OPERAND (currval, 0), &coff) + == get_addr_base_and_unit_offset (TREE_OPERAND (to, 0), &toff)) + && coff == toff)) { VN_INFO (from)->valnum = to; if (dump_file && (dump_flags & TDF_DETAILS)) -- cgit v1.2.1 From 7972fc2fd84a70c61abe33e0c882f6f82c7c0597 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 7 May 2014 00:16:43 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210129 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 6696ff3d2e8..8fb79c300d4 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140506 +20140507 -- cgit v1.2.1 From 1a5a08fdaa6c02f502b5229b591d5e20560c4a05 Mon Sep 17 00:00:00 2001 From: rguenth Date: Wed, 7 May 2014 07:59:26 +0000 Subject: 2014-05-07 Richard Biener Backport from mainline 2013-08-29 Richard Biener PR tree-optimization/58246 * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Properly handle the dominance check inside a basic-block. * gcc.dg/torture/pr58246.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210141 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.dg/torture/pr58246.c | 21 +++++++++++++++++++++ gcc/tree-ssa-dce.c | 5 +++++ 4 files changed, 43 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/torture/pr58246.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 030f3ffcd74..804f3231b4a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-05-07 Richard Biener + + Backport from mainline + 2013-08-29 Richard Biener + + PR tree-optimization/58246 + * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Properly + handle the dominance check inside a basic-block. + 2014-05-06 Richard Biener Backport from mainline diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6b5f1f57620..811cff5c720 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-05-07 Richard Biener + + Backport from mainline + 2013-08-29 Richard Biener + + PR tree-optimization/58246 + * gcc.dg/torture/pr58246.c: New testcase. + 2014-05-06 Richard Biener Backport from mainline diff --git a/gcc/testsuite/gcc.dg/torture/pr58246.c b/gcc/testsuite/gcc.dg/torture/pr58246.c new file mode 100644 index 00000000000..5417abf913d --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr58246.c @@ -0,0 +1,21 @@ +/* { dg-do run } */ + +extern void abort (void); + +int a, b; + +int main () +{ + int t[2] = {1,1}; + + for (a = 0; a < 2; a++) + { + b ^= t[a]; + t[a] = t[1] = 0; + } + + if (b != 1) + abort (); + + return 0; +} diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c index ace9ef9972d..d99e77130d4 100644 --- a/gcc/tree-ssa-dce.c +++ b/gcc/tree-ssa-dce.c @@ -576,6 +576,11 @@ mark_aliased_reaching_defs_necessary_1 (ao_ref *ref, tree vdef, void *data) in the references (gcc.c-torture/execute/pr42142.c). The simplest way is to check if the kill dominates the use. */ + /* But when both are in the same block we cannot + easily tell whether we came from a backedge + unless we decide to compute stmt UIDs + (see PR58246). */ + && (basic_block) data != gimple_bb (def_stmt) && dominated_by_p (CDI_DOMINATORS, (basic_block) data, gimple_bb (def_stmt)) && operand_equal_p (ref->ref, lhs, 0)) -- cgit v1.2.1 From dd283eda9d9d3ef03208ad21f5bbf378463fd2f0 Mon Sep 17 00:00:00 2001 From: rguenth Date: Wed, 7 May 2014 08:05:57 +0000 Subject: 2014-05-07 Richard Biener PR tree-optimization/57864 * tree-ssa-pre.c (phi_translate_1): Backport NAME case simplification from mainline. Do not lookup the VN value-number here. * gcc.dg/torture/pr57864.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210144 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/torture/pr57864.c | 37 ++++++++++++++++++++++++++++++++++ gcc/tree-ssa-pre.c | 31 +++++++++------------------- 4 files changed, 58 insertions(+), 22 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr57864.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 804f3231b4a..ed7ce78c3bc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-05-07 Richard Biener + + PR tree-optimization/57864 + * tree-ssa-pre.c (phi_translate_1): Backport NAME case + simplification from mainline. Do not lookup the VN + value-number here. + 2014-05-07 Richard Biener Backport from mainline diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 811cff5c720..aeacf94cef7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-05-07 Richard Biener + + PR tree-optimization/57864 + * gcc.dg/torture/pr57864.c: New testcase. + 2014-05-07 Richard Biener Backport from mainline diff --git a/gcc/testsuite/gcc.dg/torture/pr57864.c b/gcc/testsuite/gcc.dg/torture/pr57864.c new file mode 100644 index 00000000000..93962c20e3f --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr57864.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ + +union U { + double val; + union U *ptr; +}; + +union U *d; +double a; +int b; +int c; + +static void fn1(union U *p1, int p2, _Bool p3) +{ + union U *e; + + if (p2 == 0) + a = ((union U*)((unsigned long)p1 & ~1))->val; + + if (b) { + e = p1; + } else if (c) { + e = ((union U*)((unsigned long)p1 & ~1))->ptr; + d = e; + } else { + e = 0; + d = ((union U*)0)->ptr; + } + + fn1 (e, 0, 0); + fn1 (0, 0, p3); +} + +void fn2 (void) +{ + fn1 (0, 0, 0); +} diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index 727614a4215..4f710515a08 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -1756,39 +1756,26 @@ phi_translate_1 (pre_expr expr, bitmap_set_t set1, bitmap_set_t set2, case NAME: { - gimple phi = NULL; - edge e; - gimple def_stmt; tree name = PRE_EXPR_NAME (expr); - - def_stmt = SSA_NAME_DEF_STMT (name); + gimple def_stmt = SSA_NAME_DEF_STMT (name); + /* If the SSA name is defined by a PHI node in this block, + translate it. */ if (gimple_code (def_stmt) == GIMPLE_PHI && gimple_bb (def_stmt) == phiblock) - phi = def_stmt; - else - return expr; - - e = find_edge (pred, gimple_bb (phi)); - if (e) { - tree def = PHI_ARG_DEF (phi, e->dest_idx); - pre_expr newexpr; - - if (TREE_CODE (def) == SSA_NAME) - def = VN_INFO (def)->valnum; + edge e = find_edge (pred, gimple_bb (def_stmt)); + tree def = PHI_ARG_DEF (def_stmt, e->dest_idx); /* Handle constant. */ if (is_gimple_min_invariant (def)) return get_or_alloc_expr_for_constant (def); - if (TREE_CODE (def) == SSA_NAME && ssa_undefined_value_p (def)) - return NULL; - - newexpr = get_or_alloc_expr_for_name (def); - return newexpr; + return get_or_alloc_expr_for_name (def); } + /* Otherwise return it unchanged - it will get cleaned if its + value is not available in PREDs AVAIL_OUT set of expressions. */ + return expr; } - return expr; default: gcc_unreachable (); -- cgit v1.2.1 From 4d477145899bfb7796980b66e4958fd752fb5f74 Mon Sep 17 00:00:00 2001 From: rguenth Date: Wed, 7 May 2014 10:01:36 +0000 Subject: 2014-05-07 Richard Biener Backport from mainline 2013-11-29 Richard Biener PR tree-optimization/59334 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Fix bug in previous commit. 2013-11-28 Richard Biener PR tree-optimization/59330 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Simplify and fix delayed marking of free calls not necessary. * gcc.dg/torture/pr59330.c: New testcase. 2014-01-09 Richard Biener PR tree-optimization/59715 * tree-cfg.h (split_critical_edges): Declare. * tree-cfg.c (split_critical_edges): Export. * tree-ssa-sink.c (execute_sink_code): Split critical edges. * gcc.dg/torture/pr59715.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210146 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 22 ++++++++++++++++++++++ gcc/testsuite/ChangeLog | 13 +++++++++++++ gcc/testsuite/gcc.dg/torture/pr59330.c | 17 +++++++++++++++++ gcc/testsuite/gcc.dg/torture/pr59715.c | 21 +++++++++++++++++++++ gcc/tree-cfg.c | 3 +-- gcc/tree-ssa-dce.c | 29 +++++++++++------------------ gcc/tree-ssa-sink.c | 2 +- 7 files changed, 86 insertions(+), 21 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr59330.c create mode 100644 gcc/testsuite/gcc.dg/torture/pr59715.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ed7ce78c3bc..156b5a550ce 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,25 @@ +2014-05-07 Richard Biener + + Backport from mainline + 2013-11-29 Richard Biener + + PR tree-optimization/59334 + * tree-ssa-dce.c (eliminate_unnecessary_stmts): Fix bug + in previous commit. + + 2013-11-28 Richard Biener + + PR tree-optimization/59330 + * tree-ssa-dce.c (eliminate_unnecessary_stmts): Simplify + and fix delayed marking of free calls not necessary. + + 2014-01-09 Richard Biener + + PR tree-optimization/59715 + * tree-cfg.h (split_critical_edges): Declare. + * tree-cfg.c (split_critical_edges): Export. + * tree-ssa-sink.c (execute_sink_code): Split critical edges. + 2014-05-07 Richard Biener PR tree-optimization/57864 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index aeacf94cef7..2bd98d4f052 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2014-05-07 Richard Biener + + Backport from mainline + 2013-11-28 Richard Biener + + PR tree-optimization/59330 + * gcc.dg/torture/pr59330.c: New testcase. + + 2014-01-09 Richard Biener + + PR tree-optimization/59715 + * gcc.dg/torture/pr59715.c: New testcase. + 2014-05-07 Richard Biener PR tree-optimization/57864 diff --git a/gcc/testsuite/gcc.dg/torture/pr59330.c b/gcc/testsuite/gcc.dg/torture/pr59330.c new file mode 100644 index 00000000000..74b832ea314 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr59330.c @@ -0,0 +1,17 @@ +/* { dg-do run } */ + +void free(void *ptr) +{ +} + +void *foo(void) +{ + return 0; +} + +int main(void) +{ + void *p = foo(); + free(p); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr59715.c b/gcc/testsuite/gcc.dg/torture/pr59715.c new file mode 100644 index 00000000000..19c09de55d7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr59715.c @@ -0,0 +1,21 @@ +/* { dg-do run } */ + +extern void abort (void); + +int a = 2, b; + +int +main () +{ + int c; + if (!b) + { + b = a; + c = a == 0 ? 1 : 1 % a; + if (c) + b = 0; + } + if (b != 0) + abort (); + return 0; +} diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index c4a1ffa4ef3..cfdf7aa4dce 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -109,7 +109,6 @@ static int locus_map_eq (const void *, const void *); static void assign_discriminator (location_t, basic_block); static edge gimple_redirect_edge_and_branch (edge, basic_block); static edge gimple_try_redirect_by_replacing_jump (edge, basic_block); -static unsigned int split_critical_edges (void); /* Various helpers. */ static inline bool stmt_starts_bb_p (gimple, gimple); @@ -7399,7 +7398,7 @@ struct cfg_hooks gimple_cfg_hooks = { /* Split all critical edges. */ -static unsigned int +unsigned int split_critical_edges (void) { basic_block bb; diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c index d99e77130d4..bb1ef08ece8 100644 --- a/gcc/tree-ssa-dce.c +++ b/gcc/tree-ssa-dce.c @@ -1310,26 +1310,19 @@ eliminate_unnecessary_stmts (void) stats.total++; /* We can mark a call to free as not necessary if the - defining statement of its argument is an allocation - function and that is not necessary itself. */ - if (gimple_call_builtin_p (stmt, BUILT_IN_FREE)) + defining statement of its argument is not necessary + (and thus is getting removed). */ + if (gimple_plf (stmt, STMT_NECESSARY) + && gimple_call_builtin_p (stmt, BUILT_IN_FREE)) { tree ptr = gimple_call_arg (stmt, 0); - tree callee2; - gimple def_stmt; - if (TREE_CODE (ptr) != SSA_NAME) - continue; - def_stmt = SSA_NAME_DEF_STMT (ptr); - if (!is_gimple_call (def_stmt) - || gimple_plf (def_stmt, STMT_NECESSARY)) - continue; - callee2 = gimple_call_fndecl (def_stmt); - if (callee2 == NULL_TREE - || DECL_BUILT_IN_CLASS (callee2) != BUILT_IN_NORMAL - || (DECL_FUNCTION_CODE (callee2) != BUILT_IN_MALLOC - && DECL_FUNCTION_CODE (callee2) != BUILT_IN_CALLOC)) - continue; - gimple_set_plf (stmt, STMT_NECESSARY, false); + if (TREE_CODE (ptr) == SSA_NAME) + { + gimple def_stmt = SSA_NAME_DEF_STMT (ptr); + if (!gimple_nop_p (def_stmt) + && !gimple_plf (def_stmt, STMT_NECESSARY)) + gimple_set_plf (stmt, STMT_NECESSARY, false); + } } /* If GSI is not necessary then remove it. */ diff --git a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c index 19cacfc56ea..0222dac1a4a 100644 --- a/gcc/tree-ssa-sink.c +++ b/gcc/tree-ssa-sink.c @@ -636,7 +636,7 @@ static void execute_sink_code (void) { loop_optimizer_init (LOOPS_NORMAL); - + split_critical_edges (); connect_infinite_loops_to_exit (); memset (&sink_stats, 0, sizeof (sink_stats)); calculate_dominance_info (CDI_DOMINATORS); -- cgit v1.2.1 From 62c11096176abf01a30e2ac37d47601748ce845e Mon Sep 17 00:00:00 2001 From: rguenth Date: Wed, 7 May 2014 10:07:09 +0000 Subject: 2014-05-07 Richard Biener Backport from mainline 2013-11-29 Richard Biener PR tree-optimization/59334 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Fix bug in previous commit. 2013-11-28 Richard Biener PR tree-optimization/59330 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Simplify and fix delayed marking of free calls not necessary. * gcc.dg/torture/pr59330.c: New testcase. 2014-01-09 Richard Biener PR tree-optimization/59715 * tree-cfg.h (split_critical_edges): Declare. * tree-cfg.c (split_critical_edges): Export. * tree-ssa-sink.c (execute_sink_code): Split critical edges. * gcc.dg/torture/pr59715.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210147 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/tree-flow.h | 1 + 1 file changed, 1 insertion(+) diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index 319be2bb618..d39abbe5f77 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -466,6 +466,7 @@ extern basic_block move_sese_region_to_fn (struct function *, basic_block, basic_block, tree); void remove_edge_and_dominated_blocks (edge); bool tree_node_can_be_shared (tree); +extern unsigned int split_critical_edges (void); /* In tree-cfgcleanup.c */ extern bitmap cfgcleanup_altered_bbs; -- cgit v1.2.1 From 8fe3bcbed7054802fdf252fa20533ce1475cbc30 Mon Sep 17 00:00:00 2001 From: rguenth Date: Wed, 7 May 2014 11:51:36 +0000 Subject: 2014-05-07 Richard Biener Backport from mainline 2013-11-19 Richard Biener PR tree-optimization/59164 * tree-vect-loop.c (vect_analyze_loop_operations): Adjust check whether we can create an epilogue loop to reflect the cases where we create one. * gcc.dg/torture/pr59164.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210154 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 10 ++++++++++ gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.dg/torture/pr59164.c | 21 +++++++++++++++++++++ gcc/tree-vect-loop.c | 2 +- 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr59164.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 156b5a550ce..8e1bbfc8083 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2014-05-07 Richard Biener + + Backport from mainline + 2013-11-19 Richard Biener + + PR tree-optimization/59164 + * tree-vect-loop.c (vect_analyze_loop_operations): Adjust + check whether we can create an epilogue loop to reflect the + cases where we create one. + 2014-05-07 Richard Biener Backport from mainline diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2bd98d4f052..9ae3e94ca1f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-05-07 Richard Biener + + Backport from mainline + 2013-11-19 Richard Biener + + PR tree-optimization/59164 + * gcc.dg/torture/pr59164.c: New testcase. + 2014-05-07 Richard Biener Backport from mainline diff --git a/gcc/testsuite/gcc.dg/torture/pr59164.c b/gcc/testsuite/gcc.dg/torture/pr59164.c new file mode 100644 index 00000000000..1ec69610c21 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr59164.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ + +int a, d, e; +long b[10]; +int c[10][8]; + +int fn1(p1) +{ + return 1 >> p1; +} + +void fn2(void) +{ + int f; + for (a=1; a <= 4; a++) + { + f = fn1(0 < c[a][0]); + if (f || d) + e = b[a] = 1; + } +} diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index b6f85d8e19c..c73d758570f 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -1466,7 +1466,7 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo, bool slp) if (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo) || LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0 - || LOOP_PEELING_FOR_ALIGNMENT (loop_vinfo)) + || LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)) { if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "epilog loop required."); -- cgit v1.2.1 From 5ffca5d363321b3d47611a3088684a9aa6ff1112 Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 15:54:34 +0000 Subject: Backported from mainline 2013-06-27 Jakub Jelinek PR target/57623 * config/i386/i386.md (bmi2_bzhi_3): Swap AND arguments to match RTL canonicalization. Swap predicates and constraints of operand 1 and 2. * gcc.target/i386/bmi2-bzhi-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210166 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/i386/i386.md | 6 +++--- gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c | 31 +++++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8e1bbfc8083..90a411b8969 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2014-05-07 Jakub Jelinek + + Backported from mainline + 2013-06-27 Jakub Jelinek + + PR target/57623 + * config/i386/i386.md (bmi2_bzhi_3): Swap AND arguments + to match RTL canonicalization. Swap predicates and + constraints of operand 1 and 2. + 2014-05-07 Richard Biener Backport from mainline diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index f85f17af1a1..781e671036d 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -12127,9 +12127,9 @@ ;; BMI2 instructions. (define_insn "bmi2_bzhi_3" [(set (match_operand:SWI48 0 "register_operand" "=r") - (and:SWI48 (match_operand:SWI48 1 "register_operand" "r") - (lshiftrt:SWI48 (const_int -1) - (match_operand:SWI48 2 "nonimmediate_operand" "rm")))) + (and:SWI48 (lshiftrt:SWI48 (const_int -1) + (match_operand:SWI48 2 "register_operand" "r")) + (match_operand:SWI48 1 "nonimmediate_operand" "rm"))) (clobber (reg:CC FLAGS_REG))] "TARGET_BMI2" "bzhi\t{%2, %1, %0|%0, %1, %2}" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9ae3e94ca1f..897dfbcc086 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-05-07 Jakub Jelinek + + Backported from mainline + 2013-06-27 Jakub Jelinek + + PR target/57623 + * gcc.target/i386/bmi2-bzhi-1.c: New test. + 2014-05-07 Richard Biener Backport from mainline diff --git a/gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c b/gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c new file mode 100644 index 00000000000..42e002d0630 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c @@ -0,0 +1,31 @@ +/* PR target/57623 */ +/* { dg-do assemble { target bmi2 } } */ +/* { dg-options "-O2 -mbmi2" } */ + +#include + +unsigned int +f1 (unsigned int x, unsigned int *y) +{ + return _bzhi_u32 (x, *y); +} + +unsigned int +f2 (unsigned int *x, unsigned int y) +{ + return _bzhi_u32 (*x, y); +} + +#ifdef __x86_64__ +unsigned long long +f3 (unsigned long long x, unsigned long long *y) +{ + return _bzhi_u64 (x, *y); +} + +unsigned long long +f4 (unsigned long long *x, unsigned long long y) +{ + return _bzhi_u64 (*x, y); +} +#endif -- cgit v1.2.1 From f1a58329bb4194dfd2de033ca64614c6f425f86f Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 15:57:48 +0000 Subject: Backported from mainline 2013-06-27 Jakub Jelinek PR target/57623 * config/i386/i386.md (bmi_bextr_): Swap predicates and constraints of operand 1 and 2. * gcc.target/i386/bmi-bextr-3.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210168 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/config/i386/i386.md | 4 ++-- gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/gcc.target/i386/bmi-bextr-3.c | 31 +++++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/bmi-bextr-3.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 90a411b8969..ea476d5eb55 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -3,6 +3,10 @@ Backported from mainline 2013-06-27 Jakub Jelinek + PR target/57623 + * config/i386/i386.md (bmi_bextr_): Swap predicates and + constraints of operand 1 and 2. + PR target/57623 * config/i386/i386.md (bmi2_bzhi_3): Swap AND arguments to match RTL canonicalization. Swap predicates and diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 781e671036d..9b8a96e428d 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -12077,8 +12077,8 @@ (define_insn "bmi_bextr_" [(set (match_operand:SWI48 0 "register_operand" "=r") - (unspec:SWI48 [(match_operand:SWI48 1 "register_operand" "r") - (match_operand:SWI48 2 "nonimmediate_operand" "rm")] + (unspec:SWI48 [(match_operand:SWI48 1 "nonimmediate_operand" "rm") + (match_operand:SWI48 2 "register_operand" "r")] UNSPEC_BEXTR)) (clobber (reg:CC FLAGS_REG))] "TARGET_BMI" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 897dfbcc086..3723fc0e579 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,9 @@ Backported from mainline 2013-06-27 Jakub Jelinek + PR target/57623 + * gcc.target/i386/bmi-bextr-3.c: New test. + PR target/57623 * gcc.target/i386/bmi2-bzhi-1.c: New test. diff --git a/gcc/testsuite/gcc.target/i386/bmi-bextr-3.c b/gcc/testsuite/gcc.target/i386/bmi-bextr-3.c new file mode 100644 index 00000000000..fe342b9e0ad --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/bmi-bextr-3.c @@ -0,0 +1,31 @@ +/* PR target/57623 */ +/* { dg-do assemble { target bmi } } */ +/* { dg-options "-O2 -mbmi" } */ + +#include + +unsigned int +f1 (unsigned int x, unsigned int *y) +{ + return __bextr_u32 (x, *y); +} + +unsigned int +f2 (unsigned int *x, unsigned int y) +{ + return __bextr_u32 (*x, y); +} + +#ifdef __x86_64__ +unsigned long long +f3 (unsigned long long x, unsigned long long *y) +{ + return __bextr_u64 (x, *y); +} + +unsigned long long +f4 (unsigned long long *x, unsigned long long y) +{ + return __bextr_u64 (*x, y); +} +#endif -- cgit v1.2.1 From 21efb5aeb87489e732b554495e74a73ecd6b22fb Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 15:59:37 +0000 Subject: Backported from mainline 2013-07-03 Jakub Jelinek PR target/57777 * config/i386/predicates.md (vsib_address_operand): Disallow SYMBOL_REF or LABEL_REF in parts.disp if TARGET_64BIT && flag_pic. * gcc.target/i386/pr57777.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210169 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/i386/predicates.md | 33 +++++++++++++++++++++------------ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/i386/pr57777.c | 13 +++++++++++++ 4 files changed, 45 insertions(+), 12 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr57777.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ea476d5eb55..f2b7b9e42da 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-07-03 Jakub Jelinek + + PR target/57777 + * config/i386/predicates.md (vsib_address_operand): Disallow + SYMBOL_REF or LABEL_REF in parts.disp if TARGET_64BIT && flag_pic. + 2013-06-27 Jakub Jelinek PR target/57623 diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md index 9e312915bfc..ba835728d9c 100644 --- a/gcc/config/i386/predicates.md +++ b/gcc/config/i386/predicates.md @@ -841,19 +841,28 @@ return false; /* VSIB addressing doesn't support (%rip). */ - if (parts.disp && GET_CODE (parts.disp) == CONST) + if (parts.disp) { - disp = XEXP (parts.disp, 0); - if (GET_CODE (disp) == PLUS) - disp = XEXP (disp, 0); - if (GET_CODE (disp) == UNSPEC) - switch (XINT (disp, 1)) - { - case UNSPEC_GOTPCREL: - case UNSPEC_PCREL: - case UNSPEC_GOTNTPOFF: - return false; - } + disp = parts.disp; + if (GET_CODE (disp) == CONST) + { + disp = XEXP (disp, 0); + if (GET_CODE (disp) == PLUS) + disp = XEXP (disp, 0); + if (GET_CODE (disp) == UNSPEC) + switch (XINT (disp, 1)) + { + case UNSPEC_GOTPCREL: + case UNSPEC_PCREL: + case UNSPEC_GOTNTPOFF: + return false; + } + } + if (TARGET_64BIT + && flag_pic + && (GET_CODE (disp) == SYMBOL_REF + || GET_CODE (disp) == LABEL_REF)) + return false; } return true; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3723fc0e579..385241cb6f7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-07-03 Jakub Jelinek + + PR target/57777 + * gcc.target/i386/pr57777.c: New test. + 2013-06-27 Jakub Jelinek PR target/57623 diff --git a/gcc/testsuite/gcc.target/i386/pr57777.c b/gcc/testsuite/gcc.target/i386/pr57777.c new file mode 100644 index 00000000000..9c1a392aa9b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr57777.c @@ -0,0 +1,13 @@ +/* PR target/57777 */ +/* { dg-do assemble { target avx2 } } */ +/* { dg-options "-O3 -mavx2" } */ +/* { dg-additional-options "-fpic" { target fpic } } */ + +void +foo (unsigned long *x, int *y) +{ + static unsigned long b[2] = { 0x0UL, 0x9908b0dfUL }; + int c; + for (c = 0; c < 512; c++) + x[c] = b[x[c] & 1UL]; +} -- cgit v1.2.1 From 589ecf24264028d7c5dcd996442d2edcb0032d65 Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 16:00:33 +0000 Subject: Backported from mainline 2013-08-23 Jakub Jelinek PR tree-optimization/58209 * tree-tailcall.c (find_tail_calls): Give up for pointer result types if m or a is non-NULL. * gcc.c-torture/execute/pr58209.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210170 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 +++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.c-torture/execute/pr58209.c | 32 +++++++++++++++++++++++++++ gcc/tree-tailcall.c | 5 +++++ 4 files changed, 48 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr58209.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f2b7b9e42da..8838f62abd3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-08-23 Jakub Jelinek + + PR tree-optimization/58209 + * tree-tailcall.c (find_tail_calls): Give up for pointer result types + if m or a is non-NULL. + 2013-07-03 Jakub Jelinek PR target/57777 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 385241cb6f7..e5bd7ce49ae 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-08-23 Jakub Jelinek + + PR tree-optimization/58209 + * gcc.c-torture/execute/pr58209.c: New test. + 2013-07-03 Jakub Jelinek PR target/57777 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr58209.c b/gcc/testsuite/gcc.c-torture/execute/pr58209.c new file mode 100644 index 00000000000..78743bfb959 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr58209.c @@ -0,0 +1,32 @@ +/* PR tree-optimization/58209 */ + +extern void abort (void); +typedef __INTPTR_TYPE__ T; +T buf[1024]; + +T * +foo (T n) +{ + if (n == 0) + return (T *) buf; + T s = (T) foo (n - 1); + return (T *) (s + sizeof (T)); +} + +T * +bar (T n) +{ + if (n == 0) + return buf; + return foo (n - 1) + 1; +} + +int +main () +{ + int i; + for (i = 0; i < 27; i++) + if (foo (i) != buf + i || bar (i) != buf + i) + abort (); + return 0; +} diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c index f07297e86c9..e5387008b8b 100644 --- a/gcc/tree-tailcall.c +++ b/gcc/tree-tailcall.c @@ -576,6 +576,11 @@ find_tail_calls (basic_block bb, struct tailcall **ret) if (!tail_recursion && (m || a)) return; + /* For pointers don't allow additions or multiplications. */ + if ((m || a) + && POINTER_TYPE_P (TREE_TYPE (DECL_RESULT (current_function_decl)))) + return; + nw = XNEW (struct tailcall); nw->call_gsi = gsi; -- cgit v1.2.1 From 3e04d62e6bc391f34ba48e3e1d88a0788e16c4cd Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 16:01:24 +0000 Subject: Backported from mainline 2013-08-30 Jakub Jelinek PR tree-optimization/58277 * tree-ssa-strlen.c (strlen_enter_block): If do_invalidate gave up after seeing too many stmts with vdef in between dombb and current bb, invalidate everything. * gcc.c-torture/execute/pr58277-1.c: New test. * gcc.c-torture/execute/pr58277-2.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210171 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 ++ gcc/testsuite/ChangeLog | 6 ++ gcc/testsuite/gcc.c-torture/execute/pr58277-1.c | 102 ++++++++++++++++++++++++ gcc/testsuite/gcc.c-torture/execute/pr58277-2.c | 98 +++++++++++++++++++++++ gcc/tree-ssa-strlen.c | 23 ++++++ 5 files changed, 236 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr58277-1.c create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr58277-2.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8838f62abd3..04f46d76a40 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,13 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-08-30 Jakub Jelinek + + PR tree-optimization/58277 + * tree-ssa-strlen.c (strlen_enter_block): If do_invalidate gave up + after seeing too many stmts with vdef in between dombb and current + bb, invalidate everything. + 2013-08-23 Jakub Jelinek PR tree-optimization/58209 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e5bd7ce49ae..7dcdffebbf8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,12 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-08-30 Jakub Jelinek + + PR tree-optimization/58277 + * gcc.c-torture/execute/pr58277-1.c: New test. + * gcc.c-torture/execute/pr58277-2.c: New test. + 2013-08-23 Jakub Jelinek PR tree-optimization/58209 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr58277-1.c b/gcc/testsuite/gcc.c-torture/execute/pr58277-1.c new file mode 100644 index 00000000000..811988f4371 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr58277-1.c @@ -0,0 +1,102 @@ +/* PR tree-optimization/58277 */ + +extern void abort (void); +static int a[2]; +int b, c, d, *e, f, g, h, **i = &e, k, l = 1, n, o, p; +static int **volatile j = &e; +const int m; +char u; + +int +bar () +{ + u = 0; + return m; +} + +__attribute__((noinline, noclone)) void +baz () +{ + asm (""); +} + +static int +foo () +{ + int t1; + g = bar (); + if (l) + ; + else + for (;; h++) + { + *i = 0; + o = *e = 0; + if (p) + { + f = 0; + return 0; + } + for (;; k++) + { + int *t2 = 0; + int *const *t3[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, &t2, 0, 0, &t2, &t2, &t2, + &t2, &t2, 0, 0, 0, 0, 0, 0, 0, &t2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, &t2, 0, 0, 0, 0, 0, 0, 0, &t2, &t2, + &t2, &t2, &t2, 0, 0, 0, 0, 0, 0, 0, &t2, 0, 0, 0, + &t2, 0, 0, 0, &t2, 0, &t2, 0, 0, &t2, 0, 0, 0, 0, + 0, &t2, 0, 0, 0, 0, &t2, &t2, 0, 0, 0, 0, &t2, 0, + 0, 0, 0, 0, 0, 0, &t2, 0, 0, 0, 0, 0, &t2, 0, 0, 0, + &t2, &t2 + }; + int *const **t4[] = {&t3[0]}; + **i = 0; + if (**j) + break; + u = 0; + } + *i = *j; + t1 = 0; + for (; t1 < 5; t1++) + *i = *j; + } + *j = 0; + return 1; +} + +int +main () +{ + int t5; + a[0] = 1; + { + int *t6[6] = {&d, &d}; + for (n = 1; n; n--) + if (foo()) + { + int *t7[] = {0}; + d = 0; + for (; u < 1; u++) + *i = *j; + *i = 0; + *i = 0; + int t8[5] = {0}; + *i = &t8[0]; + int *const *t9 = &t6[0]; + int *const **t10 = &t9; + *t10 = &t7[0]; + } + } + u = 0; + for (; b; b++) + for (t5 = 0; t5 < 10; t5++) + c = a[a[a[a[a[a[a[a[c]]]]]]]]; + + baz (); + + if (!a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[u]]]]]]]]]]]]]]]) + abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr58277-2.c b/gcc/testsuite/gcc.c-torture/execute/pr58277-2.c new file mode 100644 index 00000000000..d919c2f3f80 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr58277-2.c @@ -0,0 +1,98 @@ +/* PR tree-optimization/58277 */ + +extern void abort (void); +static int a[1], b, c, e, i, j, k, m, q[] = { 1, 1 }, t; +int volatile d; +int **r; +static int ***volatile s = &r; +int f, g, o, x; +static int *volatile h = &f, *p; +char n; + +static void +fn1 () +{ + b = a[a[a[a[a[a[a[a[b]]]]]]]]; + b = a[a[a[a[a[a[a[a[b]]]]]]]]; + b = a[a[b]]; + b = a[a[a[a[a[a[a[a[b]]]]]]]]; + b = a[a[a[a[a[a[a[a[b]]]]]]]]; +} + +static int +fn2 () +{ + n = 0; + for (; g; t++) + { + for (;; m++) + { + d; + int *u; + int **v[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, &u, 0, 0, 0, 0, &u, &u, &u, &u, &u, &u, &u, 0, + &u, 0, &u, &u, &u, 0, &u, &u, 0, &u, &u, &u, &u, 0, &u, &u, &u, + &u, &u, 0, &u, &u, 0, &u, 0, &u, &u, 0, &u, &u, &u, &u, &u, 0, + &u, 0, 0, 0, &u, &u, &u, 0, 0, &u, &u, &u, 0, &u, 0, &u, &u + }; + int ***w[] = { &v[0] }; + if (*p) + break; + return 0; + } + *h = 0; + } + return 1; +} + +static void +fn3 () +{ + int *y[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + for (; i; i++) + x = 0; + if (fn2 ()) + { + int *z[6] = { }; + for (; n < 1; n++) + *h = 0; + int t1[7]; + for (; c; c++) + o = t1[0]; + for (; e; e--) + { + int **t2 = &y[0]; + int ***t3 = &t2; + *t3 = &z[0]; + } + } + *s = 0; + for (n = 0;; n = 0) + { + int t4 = 0; + if (q[n]) + break; + *r = &t4; + } +} + +int +main () +{ + for (; j; j--) + a[0] = 0; + fn3 (); + for (; k; k++) + fn1 (); + fn1 (); + + if (n) + abort (); + + return 0; +} diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c index 304c2940576..3a3aeeac9f2 100644 --- a/gcc/tree-ssa-strlen.c +++ b/gcc/tree-ssa-strlen.c @@ -1896,6 +1896,29 @@ strlen_enter_block (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED, int count_vdef = 100; do_invalidate (dombb, phi, visited, &count_vdef); BITMAP_FREE (visited); + if (count_vdef == 0) + { + /* If there were too many vdefs in between immediate + dominator and current bb, invalidate everything. + If stridx_to_strinfo has been unshared, we need + to free it, otherwise just set it to NULL. */ + if (!strinfo_shared ()) + { + unsigned int i; + strinfo si; + + for (i = 1; + VEC_iterate (strinfo, stridx_to_strinfo, i, si); + ++i) + { + free_strinfo (si); + VEC_replace (strinfo, stridx_to_strinfo, + i, NULL); + } + } + else + stridx_to_strinfo = NULL; + } break; } } -- cgit v1.2.1 From 6ad3af54074be1592d131813195be3c331c454d1 Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 16:03:49 +0000 Subject: Backported from mainline 2013-09-09 Jakub Jelinek PR c++/58325 * init.c (build_vec_delete): Call mark_rvalue_use on base. * g++.dg/warn/Wunused-var-21.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210172 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 9 +++++++++ gcc/cp/init.c | 1 + gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/warn/Wunused-var-21.C | 31 ++++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 gcc/testsuite/g++.dg/warn/Wunused-var-21.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d22e15327d2..549d28d6fdb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,4 +1,13 @@ +2014-05-07 Jakub Jelinek + + Backported from mainline + 2013-09-09 Jakub Jelinek + + PR c++/58325 + * init.c (build_vec_delete): Call mark_rvalue_use on base. + 2014-02-26 Fabien Chêne + PR c++/37140 * parser.c (cp_parser_nonclass_name): Call strip_using_decl and move the code handling dependent USING_DECLs... diff --git a/gcc/cp/init.c b/gcc/cp/init.c index bb0e618fbee..4e4b613dd52 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -3915,6 +3915,7 @@ build_vec_delete (tree base, tree maxindex, tree cookie_addr; tree size_ptr_type = build_pointer_type (sizetype); + base = mark_rvalue_use (base); if (TREE_SIDE_EFFECTS (base)) { base_init = get_target_expr (base); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7dcdffebbf8..b93701aa74f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-09-09 Jakub Jelinek + + PR c++/58325 + * g++.dg/warn/Wunused-var-21.C: New test. + 2013-08-30 Jakub Jelinek PR tree-optimization/58277 diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-21.C b/gcc/testsuite/g++.dg/warn/Wunused-var-21.C new file mode 100644 index 00000000000..d279e598033 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wunused-var-21.C @@ -0,0 +1,31 @@ +// PR c++/58325 +// { dg-do compile } +// { dg-options "-Wunused" } + +void +f1 () +{ + int *volatile a = new int[1]; + delete[] a; +} + +void +f2 () +{ + int *b = new int[1]; + delete[] b; +} + +void +f3 () +{ + int *volatile c = new int; + delete c; +} + +void +f4 () +{ + int *d = new int; + delete d; +} -- cgit v1.2.1 From 9d6f975807ff20c6d426b452e15a684d0815122c Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 16:04:44 +0000 Subject: Backported from mainline 2013-09-10 Jakub Jelinek PR rtl-optimization/58365 * cfgcleanup.c (merge_memattrs): Also clear MEM_READONLY_P resp. MEM_NOTRAP_P if they differ, or set MEM_VOLATILE_P if it differs. * gcc.c-torture/execute/pr58365.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210173 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 ++++++ gcc/cfgcleanup.c | 18 ++++++++++++++ gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gcc.c-torture/execute/pr58365.c | 35 +++++++++++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr58365.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 04f46d76a40..139a579103a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,13 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-09-10 Jakub Jelinek + + PR rtl-optimization/58365 + * cfgcleanup.c (merge_memattrs): Also clear MEM_READONLY_P + resp. MEM_NOTRAP_P if they differ, or set MEM_VOLATILE_P if + it differs. + 2013-08-30 Jakub Jelinek PR tree-optimization/58277 diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 6ff161425fe..fae3aa656e5 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -922,6 +922,24 @@ merge_memattrs (rtx x, rtx y) set_mem_align (y, MEM_ALIGN (x)); } } + if (code == MEM) + { + if (MEM_READONLY_P (x) != MEM_READONLY_P (y)) + { + MEM_READONLY_P (x) = 0; + MEM_READONLY_P (y) = 0; + } + if (MEM_NOTRAP_P (x) != MEM_NOTRAP_P (y)) + { + MEM_NOTRAP_P (x) = 0; + MEM_NOTRAP_P (y) = 0; + } + if (MEM_VOLATILE_P (x) != MEM_VOLATILE_P (y)) + { + MEM_VOLATILE_P (x) = 1; + MEM_VOLATILE_P (y) = 1; + } + } fmt = GET_RTX_FORMAT (code); for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b93701aa74f..362317863b6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-09-10 Jakub Jelinek + + PR rtl-optimization/58365 + * gcc.c-torture/execute/pr58365.c: New test. + 2013-09-09 Jakub Jelinek PR c++/58325 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr58365.c b/gcc/testsuite/gcc.c-torture/execute/pr58365.c new file mode 100644 index 00000000000..1e6079d8429 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr58365.c @@ -0,0 +1,35 @@ +/* PR rtl-optimization/58365 */ + +extern void abort (void); + +struct S +{ + volatile int a; + int b, c, d, e; +} f; +static struct S g, h; +int i = 1; + +char +foo (void) +{ + return i; +} + +static struct S +bar (void) +{ + if (foo ()) + return f; + return g; +} + +int +main () +{ + h = bar (); + f.b = 1; + if (h.b != 0) + abort (); + return 0; +} -- cgit v1.2.1 From cb78a1fb48d354129d24a804bd321fdd6692357c Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 16:05:38 +0000 Subject: Backported from mainline 2013-09-30 Jakub Jelinek PR middle-end/58564 * fold-const.c (fold_ternary_loc): For A < 0 : : 0 optimization, punt if sign_bit_p looked through any zero extension. * gcc.c-torture/execute/pr58564.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210174 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/fold-const.c | 19 +++++++++++++++++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.c-torture/execute/pr58564.c | 14 ++++++++++++++ 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr58564.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 139a579103a..940ed0fb7c0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-09-30 Jakub Jelinek + + PR middle-end/58564 + * fold-const.c (fold_ternary_loc): For A < 0 : : 0 + optimization, punt if sign_bit_p looked through any zero extension. + 2013-09-10 Jakub Jelinek PR rtl-optimization/58365 diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 804a05f927a..d83f084dd03 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -13849,14 +13849,29 @@ fold_ternary_loc (location_t loc, enum tree_code code, tree type, && integer_zerop (op2) && (tem = sign_bit_p (TREE_OPERAND (arg0, 0), arg1))) { + /* sign_bit_p looks through both zero and sign extensions, + but for this optimization only sign extensions are + usable. */ + tree tem2 = TREE_OPERAND (arg0, 0); + while (tem != tem2) + { + if (TREE_CODE (tem2) != NOP_EXPR + || TYPE_UNSIGNED (TREE_TYPE (TREE_OPERAND (tem2, 0)))) + { + tem = NULL_TREE; + break; + } + tem2 = TREE_OPERAND (tem2, 0); + } /* sign_bit_p only checks ARG1 bits within A's precision. If has wider type than A, bits outside of A's precision in need to be checked. If they are all 0, this optimization needs to be done in unsigned A's type, if they are all 1 in signed A's type, otherwise this can't be done. */ - if (TYPE_PRECISION (TREE_TYPE (tem)) - < TYPE_PRECISION (TREE_TYPE (arg1)) + if (tem + && TYPE_PRECISION (TREE_TYPE (tem)) + < TYPE_PRECISION (TREE_TYPE (arg1)) && TYPE_PRECISION (TREE_TYPE (tem)) < TYPE_PRECISION (type)) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 362317863b6..b28b8ad0dce 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-09-30 Jakub Jelinek + + PR middle-end/58564 + * gcc.c-torture/execute/pr58564.c: New test. + 2013-09-10 Jakub Jelinek PR rtl-optimization/58365 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr58564.c b/gcc/testsuite/gcc.c-torture/execute/pr58564.c new file mode 100644 index 00000000000..967ee95d4ab --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr58564.c @@ -0,0 +1,14 @@ +/* PR middle-end/58564 */ + +extern void abort (void); +int a, b; +short *c, **d = &c; + +int +main () +{ + b = (0, 0 > ((&c == d) & (1 && (a ^ 1)))) | 0U; + if (b != 0) + abort (); + return 0; +} -- cgit v1.2.1 From bccaa8d15ffd77e550de4e4603a2c1109bc4cc49 Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 16:07:21 +0000 Subject: Backported from mainline 2013-11-14 Jakub Jelinek Uros Bizjak PR target/59101 * config/i386/i386.md (*anddi_2): Only allow CCZmode if operands[2] satisfies_constraint_Z that might have bit 31 set. * gcc.c-torture/execute/pr59101.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210176 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/config/i386/i386.md | 13 ++++++++++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.c-torture/execute/pr59101.c | 15 +++++++++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr59101.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 940ed0fb7c0..710550042a1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,13 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-11-14 Jakub Jelinek + Uros Bizjak + + PR target/59101 + * config/i386/i386.md (*anddi_2): Only allow CCZmode if + operands[2] satisfies_constraint_Z that might have bit 31 set. + 2013-09-30 Jakub Jelinek PR middle-end/58564 diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 9b8a96e428d..f09717d15a0 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -7923,7 +7923,18 @@ (const_int 0))) (set (match_operand:DI 0 "nonimmediate_operand" "=r,r,rm") (and:DI (match_dup 1) (match_dup 2)))] - "TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode) + "TARGET_64BIT + && ix86_match_ccmode + (insn, + /* If we are going to emit andl instead of andq, and the operands[2] + constant might have the SImode sign bit set, make sure the sign + flag isn't tested, because the instruction will set the sign flag + based on bit 31 rather than bit 63. If it isn't CONST_INT, + conservatively assume it might have bit 31 set. */ + (satisfies_constraint_Z (operands[2]) + && (!CONST_INT_P (operands[2]) + || val_signbit_known_set_p (SImode, INTVAL (operands[2])))) + ? CCZmode : CCNOmode) && ix86_binary_operator_ok (AND, DImode, operands)" "@ and{l}\t{%k2, %k0|%k0, %k2} diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b28b8ad0dce..bc5ef8fe3f3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-11-14 Jakub Jelinek + + PR target/59101 + * gcc.c-torture/execute/pr59101.c: New test. + 2013-09-30 Jakub Jelinek PR middle-end/58564 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr59101.c b/gcc/testsuite/gcc.c-torture/execute/pr59101.c new file mode 100644 index 00000000000..ed6a7e8fa31 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr59101.c @@ -0,0 +1,15 @@ +/* PR target/59101 */ + +__attribute__((noinline, noclone)) int +foo (int a) +{ + return (~a & 4102790424LL) > 0 | 6; +} + +int +main () +{ + if (foo (0) != 7) + __builtin_abort (); + return 0; +} -- cgit v1.2.1 From 0cf16f126b69c6f58f208a3d2fd2659d2a0a58b7 Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 16:08:28 +0000 Subject: Backported from mainline 2013-11-27 Jakub Jelinek PR tree-optimization/59014 * gcc.c-torture/execute/pr59014-2.c: New test. 2013-11-26 Jakub Jelinek PR tree-optimization/59014 * tree-vrp.c (register_edge_assert_for_1): Don't look through conversions from non-integral types or through narrowing conversions. * gcc.c-torture/execute/pr59014.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210177 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/testsuite/ChangeLog | 10 ++++++++++ gcc/testsuite/gcc.c-torture/execute/pr59014-2.c | 23 +++++++++++++++++++++++ gcc/testsuite/gcc.c-torture/execute/pr59014.c | 25 +++++++++++++++++++++++++ gcc/tree-vrp.c | 10 +++++++--- 5 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr59014-2.c create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr59014.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 710550042a1..c32f18179fe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,13 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-11-26 Jakub Jelinek + + PR tree-optimization/59014 + * tree-vrp.c (register_edge_assert_for_1): Don't look + through conversions from non-integral types or through + narrowing conversions. + 2013-11-14 Jakub Jelinek Uros Bizjak diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bc5ef8fe3f3..4307f7197b1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,16 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-11-27 Jakub Jelinek + + PR tree-optimization/59014 + * gcc.c-torture/execute/pr59014-2.c: New test. + + 2013-11-26 Jakub Jelinek + + PR tree-optimization/59014 + * gcc.c-torture/execute/pr59014.c: New test. + 2013-11-14 Jakub Jelinek PR target/59101 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr59014-2.c b/gcc/testsuite/gcc.c-torture/execute/pr59014-2.c new file mode 100644 index 00000000000..18da0059eab --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr59014-2.c @@ -0,0 +1,23 @@ +/* PR tree-optimization/59014 */ + +__attribute__((noinline, noclone)) long long int +foo (long long int x, long long int y) +{ + if (((int) x | (int) y) != 0) + return 6; + return x + y; +} + +int +main () +{ + if (sizeof (long long) == sizeof (int)) + return 0; + int shift_half = sizeof (int) * __CHAR_BIT__ / 2; + long long int x = (3LL << shift_half) << shift_half; + long long int y = (5LL << shift_half) << shift_half; + long long int z = foo (x, y); + if (z != ((8LL << shift_half) << shift_half)) + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr59014.c b/gcc/testsuite/gcc.c-torture/execute/pr59014.c new file mode 100644 index 00000000000..10bf81a462f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr59014.c @@ -0,0 +1,25 @@ +/* PR tree-optimization/59014 */ + +int a = 2, b, c, d; + +int +foo () +{ + for (;; c++) + if ((b > 0) | (a & 1)) + ; + else + { + d = a; + return 0; + } +} + +int +main () +{ + foo (); + if (d != 2) + __builtin_abort (); + return 0; +} diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index a65266c27fa..1bb1775f697 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -4536,9 +4536,13 @@ register_edge_assert_for_1 (tree op, enum tree_code code, } else if (CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (op_def))) { - /* Recurse through the type conversion. */ - retval |= register_edge_assert_for_1 (gimple_assign_rhs1 (op_def), - code, e, bsi); + /* Recurse through the type conversion, unless it is a narrowing + conversion or conversion from non-integral type. */ + tree rhs = gimple_assign_rhs1 (op_def); + if (INTEGRAL_TYPE_P (TREE_TYPE (rhs)) + && (TYPE_PRECISION (TREE_TYPE (rhs)) + <= TYPE_PRECISION (TREE_TYPE (op)))) + retval |= register_edge_assert_for_1 (rhs, code, e, bsi); } return retval; -- cgit v1.2.1 From a7946e2283d354826b3f3a4c29e079b3dd496a9a Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 16:09:41 +0000 Subject: Backported from mainline 2013-11-28 Jakub Jelinek PR c++/59297 * semantics.c (finish_omp_atomic): Call finish_expr_stmt rather than add_stmt. * g++.dg/gomp/pr59297.C: New test. 2013-05-31 Jason Merrill PR c++/56930 * semantics.c (potential_constant_expression_1): Handle OMP_ATOMIC*. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210178 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 11 +++++++++++ gcc/cp/semantics.c | 8 +++++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/gomp/pr59297.C | 25 +++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/gomp/pr59297.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 549d28d6fdb..1ee383f8b09 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,11 +1,22 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-11-28 Jakub Jelinek + + PR c++/59297 + * semantics.c (finish_omp_atomic): Call finish_expr_stmt + rather than add_stmt. + 2013-09-09 Jakub Jelinek PR c++/58325 * init.c (build_vec_delete): Call mark_rvalue_use on base. + 2013-05-31 Jason Merrill + + PR c++/56930 + * semantics.c (potential_constant_expression_1): Handle OMP_ATOMIC*. + 2014-02-26 Fabien Chêne PR c++/37140 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index d5c35c695c3..e71f7d99f2f 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -4977,7 +4977,7 @@ finish_omp_atomic (enum tree_code code, enum tree_code opcode, tree lhs, } stmt = build2 (OMP_ATOMIC, void_type_node, integer_zero_node, stmt); } - add_stmt (stmt); + finish_expr_stmt (stmt); } void @@ -8594,6 +8594,12 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags) } return false; + case OMP_ATOMIC: + case OMP_ATOMIC_READ: + case OMP_ATOMIC_CAPTURE_OLD: + case OMP_ATOMIC_CAPTURE_NEW: + return false; + default: sorry ("unexpected AST of kind %s", tree_code_name[TREE_CODE (t)]); gcc_unreachable(); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4307f7197b1..eeda6f55c31 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-11-28 Jakub Jelinek + + PR c++/59297 + * g++.dg/gomp/pr59297.C: New test. + 2013-11-27 Jakub Jelinek PR tree-optimization/59014 diff --git a/gcc/testsuite/g++.dg/gomp/pr59297.C b/gcc/testsuite/g++.dg/gomp/pr59297.C new file mode 100644 index 00000000000..330ed2e00b1 --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr59297.C @@ -0,0 +1,25 @@ +// PR c++/59297 +// { dg-do compile } +// { dg-options "-fopenmp" } + +template +struct A +{ + ~A (); + const T &operator[] (int) const; +}; + +struct B +{ + int &operator () (A ); +}; + +void +foo (B &x, int &z) +{ + A > y; + #pragma omp atomic + x (y[0]) += 1; + #pragma omp atomic + z += x(y[1]); +} -- cgit v1.2.1 From 9f39ce83f95ba6b4af815086837dc2e0e1361d89 Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 16:10:35 +0000 Subject: Backported from mainline 2013-12-03 Jakub Jelinek PR middle-end/59011 * gimplify.c (nonlocal_vla_vars): New variable. (gimplify_var_or_parm_decl): Put VAR_DECLs for VLAs into nonlocal_vla_vars chain. (gimplify_body): Call declare_vars on nonlocal_vla_vars chain if outer_bind has DECL_INITIAL (current_function_decl) block. * gcc.dg/pr59011.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210179 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/gimplify.c | 25 +++++++++++++++++++++---- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr59011.c | 22 ++++++++++++++++++++++ 4 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr59011.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c32f18179fe..c1595650e50 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,15 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-12-03 Jakub Jelinek + + PR middle-end/59011 + * gimplify.c (nonlocal_vla_vars): New variable. + (gimplify_var_or_parm_decl): Put VAR_DECLs for VLAs into + nonlocal_vla_vars chain. + (gimplify_body): Call declare_vars on nonlocal_vla_vars chain + if outer_bind has DECL_INITIAL (current_function_decl) block. + 2013-11-26 Jakub Jelinek PR tree-optimization/59014 diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 531565e6499..abb580f8958 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1922,6 +1922,9 @@ gimplify_conversion (tree *expr_p) /* Nonlocal VLAs seen in the current function. */ static struct pointer_set_t *nonlocal_vlas; +/* The VAR_DECLs created for nonlocal VLAs for debug info purposes. */ +static tree nonlocal_vla_vars; + /* Gimplify a VAR_DECL or PARM_DECL. Return GS_OK if we expanded a DECL_VALUE_EXPR, and it's worth re-examining things. */ @@ -1968,14 +1971,13 @@ gimplify_var_or_parm_decl (tree *expr_p) ctx = ctx->outer_context; if (!ctx && !pointer_set_insert (nonlocal_vlas, decl)) { - tree copy = copy_node (decl), block; + tree copy = copy_node (decl); lang_hooks.dup_lang_specific_decl (copy); SET_DECL_RTL (copy, 0); TREE_USED (copy) = 1; - block = DECL_INITIAL (current_function_decl); - DECL_CHAIN (copy) = BLOCK_VARS (block); - BLOCK_VARS (block) = copy; + DECL_CHAIN (copy) = nonlocal_vla_vars; + nonlocal_vla_vars = copy; SET_DECL_VALUE_EXPR (copy, unshare_expr (value_expr)); DECL_HAS_VALUE_EXPR_P (copy) = 1; } @@ -8057,6 +8059,21 @@ gimplify_body (tree fndecl, bool do_parms) if (nonlocal_vlas) { + if (nonlocal_vla_vars) + { + /* tree-nested.c may later on call declare_vars (..., true); + which relies on BLOCK_VARS chain to be the tail of the + gimple_bind_vars chain. Ensure we don't violate that + assumption. */ + if (gimple_bind_block (outer_bind) + == DECL_INITIAL (current_function_decl)) + declare_vars (nonlocal_vla_vars, outer_bind, true); + else + BLOCK_VARS (DECL_INITIAL (current_function_decl)) + = chainon (BLOCK_VARS (DECL_INITIAL (current_function_decl)), + nonlocal_vla_vars); + nonlocal_vla_vars = NULL_TREE; + } pointer_set_destroy (nonlocal_vlas); nonlocal_vlas = NULL; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index eeda6f55c31..f098fe5cbc0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-12-03 Jakub Jelinek + + PR middle-end/59011 + * gcc.dg/pr59011.c: New test. + 2013-11-28 Jakub Jelinek PR c++/59297 diff --git a/gcc/testsuite/gcc.dg/pr59011.c b/gcc/testsuite/gcc.dg/pr59011.c new file mode 100644 index 00000000000..2fb8187ad55 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr59011.c @@ -0,0 +1,22 @@ +/* PR middle-end/59011 */ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99" } */ + +void +foo (int m) +{ + int a[m]; + void + bar (void) + { + { + int + baz (void) + { + return a[0]; + } + } + a[0] = 42; + } + bar (); +} -- cgit v1.2.1 From f979bc8e6138e60c434a945ccab35908925748bd Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 7 May 2014 16:11:42 +0000 Subject: Backported from mainline 2013-10-21 Marek Polacek PR middle-end/58809 * fold-const.c (fold_range_test): Return 0 if the type is not an integral type. * gcc.dg/gomp/pr58809.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210180 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/fold-const.c | 10 +++++++--- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/gomp/pr58809.c | 13 +++++++++++++ 4 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/gomp/pr58809.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c1595650e50..b14a3b5f486 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-10-21 Marek Polacek + + PR middle-end/58809 + * fold-const.c (fold_range_test): Return 0 if the type is not + an integral type. + 2013-12-03 Jakub Jelinek PR middle-end/59011 diff --git a/gcc/fold-const.c b/gcc/fold-const.c index d83f084dd03..c3c8f7e0ac3 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -4879,12 +4879,16 @@ fold_range_test (location_t loc, enum tree_code code, tree type, int in0_p, in1_p, in_p; tree low0, low1, low, high0, high1, high; bool strict_overflow_p = false; - tree lhs = make_range (op0, &in0_p, &low0, &high0, &strict_overflow_p); - tree rhs = make_range (op1, &in1_p, &low1, &high1, &strict_overflow_p); - tree tem; + tree tem, lhs, rhs; const char * const warnmsg = G_("assuming signed overflow does not occur " "when simplifying range test"); + if (!INTEGRAL_TYPE_P (type)) + return 0; + + lhs = make_range (op0, &in0_p, &low0, &high0, &strict_overflow_p); + rhs = make_range (op1, &in1_p, &low1, &high1, &strict_overflow_p); + /* If this is an OR operation, invert both sides; we will invert again at the end. */ if (or_op) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f098fe5cbc0..b6e3f4d8d2f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2014-05-07 Jakub Jelinek Backported from mainline + 2013-10-21 Marek Polacek + + PR middle-end/58809 + * gcc.dg/gomp/pr58809.c: New test. + 2013-12-03 Jakub Jelinek PR middle-end/59011 diff --git a/gcc/testsuite/gcc.dg/gomp/pr58809.c b/gcc/testsuite/gcc.dg/gomp/pr58809.c new file mode 100644 index 00000000000..5dc02f65aa8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/pr58809.c @@ -0,0 +1,13 @@ +/* PR middle-end/58809 */ +/* { dg-do compile } */ +/* { dg-options "-fopenmp -O" } */ + +int i; +#pragma omp threadprivate (i) + +void foo() +{ + _Complex int j; +#pragma omp parallel copyin (i) reduction (&&:j) + ; +} -- cgit v1.2.1 From f9c37e10f66199c7641d2c907d5a8c5ba581d6c3 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 8 May 2014 00:16:25 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210194 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 8fb79c300d4..e2c25ba9bdb 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140507 +20140508 -- cgit v1.2.1 From d32c09228e980518e3e2b324742224d882ebc772 Mon Sep 17 00:00:00 2001 From: cbaylis Date: Thu, 8 May 2014 17:06:04 +0000 Subject: 2014-05-08 Charles Baylis Backport from mainline 2014-04-07 Charles Baylis PR target/60609 * config/arm/arm.h (ASM_OUTPUT_CASE_END): Remove. (LABEL_ALIGN_AFTER_BARRIER): Align barriers which occur after ADDR_DIFF_VEC. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210227 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 10 ++ gcc/config/arm/arm.h | 11 +- gcc/testsuite/g++.dg/torture/pr60609.C | 252 +++++++++++++++++++++++++++++++++ 3 files changed, 265 insertions(+), 8 deletions(-) create mode 100644 gcc/testsuite/g++.dg/torture/pr60609.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b14a3b5f486..b7a1348c141 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2014-05-08 Charles Baylis + + Backport from mainline + 2014-04-07 Charles Baylis + + PR target/60609 + * config/arm/arm.h (ASM_OUTPUT_CASE_END): Remove. + (LABEL_ALIGN_AFTER_BARRIER): Align barriers which occur after + ADDR_DIFF_VEC. + 2014-05-07 Jakub Jelinek Backported from mainline diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index fbbf041a4fb..e8236d69f38 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -2051,14 +2051,9 @@ extern int making_const_table; } \ while (0) -/* Make sure subsequent insns are aligned after a TBB. */ -#define ASM_OUTPUT_CASE_END(FILE, NUM, JUMPTABLE) \ - do \ - { \ - if (GET_MODE (PATTERN (JUMPTABLE)) == QImode) \ - ASM_OUTPUT_ALIGN (FILE, 1); \ - } \ - while (0) +#define LABEL_ALIGN_AFTER_BARRIER(LABEL) \ + (GET_CODE (PATTERN (prev_active_insn (LABEL))) == ADDR_DIFF_VEC \ + ? 1 : 0) #define ARM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL) \ do \ diff --git a/gcc/testsuite/g++.dg/torture/pr60609.C b/gcc/testsuite/g++.dg/torture/pr60609.C new file mode 100644 index 00000000000..9ddec0b601d --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr60609.C @@ -0,0 +1,252 @@ +/* { dg-do assemble } */ + +class exception +{ +}; +class bad_alloc:exception +{ +}; +class logic_error:exception +{ +}; +class domain_error:logic_error +{ +}; +class invalid_argument:logic_error +{ +}; +class length_error:logic_error +{ +}; +class overflow_error:exception +{ +}; +typedef int mpz_t[]; +template < class > class __gmp_expr; +template <> class __gmp_expr < mpz_t > +{ + ~__gmp_expr (); +}; + +class PIP_Solution_Node; +class internal_exception +{ + ~internal_exception (); +}; +class not_an_integer:internal_exception +{ +}; +class not_a_variable:internal_exception +{ +}; +class not_an_optimization_mode:internal_exception +{ +}; +class not_a_bounded_integer_type_width:internal_exception +{ +}; +class not_a_bounded_integer_type_representation:internal_exception +{ +}; +class not_a_bounded_integer_type_overflow:internal_exception +{ +}; +class not_a_complexity_class:internal_exception +{ +}; +class not_a_control_parameter_name:internal_exception +{ +}; +class not_a_control_parameter_value:internal_exception +{ +}; +class not_a_pip_problem_control_parameter_name:internal_exception +{ +}; +class not_a_pip_problem_control_parameter_value:internal_exception +{ +}; +class not_a_relation:internal_exception +{ +}; +class ppl_handle_mismatch:internal_exception +{ +}; +class timeout_exception +{ + ~timeout_exception (); +}; +class deterministic_timeout_exception:timeout_exception +{ +}; +void __assert_fail (const char *, const char *, int, int *) +__attribute__ ((__noreturn__)); +void PL_get_pointer (void *); +int Prolog_is_address (); +inline int +Prolog_get_address (void **p1) +{ + Prolog_is_address ()? static_cast < + void >(0) : __assert_fail ("Prolog_is_address", "./swi_cfli.hh", 0, 0); + PL_get_pointer (p1); + return 0; +} + +class non_linear:internal_exception +{ +}; +class not_unsigned_integer:internal_exception +{ +}; +class not_universe_or_empty:internal_exception +{ +}; +class not_a_nil_terminated_list:internal_exception +{ +}; +class PPL_integer_out_of_range +{ + __gmp_expr < mpz_t > n; +}; +void handle_exception (); +template < typename T > T * term_to_handle (int, const char *) +{ + if (Prolog_is_address ()) + { + void *p; + Prolog_get_address (&p); + return static_cast < T * >(0); + } + throw; +} + +void +ppl_new_MIP_Problem_from_MIP_Problem () +try +{ + term_to_handle < int >(0, "ppl_new_MIP_Problem_from_MIP_Problem/2"); +} + +catch (exception &) +{ +} + +int +ppl_PIP_Tree_Node_parametric_values () +{ + try + { + PIP_Solution_Node *a = term_to_handle < PIP_Solution_Node > (0, 0); + (void)a; + return 1; + } + catch (internal_exception &) + { + } + catch (not_unsigned_integer &) + { + handle_exception (); + } + catch (non_linear &) + { + handle_exception (); + } + catch (not_a_variable &) + { + handle_exception (); + } + catch (not_an_integer &) + { + handle_exception (); + } + catch (ppl_handle_mismatch &) + { + handle_exception (); + } + catch (not_an_optimization_mode &) + { + handle_exception (); + } + catch (not_a_complexity_class &) + { + handle_exception (); + } + catch (not_a_bounded_integer_type_width &) + { + handle_exception (); + } + catch (not_a_bounded_integer_type_representation &) + { + handle_exception (); + } + catch (not_a_bounded_integer_type_overflow &) + { + handle_exception (); + } + catch (not_a_control_parameter_name &) + { + handle_exception (); + } + catch (not_a_control_parameter_value &) + { + handle_exception (); + } + catch (not_a_pip_problem_control_parameter_name &) + { + handle_exception (); + } + catch (not_a_pip_problem_control_parameter_value &) + { + handle_exception (); + } + catch (not_universe_or_empty &) + { + handle_exception (); + } + catch (not_a_relation &) + { + handle_exception (); + } + catch (not_a_nil_terminated_list &) + { + handle_exception (); + } + catch (PPL_integer_out_of_range &) + { + handle_exception (); + } + catch (int &) + { + } catch (timeout_exception &) + { + handle_exception (); + } catch (deterministic_timeout_exception &) + { + handle_exception (); + } catch (overflow_error &) + { + handle_exception (); + } catch (domain_error &) + { + handle_exception (); + } catch (length_error &) + { + handle_exception (); + } catch (invalid_argument &) + { + handle_exception (); + } catch (logic_error &) + { + handle_exception (); + } catch (bad_alloc &) + { + handle_exception (); + } catch (exception &) + { + handle_exception (); + } catch ( ...) + { + handle_exception (); + } + return 0; +} -- cgit v1.2.1 From 72d81bd77fb177586c5c2664505f1061cefbf467 Mon Sep 17 00:00:00 2001 From: redi Date: Thu, 8 May 2014 19:57:06 +0000 Subject: 2014-05-08 Joshua Gay PR libstdc++/61117 * doc/xml/faq.xml (faq.license.what_restrictions): Replace "open source" with "free software". * doc/html/faq.html: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210242 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 7 +++++++ libstdc++-v3/doc/html/faq.html | 2 +- libstdc++-v3/doc/xml/faq.xml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 99190b6d92b..fb49617b208 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2014-05-08 Joshua Gay + + PR libstdc++/61117 + * doc/xml/faq.xml (faq.license.what_restrictions): Replace "open + source" with "free software". + * doc/html/faq.html: Likewise. + 2012-04-05 Dominique d'Humieres Jack Howarth diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html index 49261ea7448..625087fc3fd 100644 --- a/libstdc++-v3/doc/html/faq.html +++ b/libstdc++-v3/doc/html/faq.html @@ -223,7 +223,7 @@

2.4.

I see. So, what restrictions are there on programs that use the library?

- None. We encourage such programs to be released as open source, + None. We encourage such programs to be released as free software, but we won't punish you or sue you if you choose otherwise.

3.1. How do I install libstdc++?
3.2. How does one get current libstdc++ sources? diff --git a/libstdc++-v3/doc/xml/faq.xml b/libstdc++-v3/doc/xml/faq.xml index 86142ec9c46..46136a45001 100644 --- a/libstdc++-v3/doc/xml/faq.xml +++ b/libstdc++-v3/doc/xml/faq.xml @@ -241,7 +241,7 @@ - None. We encourage such programs to be released as open source, + None. We encourage such programs to be released as free software, but we won't punish you or sue you if you choose otherwise. -- cgit v1.2.1 From 02f0ea6390b4395f1bd931c530e3593f690408b3 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 9 May 2014 00:16:29 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210250 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index e2c25ba9bdb..3e325094d21 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140508 +20140509 -- cgit v1.2.1 From 5da32b768afe9f6cd9f3c0b6fa37703e6134040c Mon Sep 17 00:00:00 2001 From: gjl Date: Fri, 9 May 2014 11:34:46 +0000 Subject: gcc/ Backport from 2014-05-09 trunk r210267 PR target/61055 * config/avr/avr.md (cc): Add new attribute set_vzn. (addqi3, negqi2) [cc]: Set cc insn attribute to set_vzn instead of set_zn for alternatives with INC, DEC or NEG. * config/avr/avr.c (avr_notice_update_cc): Handle SET_VZN. (avr_out_plus_1): ADIW sets cc0 to CC_SET_CZN. INC, DEC set cc0 to CC_CLOBBER. gcc/testsuite/ Backport from 2014-05-09 trunk r210267 PR target/61055 * gcc.target/avr/torture/pr61055.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210270 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 13 ++++ gcc/config/avr/avr.c | 9 ++- gcc/config/avr/avr.md | 6 +- gcc/testsuite/ChangeLog | 7 ++ gcc/testsuite/gcc.target/avr/torture/pr61055.c | 88 ++++++++++++++++++++++++++ 5 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.target/avr/torture/pr61055.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b7a1348c141..848464fca3f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2014-05-09 Georg-Johann Lay + + Backport from 2014-05-09 trunk r210267 + + PR target/61055 + * config/avr/avr.md (cc): Add new attribute set_vzn. + (addqi3, negqi2) [cc]: + Set cc insn attribute to set_vzn instead of set_zn for alternatives + with INC, DEC or NEG. + * config/avr/avr.c (avr_notice_update_cc): Handle SET_VZN. + (avr_out_plus_1): ADIW sets cc0 to CC_SET_CZN. + INC, DEC set cc0 to CC_CLOBBER. + 2014-05-08 Charles Baylis Backport from mainline diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 2cba13ef326..0cb689ac8f2 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -2175,6 +2175,12 @@ notice_update_cc (rtx body ATTRIBUTE_UNUSED, rtx insn) } break; + case CC_SET_VZN: + /* Insn like INC, DEC, NEG that set Z,N,V. We currently don't make use + of this combination, cf. also PR61055. */ + CC_STATUS_INIT; + break; + case CC_SET_CZN: /* Insn sets the Z,N,C flags of CC to recog_operand[0]. The V flag may or may not be known but that's ok because @@ -5949,7 +5955,7 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc) op, plen, 1); if (n_bytes == 2 && PLUS == code) - *pcc = CC_SET_ZN; + *pcc = CC_SET_CZN; } i++; @@ -5971,6 +5977,7 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc) { avr_asm_len ((code == PLUS) ^ (val8 == 1) ? "dec %0" : "inc %0", op, plen, 1); + *pcc = CC_CLOBBER; break; } diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md index 3fe06da661c..a95d8476dc8 100644 --- a/gcc/config/avr/avr.md +++ b/gcc/config/avr/avr.md @@ -90,7 +90,7 @@ (include "constraints.md") ;; Condition code settings. -(define_attr "cc" "none,set_czn,set_zn,set_n,compare,clobber, +(define_attr "cc" "none,set_czn,set_vzn,set_zn,set_n,compare,clobber, out_plus, out_plus_noclobber,ldi" (const_string "none")) @@ -1056,7 +1056,7 @@ inc %0\;inc %0 dec %0\;dec %0" [(set_attr "length" "1,1,1,1,2,2") - (set_attr "cc" "set_czn,set_czn,set_zn,set_zn,set_zn,set_zn")]) + (set_attr "cc" "set_czn,set_czn,set_vzn,set_vzn,set_vzn,set_vzn")]) (define_expand "addhi3" @@ -3876,7 +3876,7 @@ "" "neg %0" [(set_attr "length" "1") - (set_attr "cc" "set_zn")]) + (set_attr "cc" "set_vzn")]) (define_insn "*negqihi2" [(set (match_operand:HI 0 "register_operand" "=r") diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b6e3f4d8d2f..baca8cd6d59 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2014-05-09 Georg-Johann Lay + + Backport from 2014-05-09 trunk r210267 + + PR target/61055 + * gcc.target/avr/torture/pr61055.c: New test. + 2014-05-07 Jakub Jelinek Backported from mainline diff --git a/gcc/testsuite/gcc.target/avr/torture/pr61055.c b/gcc/testsuite/gcc.target/avr/torture/pr61055.c new file mode 100644 index 00000000000..9dd1f427d00 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/pr61055.c @@ -0,0 +1,88 @@ +/* { dg-do run } */ +/* { dg-options { -fno-peephole2 } } */ + +#include + +typedef __UINT16_TYPE__ uint16_t; +typedef __INT16_TYPE__ int16_t; +typedef __UINT8_TYPE__ uint8_t; + +uint8_t __attribute__((noinline,noclone)) +fun_inc (uint8_t c0) +{ + register uint8_t c asm ("r15") = c0; + + /* Force target value into R15 (lower register) */ + asm ("" : "+l" (c)); + + c++; + if (c >= 0x80) + c = 0; + + asm ("" : "+l" (c)); + + return c; +} + +uint8_t __attribute__((noinline,noclone)) +fun_dec (uint8_t c0) +{ + register uint8_t c asm ("r15") = c0; + + /* Force target value into R15 (lower register) */ + asm ("" : "+l" (c)); + + c--; + if (c < 0x80) + c = 0; + + asm ("" : "+l" (c)); + + return c; +} + + +uint8_t __attribute__((noinline,noclone)) +fun_neg (uint8_t c0) +{ + register uint8_t c asm ("r15") = c0; + + c = -c; + if (c >= 0x80) + c = 0; + + return c; +} + +uint16_t __attribute__((noinline,noclone)) +fun_adiw (uint16_t c0) +{ + register uint16_t c asm ("r24") = c0; + + /* Force target value into R24 (for ADIW) */ + asm ("" : "+r" (c)); + + c += 2; + if (c >= 0x8000) + c = 0; + + asm ("" : "+r" (c)); + + return c; +} + + +int main() +{ + if (fun_inc (0x7f) != 0) + abort(); + + if (fun_neg (0x80) != 0) + abort(); + + if (fun_adiw (0x7ffe) != 0) + abort(); + + exit (0); + return 0; +} -- cgit v1.2.1 From 7f90e890eee9ea84394e0a715470d6b91c9cce15 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 10 May 2014 00:16:25 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210295 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 3e325094d21..06a452e0e35 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140509 +20140510 -- cgit v1.2.1 From 528b850ed384afcd708689b44ff0c5fce6547268 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 11 May 2014 00:16:18 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210302 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 06a452e0e35..dc19a9cf018 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140510 +20140511 -- cgit v1.2.1 From c7d1f08b9da6f631e9247cc1a725692e3916890c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 12 May 2014 00:16:38 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210316 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index dc19a9cf018..576d8616a6d 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140511 +20140512 -- cgit v1.2.1 From 6d3c36e91acc9b896e7716b0740a2078151fbbeb Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 13 May 2014 00:16:32 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210346 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 576d8616a6d..9730dc7bbbe 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140512 +20140513 -- cgit v1.2.1 From 97492bc0b56c7525826cb9b9f5cd7ab04ebd3dc5 Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 13 May 2014 13:21:47 +0000 Subject: 2014-05-13 Richard Biener Backport from mainline 2014-03-04 Richard Biener PR tree-optimization/60382 * tree-vect-loop.c (vect_is_simple_reduction_1): Do not consider dead PHIs a reduction. * gcc.dg/vect/pr60382.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210371 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.dg/vect/pr60382.c | 32 ++++++++++++++++++++++++++++++++ gcc/tree-vect-loop.c | 6 ++++++ 4 files changed, 55 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/vect/pr60382.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 848464fca3f..8cc35b37df5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-05-13 Richard Biener + + Backport from mainline + 2014-03-04 Richard Biener + + PR tree-optimization/60382 + * tree-vect-loop.c (vect_is_simple_reduction_1): Do not consider + dead PHIs a reduction. + 2014-05-09 Georg-Johann Lay Backport from 2014-05-09 trunk r210267 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index baca8cd6d59..bf2dd75dc2e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-05-13 Richard Biener + + Backport from mainline + 2014-03-04 Richard Biener + + PR tree-optimization/60382 + * gcc.dg/vect/pr60382.c: New testcase. + 2014-05-09 Georg-Johann Lay Backport from 2014-05-09 trunk r210267 diff --git a/gcc/testsuite/gcc.dg/vect/pr60382.c b/gcc/testsuite/gcc.dg/vect/pr60382.c new file mode 100644 index 00000000000..a28c6313c40 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr60382.c @@ -0,0 +1,32 @@ +#include "tree-vect.h" + +int a, b, c, e, f; + +void +foo () +{ + for (b = 0; b < 3; b++) + if (e) + { + for (c = 0; c < 4; c++) + { + if (b) + continue; + f = 1; + for (a = 0; a < 2; a++) + f |= 1; + } + for (;;) + ; + } +} + +int +main () +{ + check_vect (); + foo (); + return 0; +} + +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index c73d758570f..964e5dd2c88 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -2009,6 +2009,12 @@ vect_is_simple_reduction_1 (loop_vec_info loop_info, gimple phi, || (!check_reduction && flow_loop_nested_p (vect_loop, loop))); name = PHI_RESULT (phi); + /* ??? If there are no uses of the PHI result the inner loop reduction + won't be detected as possibly double-reduction by vectorizable_reduction + because that tries to walk the PHI arg from the preheader edge which + can be constant. See PR60382. */ + if (has_zero_uses (name)) + return NULL; nloop_uses = 0; FOR_EACH_IMM_USE_FAST (use_p, imm_iter, name) { -- cgit v1.2.1 From 5a07337a2c30d1661d446bf1b07c49f9d7a32a9c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 14 May 2014 00:16:35 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210407 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 9730dc7bbbe..7dfdaab6e7e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140513 +20140514 -- cgit v1.2.1 From a3969ea940eb82f62970963aba0ba73085e6d082 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 15 May 2014 00:16:30 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210452 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 7dfdaab6e7e..00730656006 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140514 +20140515 -- cgit v1.2.1 From 7dc3a9698c5777ee7a72baae9377cb864d142700 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 16 May 2014 00:16:31 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210481 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 00730656006..70d419461df 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140515 +20140516 -- cgit v1.2.1 From 30e0dbc3864b9c7170ba6381d1afa5f90d9d40f8 Mon Sep 17 00:00:00 2001 From: jb Date: Fri, 16 May 2014 20:42:56 +0000 Subject: PR 61187 Fix use of uninitialized data. 2014-05-16 Janne Blomqvist Backport from trunk: PR libfortran/61187 * io/unix.c (raw_close): Check if s->fd is -1. (fd_to_stream): Check return value of fstat(), handle error. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210529 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgfortran/ChangeLog | 7 +++++++ libgfortran/io/unix.c | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 514ff6216d4..75805d2bbcf 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,10 @@ +2014-05-16 Janne Blomqvist + + Backport from trunk: + PR libfortran/61187 + * io/unix.c (raw_close): Check if s->fd is -1. + (fd_to_stream): Check return value of fstat(), handle error. + 2014-05-04 Janne Blomqvist Backport from 4.9 diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c index 8421451e78c..31c4f69befc 100644 --- a/libgfortran/io/unix.c +++ b/libgfortran/io/unix.c @@ -392,7 +392,9 @@ raw_close (unix_stream * s) { int retval; - if (s->fd != STDOUT_FILENO + if (s->fd == -1) + retval = -1; + else if (s->fd != STDOUT_FILENO && s->fd != STDERR_FILENO && s->fd != STDIN_FILENO) retval = close (s->fd); @@ -961,7 +963,15 @@ fd_to_stream (int fd) /* Get the current length of the file. */ - fstat (fd, &statbuf); + if (fstat (fd, &statbuf) == -1) + { + s->st_dev = s->st_ino = -1; + s->file_length = 0; + if (errno == EBADF) + s->fd = -1; + raw_init (s); + return (stream *) s; + } s->st_dev = statbuf.st_dev; s->st_ino = statbuf.st_ino; -- cgit v1.2.1 From 48887b9233745d35502865f6ea930f9489aca6b2 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 17 May 2014 00:16:35 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210539 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 70d419461df..ec8e5aa1847 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140516 +20140517 -- cgit v1.2.1 From edc62c2a68688b329085d752d7d4a1cc17290c8d Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 18 May 2014 00:16:34 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210570 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ec8e5aa1847..78616daaf92 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140517 +20140518 -- cgit v1.2.1 From b4e881a2d0c9124393d297ff4774825135f4173c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 19 May 2014 00:17:06 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210593 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 78616daaf92..3a73739f395 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140518 +20140519 -- cgit v1.2.1 From 501306519c0d1142fc40d2463be1c946c1a4aebb Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 20 May 2014 00:16:21 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210626 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 3a73739f395..683e1b5fc0e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140519 +20140520 -- cgit v1.2.1 From 86def6061b669334841e419b20502033f5dfc110 Mon Sep 17 00:00:00 2001 From: gjl Date: Tue, 20 May 2014 08:37:50 +0000 Subject: gcc/ 2014-05-20 Senthil Kumar Selvaraj Backport from mainline r210325 2014-05-12 Senthil Kumar Selvaraj PR target/60991 * config/avr/avr.c (avr_out_store_psi): Use correct constant to restore Y. gcc/testsuite/ 2014-05-20 Senthil Kumar Selvaraj Backport from mainline r210325 2014-05-12 Senthil Kumar Selvaraj PR target/60991 * gcc.target/avr/pr60991.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210635 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/config/avr/avr.c | 2 +- gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.target/avr/pr60991.c | 21 +++++++++++++++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/avr/pr60991.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8cc35b37df5..92b1ffad583 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-05-20 Senthil Kumar Selvaraj + + Backport from mainline r210325 + 2014-05-12 Senthil Kumar Selvaraj + + PR target/60991 + * config/avr/avr.c (avr_out_store_psi): Use correct constant + to restore Y. + 2014-05-13 Richard Biener Backport from mainline diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 0cb689ac8f2..100be1bf2a2 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -3643,7 +3643,7 @@ avr_out_store_psi (rtx insn, rtx *op, int *plen) "std Y+61,%A1" CR_TAB "std Y+62,%B1" CR_TAB "std Y+63,%C1" CR_TAB - "sbiw r28,%o0-60", op, plen, -5); + "sbiw r28,%o0-61", op, plen, -5); return avr_asm_len ("subi r28,lo8(-%o0)" CR_TAB "sbci r29,hi8(-%o0)" CR_TAB diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bf2dd75dc2e..4609c56f7f1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-05-20 Senthil Kumar Selvaraj + + Backport from mainline r210325 + 2014-05-12 Senthil Kumar Selvaraj + + PR target/60991 + * gcc.target/avr/pr60991.c: New testcase. + 2014-05-13 Richard Biener Backport from mainline diff --git a/gcc/testsuite/gcc.target/avr/pr60991.c b/gcc/testsuite/gcc.target/avr/pr60991.c new file mode 100644 index 00000000000..a09f42a62b3 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/pr60991.c @@ -0,0 +1,21 @@ +/* { dg-do run } */ +/* { dg-options "-O1" } */ + +/* This testcase (simplified from the original bug report) exposes + PR60991. The code generated for writing the __int24 value corrupts + the frame pointer if the offset is <= 63 + MAX_LD_OFFSET */ + +#include + +int main(void) +{ + volatile char junk[62]; + junk[0] = 5; + volatile __int24 staticConfig = 0; + + if (junk[0] != 5) + abort(); + + exit(0); + return 0; +} -- cgit v1.2.1 From 60d3117462778e595de2ddda58acf596b8a32c67 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 21 May 2014 00:16:34 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210662 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 683e1b5fc0e..985e1ca4cea 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140520 +20140521 -- cgit v1.2.1 From d848e6f3638823e9804bd3a99b24419cce2c5fb1 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 22 May 2014 00:16:24 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210730 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 985e1ca4cea..1967b777fc6 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140521 +20140522 -- cgit v1.2.1 From 9d6c78b02260c02b65b822a38736a645b52181dc Mon Sep 17 00:00:00 2001 From: rearnsha Date: Thu, 22 May 2014 15:56:34 +0000 Subject: PR target/61208 * arm.md (arm_cmpdi_unsigned): Fix length calculation for Thumb2. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210816 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/arm/arm.md | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92b1ffad583..e90dc13b039 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-05-22 Richard Earnshaw + + PR target/61208 + * arm.md (arm_cmpdi_unsigned): Fix length calculation for Thumb2. + 2014-05-20 Senthil Kumar Selvaraj Backport from mainline r210325 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" -- cgit v1.2.1 From 00dc003762c18d20d455aca4e8736057dcd9ba22 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 23 May 2014 00:16:32 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210831 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 1967b777fc6..8bb7f4fe42b 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140522 +20140523 -- cgit v1.2.1 From a38db81cf6c0cf691cde1e7f8c746a924a38fa1b Mon Sep 17 00:00:00 2001 From: rguenth Date: Fri, 23 May 2014 09:46:18 +0000 Subject: 2014-05-23 Richard Biener Backport from mainline 2013-08-30 Richard Biener PR tree-optimization/58228 * tree-vect-data-refs.c (vect_analyze_data_ref_access): Do not allow invariant loads in nested loop vectorization. * gcc.dg/torture/pr58228.c: New testcase. 2013-09-26 Richard Biener 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. * gcc.dg/torture/pr58539.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210847 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 16 ++++++++++++++++ gcc/testsuite/ChangeLog | 13 +++++++++++++ gcc/testsuite/gcc.dg/torture/pr58228.c | 15 +++++++++++++++ gcc/testsuite/gcc.dg/torture/pr58539.c | 20 ++++++++++++++++++++ gcc/tree-vect-data-refs.c | 6 ++++++ gcc/tree-vect-loop.c | 11 ++++++++--- 6 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr58228.c create mode 100644 gcc/testsuite/gcc.dg/torture/pr58539.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e90dc13b039..db07f467319 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2014-05-23 Richard Biener + + Backport from mainline + 2013-08-30 Richard Biener + + 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 + + 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 PR target/61208 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4609c56f7f1..665ff3a9212 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2014-05-23 Richard Biener + + Backport from mainline + 2013-08-30 Richard Biener + + PR tree-optimization/58228 + * gcc.dg/torture/pr58228.c: New testcase. + + 2013-09-26 Richard Biener + + PR tree-optimization/58539 + * gcc.dg/torture/pr58539.c: New testcase. + 2014-05-20 Senthil Kumar Selvaraj Backport from mainline r210325 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/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)); } -- cgit v1.2.1 From e10e62be9d7b903d16171dc246a6ead3f63af513 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 24 May 2014 00:16:29 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210882 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 8bb7f4fe42b..9be427a932c 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140523 +20140524 -- cgit v1.2.1 From 216c285538e5bd1ba6b23a9af5a69252ddbd0ec1 Mon Sep 17 00:00:00 2001 From: dominiq Date: Sat, 24 May 2014 15:36:14 +0000 Subject: 2014-05-24 Dominique d'Humieres Backport r195492 and r195815 2013-01-27 Paul Thomas 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 PR fortran/55789 * trans-array.c (trans_array_constructor): Remove condition 'dynamic' = true if the loop ubound is a VAR_DECL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210893 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 22 ++++++++++++++++++++++ gcc/fortran/check.c | 2 +- gcc/fortran/class.c | 2 +- gcc/fortran/gfortran.h | 5 +++-- gcc/fortran/resolve.c | 7 +++++++ gcc/fortran/trans-array.c | 3 --- 6 files changed, 34 insertions(+), 7 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 11cbdde933b..6694c595533 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,25 @@ +2014-05-24 Dominique d'Humieres + + Backport r195492 and r195815 + 2013-01-27 Paul Thomas + + 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 + + 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 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/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); -- cgit v1.2.1 From fcc521b9a2cd6c4f93feb8122c51ac30e1e7f321 Mon Sep 17 00:00:00 2001 From: dominiq Date: Sat, 24 May 2014 15:45:02 +0000 Subject: 2014-05-24 Dominique d'Humieres Backport r195492 and r195815 2013-01-27 Paul Thomas 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 PR fortran/55789 * gfortran.dg/array_constructor_41.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210894 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 16 +++++++ gcc/testsuite/gfortran.dg/array_constructor_41.f90 | 33 +++++++++++++ gcc/testsuite/gfortran.dg/associate_13.f90 | 21 ++++++++ gcc/testsuite/gfortran.dg/associate_14.f90 | 56 ++++++++++++++++++++++ 4 files changed, 126 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/array_constructor_41.f90 create mode 100644 gcc/testsuite/gfortran.dg/associate_13.f90 create mode 100644 gcc/testsuite/gfortran.dg/associate_14.f90 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 665ff3a9212..0c5aced904e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,19 @@ +2014-05-24 Dominique d'Humieres + + Backport r195492 and r195815 + 2013-01-27 Paul Thomas + + 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 + + PR fortran/55789 + * gfortran.dg/array_constructor_41.f90: New test. + 2014-05-23 Richard Biener Backport from mainline 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 +! +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 +! + 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 +! +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 + -- cgit v1.2.1 From f0a6639b4bc7836490c896f331d0d6cc3d08eefa Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 25 May 2014 00:16:06 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210903 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 9be427a932c..4ddb82b1517 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140524 +20140525 -- cgit v1.2.1 From 6cc797dcd4d02f15c031747e420e240e1cd9cd7c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 26 May 2014 00:16:39 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210915 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 4ddb82b1517..e4b9ce0a24e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140525 +20140526 -- cgit v1.2.1 From 7e0d3ee8418ec0d95d4c7d4d187d4503234f00ea Mon Sep 17 00:00:00 2001 From: jb Date: Mon, 26 May 2014 19:44:24 +0000 Subject: PR 61310 Rewrite implementation of CTIME and FDATE intrinsics. 2014-05-26 Janne Blomqvist Backport from mainline PR libfortran/61310 * intrinsics.texi (CTIME): Remove mention of locale-dependent behavior. 2014-05-26 Janne Blomqvist 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210947 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 7 +++++ gcc/fortran/intrinsic.texi | 6 ++-- libgfortran/ChangeLog | 11 +++++++ libgfortran/intrinsics/ctime.c | 70 ++++++++++++++++++++++++++---------------- 4 files changed, 63 insertions(+), 31 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6694c595533..a66d0c9aad9 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2014-05-26 Janne Blomqvist + + Backport from mainline + PR libfortran/61310 + * intrinsics.texi (CTIME): Remove mention of locale-dependent + behavior. + 2014-05-24 Dominique d'Humieres Backport r195492 and r195815 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/libgfortran/ChangeLog b/libgfortran/ChangeLog index 75805d2bbcf..f013b298614 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,14 @@ +2014-05-26 Janne Blomqvist + + 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 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 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 -/* 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); } -- cgit v1.2.1 From 39d1e82d8053223313802bd7366c41c9fe849619 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 27 May 2014 00:16:37 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210952 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index e4b9ce0a24e..fdfdbff872e 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140526 +20140527 -- cgit v1.2.1 From 9633cb08c39512b4e27245b43d4a59862e1caf64 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Tue, 27 May 2014 20:39:22 +0000 Subject: * gnat.dg/aliasing1.adb (dg-final): Robustify pattern matching. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210985 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gnat.dg/aliasing1.adb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0c5aced904e..8ebcd8c6c6f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-05-27 Eric Botcazou + + * gnat.dg/aliasing1.adb (dg-final): Robustify pattern matching. + 2014-05-24 Dominique d'Humieres Backport r195492 and r195815 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" } } -- cgit v1.2.1 From 661ce797c361e6a929a305104c9d630f89d17387 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 28 May 2014 00:16:37 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@210991 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index fdfdbff872e..b3e46051812 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140527 +20140528 -- cgit v1.2.1 From a9ad134461dfa7898e0d61e01e45d0d5672b4f59 Mon Sep 17 00:00:00 2001 From: gjl Date: Wed, 28 May 2014 08:50:18 +0000 Subject: PR target/61044 * doc/extend.texi (Local Labels): Note that label differences are not supported for AVR. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211002 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/doc/extend.texi | 2 ++ 2 files changed, 8 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index db07f467319..4acd9e7536e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-05-28 Georg-Johann Lay + + PR target/61044 + * doc/extend.texi (Local Labels): Note that label differences are + not supported for AVR. + 2014-05-23 Richard Biener Backport from mainline 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 -- cgit v1.2.1 From 33f40c3bf57f0cd7fb249a9e71a57d4d087cc9b7 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 29 May 2014 00:16:29 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211038 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index b3e46051812..7b43bbd3451 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140528 +20140529 -- cgit v1.2.1 From b85f59c6ddb4ae1d968d49c9e1ba316bdf22cd26 Mon Sep 17 00:00:00 2001 From: redi Date: Thu, 29 May 2014 14:54:42 +0000 Subject: * include/tr2/bool_set: Use UTF-8 for accented characters. * scripts/run_doxygen: Handle Doxygen 1.8.x change. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211056 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 5 +++++ libstdc++-v3/include/tr2/bool_set | 2 +- libstdc++-v3/scripts/run_doxygen | 11 +++++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index fb49617b208..8a6cf386e30 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2014-05-29 Jonathan Wakely + + * include/tr2/bool_set: Use UTF-8 for accented characters. + * scripts/run_doxygen: Handle Doxygen 1.8.x change. + 2014-05-08 Joshua Gay 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 -- cgit v1.2.1 From 2fa4bdd36076b3b14b233a0a233ba9356501b671 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 30 May 2014 00:16:33 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211068 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 7b43bbd3451..8bd061f95e8 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140529 +20140530 -- cgit v1.2.1 From 1dfe5bba58800a3b7ac19c4d79ddcbd8cf8da305 Mon Sep 17 00:00:00 2001 From: jason Date: Fri, 30 May 2014 15:09:29 +0000 Subject: PR c++/56947 * pt.c (instantiate_decl): Don't defer instantiation of a nested function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211083 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/pt.c | 1 + gcc/testsuite/g++.dg/template/local8.C | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 gcc/testsuite/g++.dg/template/local8.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1ee383f8b09..e8afee66342 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-05-30 Jason Merrill + + PR c++/56947 + * pt.c (instantiate_decl): Don't defer instantiation of a nested + function. + 2014-05-07 Jakub Jelinek 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/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 >(); -- cgit v1.2.1 From 8a11b48745b900a9277f2af3986a8dd42cc83f8c Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 31 May 2014 00:16:35 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211098 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 8bd061f95e8..82310232cb0 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140530 +20140531 -- cgit v1.2.1 From 062e1c32fcdc79acc41d398049367865714ddf26 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 1 Jun 2014 00:16:42 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211107 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 82310232cb0..12e40507ce2 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140531 +20140601 -- cgit v1.2.1 From c32c1e77c5d18bbb5036628a2e430c17b36aed58 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 2 Jun 2014 00:16:40 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211122 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 12e40507ce2..19de908ce73 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140601 +20140602 -- cgit v1.2.1 From f760efeabdb7e0a8f17725c2d150a204ea6179a2 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 3 Jun 2014 00:16:31 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211154 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 19de908ce73..ea75eb021f5 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140602 +20140603 -- cgit v1.2.1 From 98e5e1a65533440ff3d37495ba1d1335a7a30a9a Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 4 Jun 2014 00:16:30 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211207 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ea75eb021f5..ed3d369f3e8 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140603 +20140604 -- cgit v1.2.1 From eac175edf0e6d48c33154202c1a8983b90c0a6ce Mon Sep 17 00:00:00 2001 From: rguenth Date: Wed, 4 Jun 2014 11:59:45 +0000 Subject: 2014-06-04 Richard Biener Backport from mainline 2013-05-13 Jakub Jelinek PR tree-optimization/57230 * tree-ssa-strlen.c (handle_char_store): Add missing integer_zerop check. * gcc.dg/strlenopt-23.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211225 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.dg/strlenopt-23.c | 15 +++++++++++++++ gcc/tree-ssa-strlen.c | 2 +- 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/strlenopt-23.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4acd9e7536e..e305bf1f3f1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-06-04 Richard Biener + + Backport from mainline + 2013-05-13 Jakub Jelinek + + PR tree-optimization/57230 + * tree-ssa-strlen.c (handle_char_store): Add missing integer_zerop + check. + 2014-05-28 Georg-Johann Lay PR target/61044 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8ebcd8c6c6f..62e9a63e011 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-06-04 Richard Biener + + Backport from mainline + 2013-05-13 Jakub Jelinek + + PR tree-optimization/57230 + * gcc.dg/strlenopt-23.c: New test. + 2014-05-27 Eric Botcazou * gnat.dg/aliasing1.adb (dg-final): Robustify pattern matching. 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/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); -- cgit v1.2.1 From 3c716526dad11a9cdac33b721c879a3bf9b6de69 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 5 Jun 2014 00:16:35 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211250 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index ed3d369f3e8..b58958238d8 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140604 +20140605 -- cgit v1.2.1 From 7944724dd29175c84890c506de64da06d9e3dd8b Mon Sep 17 00:00:00 2001 From: gccadmin Date: Fri, 6 Jun 2014 00:16:28 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211291 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index b58958238d8..59d4b922d65 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140605 +20140606 -- cgit v1.2.1 From 17b4e044109819d08342267d3394d17a01895f49 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sat, 7 Jun 2014 00:16:26 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211336 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 59d4b922d65..1f5f160fa32 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140606 +20140607 -- cgit v1.2.1 From 665a7fdace6e4b53bee5a5ca64c93aa82e6f7a7a Mon Sep 17 00:00:00 2001 From: gccadmin Date: Sun, 8 Jun 2014 00:16:20 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211348 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 1f5f160fa32..a665b4e0d1f 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140607 +20140608 -- cgit v1.2.1 From 0c7464dda6c743c43da22cd8ca0648e1f36593d2 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Mon, 9 Jun 2014 00:16:58 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211359 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index a665b4e0d1f..0f8b6c3458c 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140608 +20140609 -- cgit v1.2.1 From 563db6b8a38c516811e93e01957d345329b2e8f1 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Tue, 10 Jun 2014 00:16:41 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211390 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 0f8b6c3458c..05a7007ea83 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140609 +20140610 -- cgit v1.2.1 From b4cd9be5e678b32e5e42d10fbbe9a393009e15cd Mon Sep 17 00:00:00 2001 From: gccadmin Date: Wed, 11 Jun 2014 00:16:30 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211429 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 05a7007ea83..2fcefc759af 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140610 +20140611 -- cgit v1.2.1 From 165de32914e46f22f24b4fa72d7edf75fca1ae86 Mon Sep 17 00:00:00 2001 From: gccadmin Date: Thu, 12 Jun 2014 00:16:37 +0000 Subject: Daily bump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211484 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DATESTAMP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 2fcefc759af..e00a573aab2 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20140611 +20140612 -- cgit v1.2.1 From 178df4f3e4aa341b7dc8fea91a5bdacaeb7e0459 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:04:46 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211525 138bc75d-0d04-0410-961f-82ee72b054a4 --- libquadmath/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 0b81c6deb7e597e9cea3f607b44ef21877d2c2b1 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:04:52 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211526 138bc75d-0d04-0410-961f-82ee72b054a4 --- libdecnumber/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From eb8744be9c8a0ca70e613541f36ef46c7acb13c5 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:04:57 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211527 138bc75d-0d04-0410-961f-82ee72b054a4 --- contrib/regression/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From c20d2630c4ce2f660413855f62041950e6521675 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:05:02 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211528 138bc75d-0d04-0410-961f-82ee72b054a4 --- contrib/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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 Backport from mainline -- cgit v1.2.1 From 27c552ca5d92c4b924136002b839adcb05ba5953 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:05:07 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211529 138bc75d-0d04-0410-961f-82ee72b054a4 --- contrib/reghunt/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 25e64f86e71bad80f15de2cf61a240a7a88b1a29 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:05:13 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211531 138bc75d-0d04-0410-961f-82ee72b054a4 --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From bfac1a178b06153c329aa1cf3df91bea29c26a7d Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:05:18 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211532 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgfortran/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index f013b298614..bcc0237988a 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-05-26 Janne Blomqvist Backport from mainline -- cgit v1.2.1 From afdff6752844b3b4456fead855af7ee5af7186f4 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:05:23 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211533 138bc75d-0d04-0410-961f-82ee72b054a4 --- gnattools/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 918a804d25bb48d164f05be382bf9cd6b6401ffa Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:05:27 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211534 138bc75d-0d04-0410-961f-82ee72b054a4 --- intl/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 28935ec7121d1b34095a2b02f980eda45e159f06 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:05:33 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211535 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 8a6cf386e30..36c87cc1153 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-05-29 Jonathan Wakely * include/tr2/bool_set: Use UTF-8 for accented characters. -- cgit v1.2.1 From 781606904733db806c6f831f4a691cf66cd79171 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:05:37 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211536 138bc75d-0d04-0410-961f-82ee72b054a4 --- maintainer-scripts/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From bcb4f92984ea40dcdae48a74463772f94a3941c1 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:05:42 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211537 138bc75d-0d04-0410-961f-82ee72b054a4 --- libobjc/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From a76cbea5901e4885301205db975d9ace5538fc6b Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:05:48 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211538 138bc75d-0d04-0410-961f-82ee72b054a4 --- include/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 544d59f5e5b7bdf9fce02cb59725b9d4a8560bfa Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:05:53 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211539 138bc75d-0d04-0410-961f-82ee72b054a4 --- fixincludes/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From a61ee9c1168b2b4d8cc41703dd807a3004ce837a Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:05:57 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211540 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgomp/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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 * config/linux/futex.h (futex_wait): Get error value from errno. -- cgit v1.2.1 From f40f1608c86737c82b7670648504b0234cb53d17 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:06:02 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211541 138bc75d-0d04-0410-961f-82ee72b054a4 --- libitm/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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 * config/generic/asmcfi.h: Also check for -- cgit v1.2.1 From 1e5bc5d64a94cb82cba7d556b29bb2541f0cac8d Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:06:08 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211542 138bc75d-0d04-0410-961f-82ee72b054a4 --- boehm-gc/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 32dc71548f356fda7d528a2fbb9f6c405cf9167a Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:06:13 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211543 138bc75d-0d04-0410-961f-82ee72b054a4 --- libcpp/po/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 9e2794cdb415aea2f6050e84ebd4606c7468dcbf Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:06:19 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211544 138bc75d-0d04-0410-961f-82ee72b054a4 --- libcpp/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 8394f696df526ead62eb2e2d7a2adf804a214f8f Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:06:25 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211545 138bc75d-0d04-0410-961f-82ee72b054a4 --- libada/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From b0a3a0444dbef53ae2528249e49040079e155133 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:06:30 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211546 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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 * java/lang/natObject.cc (_Jv_MonitorEnter): Add missing parenthesis -- cgit v1.2.1 From 03e1d8ba66d05b6d000ad7d7605e7b4451f13ebc Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:06:35 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211547 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/classpath/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 74788677d79d0bc1709b34b60f1193302d153faf Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:06:42 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211548 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/libltdl/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 908078e769f33f2a9e2bdfc872d008dae6afc2ad Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:06:47 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211549 138bc75d-0d04-0410-961f-82ee72b054a4 --- lto-plugin/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From aa71b5d382cac5489ff35713716fa0059e798a7a Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:06:52 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211550 138bc75d-0d04-0410-961f-82ee72b054a4 --- zlib/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From d4d417b9a74d72b9721c276e6293df83df7b9922 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:06:57 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211551 138bc75d-0d04-0410-961f-82ee72b054a4 --- libffi/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 9e1514f0f8413c0de6487da2db343848bf76f334 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:07:02 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211552 138bc75d-0d04-0410-961f-82ee72b054a4 --- libiberty/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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 Backport from mainline: -- cgit v1.2.1 From 4c3d4c7cd60b42f4b2e6fd8bf5673e050d252a9b Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:07:09 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211553 138bc75d-0d04-0410-961f-82ee72b054a4 --- libmudflap/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 013b3e6d4af44f79c95993c857ea6110ca56d239 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:07:13 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211554 138bc75d-0d04-0410-961f-82ee72b054a4 --- libssp/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 378332d2f7fe5ea3674205f2f8e087ec81e0d4e2 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:07:18 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211555 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgcc/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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 * config.host (v850*-*-*): Add to tmake_file instead of resetting it. -- cgit v1.2.1 From 12c3af95f77c27efa6793c061657968ea341a885 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:07:23 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211556 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgcc/config/libbid/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From fb930ce6720c736270668319411d985c95989cb2 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:07:29 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211557 138bc75d-0d04-0410-961f-82ee72b054a4 --- config/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From 40406c576b16b3f81e3ddb0f6a3c2befce7f249c Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:07:34 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211558 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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 PR ada/60703 -- cgit v1.2.1 From cc0ff9de3f76124393c4594d332fb5b508b0a3bc Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:07:40 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211559 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/java/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From fa25c466567a5c96304236a944f43dce82300dcd Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:07:45 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211561 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/po/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From b84b42a9c581128a110098f7a7502875816e1bbf Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:07:50 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211562 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e305bf1f3f1..db5c5f1df45 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-06-04 Richard Biener Backport from mainline -- cgit v1.2.1 From f20b943fbcfacdc527ab24e61f1b9a949d859bab Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:07:55 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211563 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/c-family/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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 Backport from mainline -- cgit v1.2.1 From 8a53e014b29e85042c12a0e199df20d7082bfdd6 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:08:01 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211564 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 62e9a63e011..46e4621a50b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-06-04 Richard Biener Backport from mainline -- cgit v1.2.1 From b8f0ef6996fb4b3439e98a30f8a0e66a743d5021 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:08:06 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211565 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/lto/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From f111cc7e825ef503a85848359e3f4719c61796d4 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:08:12 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211566 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a66d0c9aad9..c08002a21dd 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-05-26 Janne Blomqvist Backport from mainline -- cgit v1.2.1 From b120e0a747608876d5a5ced0f4ed55ef05189c93 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:08:16 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211567 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/go/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From db5a095874341f078a09962e23a0fef6bbdd089c Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:08:21 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211568 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/objc/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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 Backport from mainline -- cgit v1.2.1 From 5f2d2f0b85f0625ae5280bc8db7d5caba0f80241 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:08:26 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211569 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e8afee66342..8cdcfb471dc 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2014-05-30 Jason Merrill PR c++/56947 -- cgit v1.2.1 From 66cf09ff1163ae7d3975fc7075252209045b1317 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:08:31 +0000 Subject: Mark ChangeLog git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211570 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/objcp/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) 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. -- cgit v1.2.1 From ae10eb82fe34c18640ad65c2ab94ffc53f349315 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 12 Jun 2014 12:08:36 +0000 Subject: Mark as release git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@211571 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/DEV-PHASE | 1 - 1 file changed, 1 deletion(-) 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 -- cgit v1.2.1