gccint: GIMPLE API

1 
1 26.1 GIMPLE API
1 ===============
1 
1  -- GIMPLE function: tree gimple_simplify (enum tree_code, tree, tree,
1           gimple_seq *, tree (*)(tree))
1  -- GIMPLE function: tree gimple_simplify (enum tree_code, tree, tree,
1           tree, gimple_seq *, tree (*)(tree))
1  -- GIMPLE function: tree gimple_simplify (enum tree_code, tree, tree,
1           tree, tree, gimple_seq *, tree (*)(tree))
1  -- GIMPLE function: tree gimple_simplify (enum built_in_function, tree,
1           tree, gimple_seq *, tree (*)(tree))
1  -- GIMPLE function: tree gimple_simplify (enum built_in_function, tree,
1           tree, tree, gimple_seq *, tree (*)(tree))
1  -- GIMPLE function: tree gimple_simplify (enum built_in_function, tree,
1           tree, tree, tree, gimple_seq *, tree (*)(tree))
1      The main GIMPLE API entry to the expression simplifications
1      mimicing that of the GENERIC fold_{unary,binary,ternary} functions.
1 
1  thus providing n-ary overloads for operation or function.  The
1 additional arguments are a gimple_seq where built statements are
1 inserted on (if 'NULL' then simplifications requiring new statements are
1 not performed) and a valueization hook that can be used to tie
1 simplifications to a SSA lattice.
1 
1  In addition to those APIs 'fold_stmt' is overloaded with a valueization
1 hook:
1 
1  -- bool: fold_stmt (gimple_stmt_iterator *, tree (*)(tree));
1 
1  Ontop of these a 'fold_buildN'-like API for GIMPLE is introduced:
1 
1  -- GIMPLE function: tree gimple_build (gimple_seq *, location_t, enum
1           tree_code, tree, tree, tree (*valueize) (tree) = NULL);
1  -- GIMPLE function: tree gimple_build (gimple_seq *, location_t, enum
1           tree_code, tree, tree, tree, tree (*valueize) (tree) = NULL);
1  -- GIMPLE function: tree gimple_build (gimple_seq *, location_t, enum
1           tree_code, tree, tree, tree, tree, tree (*valueize) (tree) =
1           NULL);
1  -- GIMPLE function: tree gimple_build (gimple_seq *, location_t, enum
1           built_in_function, tree, tree, tree (*valueize) (tree) =
1           NULL);
1  -- GIMPLE function: tree gimple_build (gimple_seq *, location_t, enum
1           built_in_function, tree, tree, tree, tree (*valueize) (tree) =
1           NULL);
1  -- GIMPLE function: tree gimple_build (gimple_seq *, location_t, enum
1           built_in_function, tree, tree, tree, tree, tree (*valueize)
1           (tree) = NULL);
1  -- GIMPLE function: tree gimple_convert (gimple_seq *, location_t,
1           tree, tree);
1 
1  which is supposed to replace 'force_gimple_operand (fold_buildN (...),
1 ...)' and calls to 'fold_convert'.  Overloads without the 'location_t'
1 argument exist.  Built statements are inserted on the provided sequence
1 and simplification is performed using the optional valueization hook.
1