From ab785f9a3901ca29710592a2d5480b5a44328bf2 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 17 Apr 2024 11:22:00 +0200 Subject: Support {CEIL,FLOOR,ROUND}_{DIV,MOD}_EXPR and EXACT_DIV_EXPR in GIMPLE FE The following adds support for the various division and modulo operators to the GIMPLE frontend via __{CEIL,FLOOR,ROUND}_{DIV,MOD} and __EXACT_DIV operators. gcc/c/ * gimple-parser.cc (c_parser_gimple_binary_expression): Parse __{CEIL,FLOOR,ROUND}_{DIV,MOD} and __EXACT_DIV. gcc/testsuite/ * gcc.dg/gimplefe-53.c: New testcase. --- gcc/c/gimple-parser.cc | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'gcc/c/gimple-parser.cc') diff --git a/gcc/c/gimple-parser.cc b/gcc/c/gimple-parser.cc index 2dac41a..d156d83 100644 --- a/gcc/c/gimple-parser.cc +++ b/gcc/c/gimple-parser.cc @@ -1055,6 +1055,41 @@ c_parser_gimple_binary_expression (gimple_parser &parser, tree ret_type) code = LTGT_EXPR; break; } + else if (strcmp (IDENTIFIER_POINTER (id), "__FLOOR_DIV") == 0) + { + code = FLOOR_DIV_EXPR; + break; + } + else if (strcmp (IDENTIFIER_POINTER (id), "__ROUND_DIV") == 0) + { + code = ROUND_DIV_EXPR; + break; + } + else if (strcmp (IDENTIFIER_POINTER (id), "__EXACT_DIV") == 0) + { + code = EXACT_DIV_EXPR; + break; + } + else if (strcmp (IDENTIFIER_POINTER (id), "__CEIL_DIV") == 0) + { + code = CEIL_DIV_EXPR; + break; + } + else if (strcmp (IDENTIFIER_POINTER (id), "__FLOOR_MOD") == 0) + { + code = FLOOR_MOD_EXPR; + break; + } + else if (strcmp (IDENTIFIER_POINTER (id), "__ROUND_MOD") == 0) + { + code = ROUND_MOD_EXPR; + break; + } + else if (strcmp (IDENTIFIER_POINTER (id), "__CEIL_MOD") == 0) + { + code = CEIL_MOD_EXPR; + break; + } } /* Fallthru. */ default: -- cgit v1.1