aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2018-09-27 08:33:41 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2018-09-27 08:33:41 +0000
commit0798984a5a59e9162596db04cbf9eacc8541da7f (patch)
tree442d7e3a69967678f12e11b44dfba8cae677444d /gcc/cp
parent291a9e980ef059c46476212e4b3e88fb07e11b00 (diff)
downloadgcc-0798984a5a59e9162596db04cbf9eacc8541da7f.zip
gcc-0798984a5a59e9162596db04cbf9eacc8541da7f.tar.gz
gcc-0798984a5a59e9162596db04cbf9eacc8541da7f.tar.bz2
re PR c++/84940 (internal compiler error: in build_value_init_noctor, at cp/init.c:465)
/cp 2018-09-27 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84940 * semantics.c (finish_unary_op_expr): Check return value of build_x_unary_op for error_mark_node. /testsuite 2018-09-27 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84940 * g++.dg/expr/unary4.C: New. From-SVN: r264664
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/semantics.c7
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 672626c..a28b615 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2018-09-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84940
+ * semantics.c (finish_unary_op_expr): Check return value of
+ build_x_unary_op for error_mark_node.
+
2018-09-25 Jakub Jelinek <jakub@redhat.com>
PR c++/87398
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index bf3c63a..c7f53d1 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -2727,13 +2727,14 @@ finish_unary_op_expr (location_t op_loc, enum tree_code code, cp_expr expr,
/* TODO: build_x_unary_op doesn't always honor the location. */
result.set_location (combined_loc);
- tree result_ovl, expr_ovl;
+ if (result == error_mark_node)
+ return result;
if (!(complain & tf_warning))
return result;
- result_ovl = result;
- expr_ovl = expr;
+ tree result_ovl = result;
+ tree expr_ovl = expr;
if (!processing_template_decl)
expr_ovl = cp_fully_fold (expr_ovl);