diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2018-02-08 09:06:33 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2018-02-08 09:06:33 +0000 |
commit | 66a90e86694bdcfc674bfa5951d10088fc5b41a8 (patch) | |
tree | dab98eb6e79d3bf8ebe3ae7cfc624718b2f0fb30 | |
parent | f986f7e4bbeba1a8478ccc88aebc34d3eb97286b (diff) | |
download | gcc-66a90e86694bdcfc674bfa5951d10088fc5b41a8.zip gcc-66a90e86694bdcfc674bfa5951d10088fc5b41a8.tar.gz gcc-66a90e86694bdcfc674bfa5951d10088fc5b41a8.tar.bz2 |
re PR c++/83204 (c++ -std=c++14 ICE in maybe_undo_parenthesized_ref, at cp/semantics.c:1694)
/cp
2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/83204
* pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
/testsuite
2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/83204
* g++.dg/cpp0x/lambda/lambda-ice25.C: New.
From-SVN: r257478
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/pt.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice25.C | 27 |
4 files changed, 39 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0b710e9..b898ba1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2018-02-08 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/83204 + * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF. + 2018-02-07 Jakub Jelinek <jakub@redhat.com> PR c++/84082 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 0d9e153..a9e4770 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -17224,8 +17224,8 @@ tsubst_copy_and_build (tree t, r = build_x_indirect_ref (input_location, r, RO_UNARY_STAR, complain|decltype_flag); - if (TREE_CODE (r) == INDIRECT_REF) - REF_PARENTHESIZED_P (r) = REF_PARENTHESIZED_P (t); + if (REF_PARENTHESIZED_P (t)) + r = force_paren_expr (r); RETURN (r); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 22ec5d1..16f2b1a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-08 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/83204 + * g++.dg/cpp0x/lambda/lambda-ice25.C: New. + 2018-02-07 Will Schmidt <will_schmidt@vnet.ibm.com> * gcc.target/powerpc/vsxcopy.c: Update scan-assembler stanzas. diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice25.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice25.C new file mode 100644 index 0000000..1a33fb1 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice25.C @@ -0,0 +1,27 @@ +// PR c++/83204 +// { dg-do compile { target c++11 } } + +int rand(); + +template<typename T> +struct s +{ + int count() { return rand(); } +}; + +template<typename v> +void f(s<v> a) +{ + int const x = a.count(); + int r = 0; + auto l = [&](int& r) + { + for(int y = 0, yend = (x); y < yend; ++y) + { + r += y; + } + }; + l(r); +} + +template void f(s<float>); |