TRUTH_ORIF_EXPR

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux