diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2018-09-27 08:33:41 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2018-09-27 08:33:41 +0000 |
commit | 0798984a5a59e9162596db04cbf9eacc8541da7f (patch) | |
tree | 442d7e3a69967678f12e11b44dfba8cae677444d /gcc/cp | |
parent | 291a9e980ef059c46476212e4b3e88fb07e11b00 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 7 |
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); |