diff options
author | Jakub Jelinek <jakub@redhat.com> | 2024-12-06 11:00:52 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2024-12-06 11:00:52 +0100 |
commit | ecfc0e07377346c6307556496db882f4dcfb2846 (patch) | |
tree | 99d502275be360882a398a94722abe70416306a9 /gcc/c/c-parser.cc | |
parent | e65b09d461d2a4f37fb55d6dcd2e94b1f444daea (diff) | |
download | gcc-ecfc0e07377346c6307556496db882f4dcfb2846.zip gcc-ecfc0e07377346c6307556496db882f4dcfb2846.tar.gz gcc-ecfc0e07377346c6307556496db882f4dcfb2846.tar.bz2 |
Use new RAW_DATA_{U,S}CHAR_ELT macros in the middle-end and C FE
During the patch review of the C++ #embed optimization, Jason asked for
a macro for the common
((const unsigned char *) RAW_DATA_POINTER (value))[i]
and ditto with signed char patterns which appear in a lot of places.
In the just committed patch I've added
+#define RAW_DATA_UCHAR_ELT(NODE, I) \
+ (((const unsigned char *) RAW_DATA_POINTER (NODE))[I])
+#define RAW_DATA_SCHAR_ELT(NODE, I) \
+ (((const signed char *) RAW_DATA_POINTER (NODE))[I])
macros for that in tree.h.
The following patch is just a cleanup to use those macros where appropriate.
2024-12-06 Jakub Jelinek <jakub@redhat.com>
gcc/
* gimplify.cc (gimplify_init_ctor_eval): Use RAW_DATA_UCHAR_ELT
macro.
* gimple-fold.cc (fold_array_ctor_reference): Likewise.
* tree-pretty-print.cc (dump_generic_node): Use RAW_DATA_UCHAR_ELT
and RAW_DATA_SCHAR_ELT macros.
* fold-const.cc (fold): Use RAW_DATA_UCHAR_ELT macro.
gcc/c/
* c-parser.cc (c_parser_get_builtin_args, c_parser_expression,
c_parser_expr_list): Use RAW_DATA_UCHAR_ELT macro.
* c-typeck.cc (digest_init): Use RAW_DATA_UCHAR_ELT and
RAW_DATA_SCHAR_ELT macros.
(add_pending_init, maybe_split_raw_data): Use RAW_DATA_UCHAR_ELT
macro.
Diffstat (limited to 'gcc/c/c-parser.cc')
-rw-r--r-- | gcc/c/c-parser.cc | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc index a45e9f9..5226169 100644 --- a/gcc/c/c-parser.cc +++ b/gcc/c/c-parser.cc @@ -10811,8 +10811,7 @@ c_parser_get_builtin_args (c_parser *parser, const char *bname, for (unsigned int i = 0; i < (unsigned) RAW_DATA_LENGTH (value); i++) { expr.value = build_int_cst (integer_type_node, - ((const unsigned char *) - RAW_DATA_POINTER (value))[i]); + RAW_DATA_UCHAR_ELT (value, i)); vec_safe_push (cexpr_list, expr); } c_parser_consume_token (parser); @@ -13751,8 +13750,7 @@ c_parser_expression (c_parser *parser) tree val = embed->value; unsigned last = RAW_DATA_LENGTH (val) - 1; next.value = build_int_cst (TREE_TYPE (val), - ((const unsigned char *) - RAW_DATA_POINTER (val))[last]); + RAW_DATA_UCHAR_ELT (val, last)); next.original_type = integer_type_node; c_parser_consume_token (parser); } @@ -13881,8 +13879,7 @@ c_parser_expr_list (c_parser *parser, bool convert_p, bool fold_p, && RAW_DATA_POINTER (value)[i] == 0) *literal_zero_mask |= 1U << (idx + 1); expr.value = build_int_cst (integer_type_node, - ((const unsigned char *) - RAW_DATA_POINTER (value))[i]); + RAW_DATA_UCHAR_ELT (value, i)); vec_safe_push (ret, expr.value); if (orig_types) vec_safe_push (orig_types, expr.original_type); |