This adds support for rotate left/right to the GIMPLE front-end
via __ROTATE_LEFT/__ROTATE_RIGHT oeprators.
PR c/119432
gcc/c/ChangeLog:
* gimple-parser.cc (gimple_binary_identifier_code): Add
__ROTATE_LEFT and __ROTATE_RIGHT.
gcc/ChangeLog:
* tree-pretty-print.cc (op_symbol_code): For LROTATE_EXPR,
output __ROTATE_LEFT for gimple.
For RROTATE_EXPR output __ROTATE_RIGHT for gimple.
gcc/testsuite/ChangeLog:
* gcc.dg/gimplefe-57.c: New test.
Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
{"__FLOOR_MOD", FLOOR_MOD_EXPR},
{"__ROUND_MOD", ROUND_MOD_EXPR},
{"__CEIL_MOD", CEIL_MOD_EXPR},
+ {"__ROTATE_LEFT", LROTATE_EXPR},
+ {"__ROTATE_RIGHT", RROTATE_EXPR},
};
/* Parse gimple binary expr.
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-fgimple" } */
+
+int __GIMPLE
+foo (int a, int b)
+{
+ int tem;
+ tem = a __ROTATE_LEFT b;
+ tem = tem __ROTATE_RIGHT b;
+ return tem;
+}
return ">>";
case LROTATE_EXPR:
- return "r<<";
+ return (flags & TDF_GIMPLE) ? "__ROTATE_LEFT" : "r<<";
case RROTATE_EXPR:
- return "r>>";
+ return (flags & TDF_GIMPLE) ? "__ROTATE_RIGHT" : "r>>";
case WIDEN_LSHIFT_EXPR:
return "w<<";