diff options
author | Marek Polacek <polacek@redhat.com> | 2018-06-20 15:46:02 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2018-06-20 15:46:02 +0000 |
commit | e28fadbc0639d60fdf8e3f32fad7020b58bb5d69 (patch) | |
tree | 6452ad18dcdfa0fcc5516221c57102586cd7a1af /gcc | |
parent | 125fe9abf3f205bbc2c36fbcb981b81b522466ca (diff) | |
download | gcc-e28fadbc0639d60fdf8e3f32fad7020b58bb5d69.zip gcc-e28fadbc0639d60fdf8e3f32fad7020b58bb5d69.tar.gz gcc-e28fadbc0639d60fdf8e3f32fad7020b58bb5d69.tar.bz2 |
re PR c++/86240 (ice: unexpected expression absu_expr)
PR c++/86240
* constexpr.c (cxx_eval_constant_expression): Handle ABSU_EXPR.
(fold_simple_1): Likewise.
* error.c (dump_expr): Likewise.
* g++.dg/pr86240.C: New test.
From-SVN: r261809
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/constexpr.c | 2 | ||||
-rw-r--r-- | gcc/cp/error.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/pr86240.C | 12 |
5 files changed, 27 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 822a18a..72cd388 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2018-06-20 Marek Polacek <polacek@redhat.com> + + PR c++/86240 + * constexpr.c (cxx_eval_constant_expression): Handle ABSU_EXPR. + (fold_simple_1): Likewise. + * error.c (dump_expr): Likewise. + 2018-06-20 Nathan Sidwell <nathan@acm.org> PR c++/85634 diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index 216eecd..44f3093 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -4412,6 +4412,7 @@ cxx_eval_constant_expression (const constexpr_ctx *ctx, tree t, case FLOAT_EXPR: case NEGATE_EXPR: case ABS_EXPR: + case ABSU_EXPR: case BIT_NOT_EXPR: case TRUTH_NOT_EXPR: case FIXED_CONVERT_EXPR: @@ -5056,6 +5057,7 @@ fold_simple_1 (tree t) return fold_sizeof_expr (t); case ABS_EXPR: + case ABSU_EXPR: case CONJ_EXPR: case REALPART_EXPR: case IMAGPART_EXPR: diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 6a26113..b0d8e32 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -2764,6 +2764,7 @@ dump_expr (cxx_pretty_printer *pp, tree t, int flags) case VEC_DELETE_EXPR: case MODOP_EXPR: case ABS_EXPR: + case ABSU_EXPR: case CONJ_EXPR: case VECTOR_CST: case FIXED_CST: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ce89b33..36305cb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-06-20 Marek Polacek <polacek@redhat.com> + + PR c++/86240 + * g++.dg/pr86240.C: New test. + 2018-06-20 Jakub Jelinek <jakub@redhat.com> PR debug/86194 diff --git a/gcc/testsuite/g++.dg/pr86240.C b/gcc/testsuite/g++.dg/pr86240.C new file mode 100644 index 0000000..16ae89c --- /dev/null +++ b/gcc/testsuite/g++.dg/pr86240.C @@ -0,0 +1,12 @@ +// { dg-do compile } + +extern "C" int abs (int); +struct a { + short b; +} e; +short c; +bool +foo () +{ + return abs(c) >= e.b; +} |