diff options
Diffstat (limited to 'gcc/gimple-fold.h')
-rw-r--r-- | gcc/gimple-fold.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/gcc/gimple-fold.h b/gcc/gimple-fold.h index b55a3ef..93814ca 100644 --- a/gcc/gimple-fold.h +++ b/gcc/gimple-fold.h @@ -45,6 +45,65 @@ extern tree gimple_fold_indirect_ref (tree); extern bool arith_code_with_undefined_signed_overflow (tree_code); extern gimple_seq rewrite_to_defined_overflow (gimple); +/* gimple_build, functionally matching fold_buildN, outputs stmts + int the provided sequence, matching and simplifying them on-the-fly. + Supposed to replace force_gimple_operand (fold_buildN (...), ...). */ +extern tree gimple_build (gimple_seq *, location_t, + enum tree_code, tree, tree, + tree (*valueize) (tree) = NULL); +inline tree +gimple_build (gimple_seq *seq, + enum tree_code code, tree type, tree op0) +{ + return gimple_build (seq, UNKNOWN_LOCATION, code, type, op0); +} +extern tree gimple_build (gimple_seq *, location_t, + enum tree_code, tree, tree, tree, + tree (*valueize) (tree) = NULL); +inline tree +gimple_build (gimple_seq *seq, + enum tree_code code, tree type, tree op0, tree op1) +{ + return gimple_build (seq, UNKNOWN_LOCATION, code, type, op0, op1); +} +extern tree gimple_build (gimple_seq *, location_t, + enum tree_code, tree, tree, tree, tree, + tree (*valueize) (tree) = NULL); +inline tree +gimple_build (gimple_seq *seq, + enum tree_code code, tree type, tree op0, tree op1, tree op2) +{ + return gimple_build (seq, UNKNOWN_LOCATION, code, type, op0, op1, op2); +} +extern tree gimple_build (gimple_seq *, location_t, + enum built_in_function, tree, tree, + tree (*valueize) (tree) = NULL); +inline tree +gimple_build (gimple_seq *seq, + enum built_in_function fn, tree type, tree arg0) +{ + return gimple_build (seq, UNKNOWN_LOCATION, fn, type, arg0); +} +extern tree gimple_build (gimple_seq *, location_t, + enum built_in_function, tree, tree, tree, + tree (*valueize) (tree) = NULL); +inline tree +gimple_build (gimple_seq *seq, + enum built_in_function fn, tree type, tree arg0, tree arg1) +{ + return gimple_build (seq, UNKNOWN_LOCATION, fn, type, arg0, arg1); +} +extern tree gimple_build (gimple_seq *, location_t, + enum built_in_function, tree, tree, tree, tree, + tree (*valueize) (tree) = NULL); +inline tree +gimple_build (gimple_seq *seq, + enum built_in_function fn, tree type, + tree arg0, tree arg1, tree arg2) +{ + return gimple_build (seq, UNKNOWN_LOCATION, fn, type, arg0, arg1, arg2); +} + extern tree gimple_convert (gimple_seq *, location_t, tree, tree); inline tree gimple_convert (gimple_seq *seq, tree type, tree op) @@ -52,4 +111,18 @@ gimple_convert (gimple_seq *seq, tree type, tree op) return gimple_convert (seq, UNKNOWN_LOCATION, type, op); } +/* In gimple-match.c. */ +extern tree gimple_simplify (enum tree_code, tree, tree, + gimple_seq *, tree (*)(tree)); +extern tree gimple_simplify (enum tree_code, tree, tree, tree, + gimple_seq *, tree (*)(tree)); +extern tree gimple_simplify (enum tree_code, tree, tree, tree, tree, + gimple_seq *, tree (*)(tree)); +extern tree gimple_simplify (enum built_in_function, tree, tree, + gimple_seq *, tree (*)(tree)); +extern tree gimple_simplify (enum built_in_function, tree, tree, tree, + gimple_seq *, tree (*)(tree)); +extern tree gimple_simplify (enum built_in_function, tree, tree, tree, tree, + gimple_seq *, tree (*)(tree)); + #endif /* GCC_GIMPLE_FOLD_H */ |