diff options
Diffstat (limited to 'gcc/tree.h')
-rw-r--r-- | gcc/tree.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/tree.h b/gcc/tree.h index fe76f8fe5b9..5fd62c7e8cb 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -5305,6 +5305,25 @@ truth_value_p (enum tree_code code) || code == TRUTH_XOR_EXPR || code == TRUTH_NOT_EXPR); } +/* Build and fold a POINTER_PLUS_EXPR at LOC offsetting PTR by OFF. */ +static inline tree +fold_build_pointer_plus_loc (location_t loc, tree ptr, tree off) +{ + return fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (ptr), + ptr, fold_convert_loc (loc, sizetype, off)); +} +#define fold_build_pointer_plus(p,o) \ + fold_build_pointer_plus_loc (UNKNOWN_LOCATION, p, o) + +/* Build and fold a POINTER_PLUS_EXPR at LOC offsetting PTR by OFF. */ +static inline tree +fold_build_pointer_plus_hwi_loc (location_t loc, tree ptr, HOST_WIDE_INT off) +{ + return fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (ptr), + ptr, size_int (off)); +} +#define fold_build_pointer_plus_hwi(p,o) \ + fold_build_pointer_plus_hwi_loc (UNKNOWN_LOCATION, p, o) /* In builtins.c */ extern tree fold_call_expr (location_t, tree, bool); |