aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-03-23 21:54:01 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-03-23 21:54:01 +0100
commitc1e7c3f2015247369b040a3ab24e85d4d68f51f4 (patch)
tree8c62f65ddb392d2bbbc1fe7f08ce9b0e93e0c573
parenta426543a1f31388186edb92036a87032c66bcd17 (diff)
downloadgcc-c1e7c3f2015247369b040a3ab24e85d4d68f51f4.zip
gcc-c1e7c3f2015247369b040a3ab24e85d4d68f51f4.tar.gz
gcc-c1e7c3f2015247369b040a3ab24e85d4d68f51f4.tar.bz2
re PR c++/84942 (internal compiler error: in fold_convert_const_int_from_real, at fold-const.c:2011)
PR c++/84942 * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace cp_build_unary_op call with gcc_unreachable (). * g++.dg/cpp1y/pr84942.C: New test. From-SVN: r258821
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/pr84942.C6
4 files changed, 18 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ddda091..619161b 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2018-03-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84942
+ * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
+ cp_build_unary_op call with gcc_unreachable ().
+
2018-03-23 Marek Polacek <polacek@redhat.com>
PR c++/85045
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 5293c2b..ef531b6 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -17514,8 +17514,7 @@ tsubst_copy_and_build (tree t,
complain|decltype_flag));
case FIX_TRUNC_EXPR:
- RETURN (cp_build_unary_op (FIX_TRUNC_EXPR, RECUR (TREE_OPERAND (t, 0)),
- false, complain));
+ gcc_unreachable ();
case ADDR_EXPR:
op1 = TREE_OPERAND (t, 0);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 503ddaa..419bd56 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-03-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84942
+ * g++.dg/cpp1y/pr84942.C: New test.
+
2018-03-23 Vladimir Makarov <vmakarov@redhat.com>
PR inline-asm/85030
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr84942.C b/gcc/testsuite/g++.dg/cpp1y/pr84942.C
new file mode 100644
index 0000000..6e2a8ac
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/pr84942.C
@@ -0,0 +1,6 @@
+// PR c++/84942
+// { dg-do compile { target c++14 } }
+// { dg-options "-w" }
+
+int a(__attribute__((b((int)__builtin_inf() * 1ULL / auto))));
+// { dg-error "expected primary-expression before" "" { target *-*-* } .-1 }