diff options
author | Jason Merrill <jason@redhat.com> | 2016-11-13 01:52:15 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2016-11-13 01:52:15 -0500 |
commit | dc8d2d00c52e29a4d68576cecdcc161484123195 (patch) | |
tree | 9e09986206c795626d4a8b16ecfb1b2931920910 /gcc | |
parent | ba1e69c03f96f8f9f0e0d4218b168bf975a83cbb (diff) | |
download | gcc-dc8d2d00c52e29a4d68576cecdcc161484123195.zip gcc-dc8d2d00c52e29a4d68576cecdcc161484123195.tar.gz gcc-dc8d2d00c52e29a4d68576cecdcc161484123195.tar.bz2 |
Fix constexpr lvalue use of __real and __imag.
* constexpr.c (potential_constant_expression_1): REALPART_EXPR and
IMAGPART_EXPR can be lvalues.
From-SVN: r242349
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/constexpr.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/constexpr-complex2.C | 5 |
3 files changed, 10 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 60186ee..b2195e4 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2016-11-12 Jason Merrill <jason@redhat.com> + * constexpr.c (potential_constant_expression_1): REALPART_EXPR and + IMAGPART_EXPR can be lvalues. + DR 374 PR c++/56840 * pt.c (check_specialization_namespace): Allow any enclosing diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index f75f0b0..739e902 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -5105,6 +5105,8 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, #endif return RECUR (t, any); + case REALPART_EXPR: + case IMAGPART_EXPR: case COMPONENT_REF: case BIT_FIELD_REF: case ARROW_EXPR: @@ -5276,8 +5278,6 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, return true; /* fall through. */ - case REALPART_EXPR: - case IMAGPART_EXPR: case CONJ_EXPR: case SAVE_EXPR: case FIX_TRUNC_EXPR: diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-complex2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-complex2.C new file mode 100644 index 0000000..9a9291b --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-complex2.C @@ -0,0 +1,5 @@ +// { dg-do compile { target c++11 } } +// { dg-options "" } + +static _Complex int i; +static_assert (&__imag i == &__imag i, ""); |