From: Jakub Jelinek Date: Fri, 6 Sep 2019 17:33:41 +0000 (+0200) Subject: function.c (assign_parm_find_data_types): Use RECORD_OR_UNION_TYPE_P before testing... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=920ea3b8ba3164b61ac9490dfdfceb6936eda6dd;p=gcc.git function.c (assign_parm_find_data_types): Use RECORD_OR_UNION_TYPE_P before testing TYPE_TRANSPARENT_AGGR. * function.c (assign_parm_find_data_types): Use RECORD_OR_UNION_TYPE_P before testing TYPE_TRANSPARENT_AGGR. * calls.c (initialize_argument_information, load_register_parameters): Likewise. From-SVN: r275472 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 65d9f43db7f..7d5a2721786 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-09-06 Jakub Jelinek + + * function.c (assign_parm_find_data_types): Use RECORD_OR_UNION_TYPE_P + before testing TYPE_TRANSPARENT_AGGR. + * calls.c (initialize_argument_information, load_register_parameters): + Likewise. + 2019-09-06 Richard Earnshaw * config/arm/arm.md (cmp_and): Add short-it variant for thumb2 with diff --git a/gcc/calls.c b/gcc/calls.c index e5086f4bb1d..51ad55f15a9 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1991,8 +1991,7 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED, /* If TYPE is a transparent union or record, pass things the way we would pass the first field of the union or record. We have already verified that the modes are the same. */ - if ((TREE_CODE (type) == UNION_TYPE || TREE_CODE (type) == RECORD_TYPE) - && TYPE_TRANSPARENT_AGGR (type)) + if (RECORD_OR_UNION_TYPE_P (type) && TYPE_TRANSPARENT_AGGR (type)) type = TREE_TYPE (first_field (type)); /* Decide where to pass this arg. @@ -2772,9 +2771,7 @@ load_register_parameters (struct arg_data *args, int num_actuals, HOST_WIDE_INT const_size = 0; rtx_insn *before_arg = get_last_insn (); tree type = TREE_TYPE (args[i].tree_value); - if ((TREE_CODE (type) == UNION_TYPE - || TREE_CODE (type) == RECORD_TYPE) - && TYPE_TRANSPARENT_AGGR (type)) + if (RECORD_OR_UNION_TYPE_P (type) && TYPE_TRANSPARENT_AGGR (type)) type = TREE_TYPE (first_field (type)); /* Set non-negative if we must move a word at a time, even if just one word (e.g, partial == 4 && mode == DFmode). Set diff --git a/gcc/function.c b/gcc/function.c index 751d2de3bfd..535160544b9 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -2443,8 +2443,7 @@ assign_parm_find_data_types (struct assign_parm_data_all *all, tree parm, /* If the parm is to be passed as a transparent union or record, use the type of the first field for the tests below. We have already verified that the modes are the same. */ - if ((TREE_CODE (data->arg.type) == UNION_TYPE - || TREE_CODE (data->arg.type) == RECORD_TYPE) + if (RECORD_OR_UNION_TYPE_P (data->arg.type) && TYPE_TRANSPARENT_AGGR (data->arg.type)) data->arg.type = TREE_TYPE (first_field (data->arg.type));