[PATCH 2/4] use error_at and warning_at in cfgexpand.c

Richard Biener richard.guenther@gmail.com
Wed Jul 14 11:28:48 GMT 2021


On Wed, Jul 14, 2021 at 10:20 AM Trevor Saunders <tbsaunde@tbsaunde.org> wrote:
>
> bootstrapped and regtested on x86_64-linux-gnu, ok?

OK.

Thanks,
Richard.

> Trev
>
> gcc/ChangeLog:
>
>         * cfgexpand.c (tree_conflicts_with_clobbers_p): Pass location to
>         diagnostics.
>         (expand_asm_stmt): Likewise.
> ---
>  gcc/cfgexpand.c | 35 ++++++++++++++++++-----------------
>  1 file changed, 18 insertions(+), 17 deletions(-)
>
> diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
> index fea8c837c80..46f2960c491 100644
> --- a/gcc/cfgexpand.c
> +++ b/gcc/cfgexpand.c
> @@ -2954,7 +2954,8 @@ check_operand_nalternatives (const vec<const char *> &constraints)
>     variable definition for error, NULL_TREE for ok.  */
>
>  static bool
> -tree_conflicts_with_clobbers_p (tree t, HARD_REG_SET *clobbered_regs)
> +tree_conflicts_with_clobbers_p (tree t, HARD_REG_SET *clobbered_regs,
> +                               location_t loc)
>  {
>    /* Conflicts between asm-declared register variables and the clobber
>       list are not allowed.  */
> @@ -2962,9 +2963,8 @@ tree_conflicts_with_clobbers_p (tree t, HARD_REG_SET *clobbered_regs)
>
>    if (overlap)
>      {
> -      error ("%<asm%> specifier for variable %qE conflicts with "
> -            "%<asm%> clobber list",
> -            DECL_NAME (overlap));
> +      error_at (loc, "%<asm%> specifier for variable %qE conflicts with "
> +               "%<asm%> clobber list", DECL_NAME (overlap));
>
>        /* Reset registerness to stop multiple errors emitted for a single
>          variable.  */
> @@ -3087,7 +3087,7 @@ expand_asm_stmt (gasm *stmt)
>    /* ??? Diagnose during gimplification?  */
>    if (ninputs + noutputs + nlabels > MAX_RECOG_OPERANDS)
>      {
> -      error ("more than %d operands in %<asm%>", MAX_RECOG_OPERANDS);
> +      error_at (locus, "more than %d operands in %<asm%>", MAX_RECOG_OPERANDS);
>        return;
>      }
>
> @@ -3140,7 +3140,8 @@ expand_asm_stmt (gasm *stmt)
>               if (j == -2)
>                 {
>                   /* ??? Diagnose during gimplification?  */
> -                 error ("unknown register name %qs in %<asm%>", regname);
> +                 error_at (locus, "unknown register name %qs in %<asm%>",
> +                           regname);
>                   error_seen = true;
>                 }
>               else if (j == -4)
> @@ -3205,7 +3206,8 @@ expand_asm_stmt (gasm *stmt)
>                 && HARD_REGISTER_P (DECL_RTL (output_tvec[j]))
>                 && output_hregno == REGNO (DECL_RTL (output_tvec[j])))
>               {
> -               error ("invalid hard register usage between output operands");
> +               error_at (locus, "invalid hard register usage between output "
> +                         "operands");
>                 error_seen = true;
>               }
>
> @@ -3231,16 +3233,16 @@ expand_asm_stmt (gasm *stmt)
>                 if (i == match
>                     && output_hregno != input_hregno)
>                   {
> -                   error ("invalid hard register usage between output "
> -                          "operand and matching constraint operand");
> +                   error_at (locus, "invalid hard register usage between "
> +                             "output operand and matching constraint operand");
>                     error_seen = true;
>                   }
>                 else if (early_clobber_p
>                          && i != match
>                          && output_hregno == input_hregno)
>                   {
> -                   error ("invalid hard register usage between "
> -                          "earlyclobber operand and input operand");
> +                   error_at (locus, "invalid hard register usage between "
> +                             "earlyclobber operand and input operand");
>                     error_seen = true;
>                   }
>               }
> @@ -3319,7 +3321,7 @@ expand_asm_stmt (gasm *stmt)
>
>           if (! allows_reg && !MEM_P (op))
>             {
> -             error ("output number %d not directly addressable", i);
> +             error_at (locus, "output number %d not directly addressable", i);
>               error_seen = true;
>             }
>           if ((! allows_mem && MEM_P (op) && GET_MODE (op) != BLKmode)
> @@ -3415,9 +3417,8 @@ expand_asm_stmt (gasm *stmt)
>           if (allows_reg && TYPE_MODE (type) != BLKmode)
>             op = force_reg (TYPE_MODE (type), op);
>           else if (!allows_mem)
> -           warning (0, "%<asm%> operand %d probably does not match "
> -                    "constraints",
> -                    i + noutputs);
> +           warning_at (locus, 0, "%<asm%> operand %d probably does not match "
> +                       "constraints", i + noutputs);
>           else if (MEM_P (op))
>             {
>               /* We won't recognize either volatile memory or memory
> @@ -3471,10 +3472,10 @@ expand_asm_stmt (gasm *stmt)
>
>    bool clobber_conflict_found = 0;
>    for (i = 0; i < noutputs; ++i)
> -    if (tree_conflicts_with_clobbers_p (output_tvec[i], &clobbered_regs))
> +    if (tree_conflicts_with_clobbers_p (output_tvec[i], &clobbered_regs, locus))
>         clobber_conflict_found = 1;
>    for (i = 0; i < ninputs - ninout; ++i)
> -    if (tree_conflicts_with_clobbers_p (input_tvec[i], &clobbered_regs))
> +    if (tree_conflicts_with_clobbers_p (input_tvec[i], &clobbered_regs, locus))
>         clobber_conflict_found = 1;
>
>    /* Make vectors for the expression-rtx, constraint strings,
> --
> 2.20.1
>


More information about the Gcc-patches mailing list