aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2016-11-27 23:00:36 -0500
committerJason Merrill <jason@gcc.gnu.org>2016-11-27 23:00:36 -0500
commitf9438bbb2e36eea2a61d09ee268704aff4f15d81 (patch)
treeb564ea785bf851834a9df29dcee1e601aa52aa45
parentc190974fe5d7eb10db856939312e1c9b1e6f7775 (diff)
downloadgcc-f9438bbb2e36eea2a61d09ee268704aff4f15d81.zip
gcc-f9438bbb2e36eea2a61d09ee268704aff4f15d81.tar.gz
gcc-f9438bbb2e36eea2a61d09ee268704aff4f15d81.tar.bz2
PR c++/77907 - static init and PMF
* constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert. From-SVN: r242906
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/constexpr.c2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr77907.C3
3 files changed, 8 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 20b356f..c6bc06f 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2016-11-27 Jason Merrill <jason@redhat.com>
+
+ PR c++/77907
+ * constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert.
+
2016-11-24 Martin Liska <mliska@suse.cz>
PR bootstrap/78493
diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c
index 40d1e7b..f93dd47 100644
--- a/gcc/cp/constexpr.c
+++ b/gcc/cp/constexpr.c
@@ -4226,7 +4226,7 @@ cxx_eval_constant_expression (const constexpr_ctx *ctx, tree t,
{
if (same_type_ignoring_top_level_qualifiers_p (type,
TREE_TYPE (op)))
- STRIP_NOPS (t);
+ return cp_fold_convert (type, op);
else
{
if (!ctx->quiet)
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr77907.C b/gcc/testsuite/g++.dg/cpp0x/pr77907.C
index d46c707..8128e8c 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr77907.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr77907.C
@@ -1,6 +1,7 @@
// PR c++/77907
// { dg-do run { target c++11 } }
-// { dg-options "-O2" }
+// { dg-options "-O2 -save-temps" }
+// { dg-final { scan-assembler-not "static_initialization" } }
struct A {
int foo () { return 1; }