diff options
author | Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> | 2017-02-14 09:21:01 +0000 |
---|---|---|
committer | Prathamesh Kulkarni <prathamesh3492@gcc.gnu.org> | 2017-02-14 09:21:01 +0000 |
commit | 1be33173de27a37c1efdb814fd26e421f667579a (patch) | |
tree | 213d4e9207ad6056ec9b8c60499b0721b7840878 /gcc/c/gimple-parser.c | |
parent | 6a8b140878bc20952391e854529721ea1e6dd546 (diff) | |
download | gcc-1be33173de27a37c1efdb814fd26e421f667579a.zip gcc-1be33173de27a37c1efdb814fd26e421f667579a.tar.gz gcc-1be33173de27a37c1efdb814fd26e421f667579a.tar.bz2 |
gimple-pretty-print.c (dump_unary_rhs): Adjust dump format for ABS_EXPR for gimple dump.
2017-02-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
* gimple-pretty-print.c (dump_unary_rhs): Adjust dump format for
ABS_EXPR for gimple dump.
c/
* gimpler-parser.c (c_parser_gimple_statement): Handle ABS_EXPR.
(c_parser_gimple_unary_expression): Likewise.
testsuite/
* gcc.dg/gimplefe-25.c: New test.
From-SVN: r245422
Diffstat (limited to 'gcc/c/gimple-parser.c')
-rw-r--r-- | gcc/c/gimple-parser.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/gcc/c/gimple-parser.c b/gcc/c/gimple-parser.c index 711cb3d..d959877 100644 --- a/gcc/c/gimple-parser.c +++ b/gcc/c/gimple-parser.c @@ -325,6 +325,13 @@ c_parser_gimple_statement (c_parser *parser, gimple_seq *seq) /* Unary expression. */ switch (c_parser_peek_token (parser)->type) { + case CPP_NAME: + { + tree id = c_parser_peek_token (parser)->value; + if (strcmp (IDENTIFIER_POINTER (id), "__ABS") == 0) + goto build_unary_expr; + break; + } case CPP_KEYWORD: if (c_parser_peek_token (parser)->keyword != RID_REALPART && c_parser_peek_token (parser)->keyword != RID_IMAGPART) @@ -336,6 +343,7 @@ c_parser_gimple_statement (c_parser *parser, gimple_seq *seq) case CPP_COMPL: case CPP_NOT: case CPP_MULT: /* pointer deref */ + build_unary_expr: rhs = c_parser_gimple_unary_expression (parser); if (rhs.value != error_mark_node) { @@ -536,7 +544,7 @@ c_parser_gimple_binary_expression (c_parser *parser) unary-operator gimple-postfix-expression unary-operator: one of - & * + - ~ + & * + - ~ abs_expr */ static c_expr @@ -600,6 +608,18 @@ c_parser_gimple_unary_expression (c_parser *parser) default: return c_parser_gimple_postfix_expression (parser); } + case CPP_NAME: + { + tree id = c_parser_peek_token (parser)->value; + if (strcmp (IDENTIFIER_POINTER (id), "__ABS") == 0) + { + c_parser_consume_token (parser); + op = c_parser_gimple_postfix_expression (parser); + return parser_build_unary_op (op_loc, ABS_EXPR, op); + } + else + return c_parser_gimple_postfix_expression (parser); + } default: return c_parser_gimple_postfix_expression (parser); } |