TRUTH_ORIF_EXPR
charfi asma
charfiasma@yahoo.fr
Mon Jul 4 15:03:00 GMT 2011
I try to generate the GIMPLE form corresponding to
if (var == 1 || var == 5)
goto L1;
else
goto L2;
I satarted by generating GIMPLE for this code
if (var == 1)
goto L1;
else
goto L2;
this is my GENERIC tree codes used to generate this gimple :
//GENERIC:
....
tree VAR = build_decl(BUILTINS_LOCATION, VAR_DECL, get_identifier("var"),
integer_type_node);
tree __if_cond = build2(EQ_EXPR, TREE_TYPE(VAR), VAR,
build_int_cst(integer_type_node, 1));
tree __if_stmt = build3(COND_EXPR, void_type_node, __if_cond, goto_L1, goto_L2);
....
//GIMPLE:
<unnamed-signed:32> var;
....
gimple_cond <eq_expr, var, 1, L1, L2>
...
to use the || operand, I tried to use the TRUTH_OR_IF_EXPR like this
tree __if_cond_1 = build2(TRUTH_ORIF_EXPR, TREE_TYPE(VAR),
build_int_cst(integer_type_node, 1), build_int_cst(integer_type_node, 5));
tree __if_stmt1 = build3(COND_EXPR, void_type_node, __if_cond_1, goto_L1,
goto_L12);
but this did not work, cause I do not specify the variable to test (VAR):
TRUTH_ORIF_EXPR has only 2 operands that represent the values (1 and 5).
did so use before this TREE CODE or has an idea how we should use it ?
thank you very much
ASMA
More information about the Gcc-help
mailing list