https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111468
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot
gnu.org
Blocks| |101057
Version|unknown |14.0
Status|NEW |ASSIGNED
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hmm. The "closest" we have is
static c_expr
c_parser_gimple_binary_expression (gimple_parser &parser)
{
...
case CPP_NAME:
{
tree id = c_parser_peek_token (parser)->value;
if (strcmp (IDENTIFIER_POINTER (id), "__MULT_HIGHPART") == 0)
{
code = MULT_HIGHPART_EXPR;
we can support the u== syntax or lean on the above and go with __UNEQ and
friends. I'd probably go with __UNEQ.
diff --git a/gcc/c/gimple-parser.cc b/gcc/c/gimple-parser.cc
index cc3a8899d97..faf2def599f 100644
--- a/gcc/c/gimple-parser.cc
+++ b/gcc/c/gimple-parser.cc
@@ -1013,6 +1013,12 @@ c_parser_gimple_binary_expression (gimple_parser
&parser)
code = MULT_HIGHPART_EXPR;
break;
}
+ else if (strcmp (IDENTIFIER_POINTER (id), "__UNEQ") == 0)
+ {
+ code = UNEQ_EXPR;
+ ret_type = truth_type_for (TREE_TYPE (lhs.value));
+ break;
+ }
}
/* Fallthru. */
default:
and
void stuff();
void __GIMPLE (ssa,startwith("threadfull1"))
foo (float a, float b, int cond)
{
float x;
_Bool _7;
__BB(2):
if (cond_3(D) != 0)
goto __BB4;
else
goto __BB3;
__BB(3):
goto __BB4;
__BB(4):
x_1 = __PHI (__BB2: a_5(D), __BB3: b_4(D));
_7 = x_1 __UNEQ a_5(D);
if (_7 != _Literal (_Bool) 0)
goto __BB5;
else
goto __BB6;
__BB(5):
stuff ();
goto __BB6;
__BB(6):
return;
}
Referenced Bugs:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101057
[Bug 101057] [gimplefe] GIMPLE frontend issues