From eab1f16915926a935c4dcfce3f1026c5e80100ff Mon Sep 17 00:00:00 2001 From: Prathamesh Kulkarni Date: Sun, 19 Feb 2017 09:06:30 +0000 Subject: gimple-pretty-print.c (dump_ternary_rhs): Adjust gimple dump format for FMA_EXPR. 2017-02-19 Prathamesh Kulkarni * gimple-pretty-print.c (dump_ternary_rhs): Adjust gimple dump format for FMA_EXPR. c/ * gimple-parser.c (c_parser_gimple_postfix_expression): Handle FMA_EXPR. testsuite/ * gcc.dg/gimplefe-26.c: New test. From-SVN: r245570 --- gcc/c/gimple-parser.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'gcc/c/gimple-parser.c') diff --git a/gcc/c/gimple-parser.c b/gcc/c/gimple-parser.c index d959877..31d0a08 100644 --- a/gcc/c/gimple-parser.c +++ b/gcc/c/gimple-parser.c @@ -856,6 +856,28 @@ c_parser_gimple_postfix_expression (c_parser *parser) expr.value = fold_convert (type, val); return expr; } + else if (strcmp (IDENTIFIER_POINTER (id), "__FMA") == 0) + { + c_parser_consume_token (parser); + auto_vec args; + + if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + c_parser_gimple_expr_list (parser, &args); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + } + if (args.length () != 3) + { + error_at (loc, "invalid number of operands to __FMA"); + expr.value = error_mark_node; + return expr; + } + expr.value = build3_loc (loc, FMA_EXPR, TREE_TYPE (args[0]), + args[0], args[1], args[2]); + return expr; + } + /* SSA name. */ unsigned version, ver_offset; if (! lookup_name (id) -- cgit v1.1