aboutsummaryrefslogtreecommitdiff
path: root/gcc/c/c-parser.cc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2024-12-06 11:00:52 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2024-12-06 11:00:52 +0100
commitecfc0e07377346c6307556496db882f4dcfb2846 (patch)
tree99d502275be360882a398a94722abe70416306a9 /gcc/c/c-parser.cc
parente65b09d461d2a4f37fb55d6dcd2e94b1f444daea (diff)
downloadgcc-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.cc9
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);