[PATCH] Support LABEL_DECL in %qD directive.
Richard Biener
richard.guenther@gmail.com
Wed Apr 21 10:03:05 GMT 2021
On Wed, Apr 21, 2021 at 10:49 AM Martin Liška <mliska@suse.cz> wrote:
>
> Hey.
>
> The patch is a refactoring and simplification in tree-cfg.c.
>
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
> I verified that the error messages are correctly printed.
>
> Ready to be installed?
OK.
Richard.
> Thanks,
> Martin
>
> gcc/cp/ChangeLog:
>
> * error.c (dump_decl): Support anonymous labels.
>
> gcc/ChangeLog:
>
> * tree-cfg.c (gimple_verify_flow_info): Use qD instead
> of print_generic_expr.
> ---
> gcc/cp/error.c | 5 ++++-
> gcc/tree-cfg.c | 29 ++++++++++-------------------
> 2 files changed, 14 insertions(+), 20 deletions(-)
>
> diff --git a/gcc/cp/error.c b/gcc/cp/error.c
> index ff4ae6f4b23..9257a9fce10 100644
> --- a/gcc/cp/error.c
> +++ b/gcc/cp/error.c
> @@ -1362,7 +1362,10 @@ dump_decl (cxx_pretty_printer *pp, tree t, int flags)
> break;
>
> case LABEL_DECL:
> - pp_cxx_tree_identifier (pp, DECL_NAME (t));
> + if (DECL_NAME (t))
> + pp_cxx_tree_identifier (pp, DECL_NAME (t));
> + else
> + pp_printf (pp, "<L%d>", (int) LABEL_DECL_UID (t));
> break;
>
> case CONST_DECL:
> diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
> index 4f63aa69ba8..f985867ced3 100644
> --- a/gcc/tree-cfg.c
> +++ b/gcc/tree-cfg.c
> @@ -5564,37 +5564,29 @@ gimple_verify_flow_info (void)
> label = gimple_label_label (as_a <glabel *> (stmt));
> if (prev_stmt && DECL_NONLOCAL (label))
> {
> - error ("nonlocal label ");
> - print_generic_expr (stderr, label);
> - fprintf (stderr, " is not first in a sequence of labels in bb %d",
> - bb->index);
> + error ("nonlocal label %qD is not first in a sequence "
> + "of labels in bb %d", label, bb->index);
> err = 1;
> }
>
> if (prev_stmt && EH_LANDING_PAD_NR (label) != 0)
> {
> - error ("EH landing pad label ");
> - print_generic_expr (stderr, label);
> - fprintf (stderr, " is not first in a sequence of labels in bb %d",
> - bb->index);
> + error ("EH landing pad label %qD is not first in a sequence "
> + "of labels in bb %d", label, bb->index);
> err = 1;
> }
>
> if (label_to_block (cfun, label) != bb)
> {
> - error ("label ");
> - print_generic_expr (stderr, label);
> - fprintf (stderr, " to block does not match in bb %d",
> - bb->index);
> + error ("label %qD to block does not match in bb %d",
> + label, bb->index);
> err = 1;
> }
>
> if (decl_function_context (label) != current_function_decl)
> {
> - error ("label ");
> - print_generic_expr (stderr, label);
> - fprintf (stderr, " has incorrect context in bb %d",
> - bb->index);
> + error ("label %qD has incorrect context in bb %d",
> + label, bb->index);
> err = 1;
> }
> }
> @@ -5616,9 +5608,8 @@ gimple_verify_flow_info (void)
>
> if (glabel *label_stmt = dyn_cast <glabel *> (stmt))
> {
> - error ("label ");
> - print_generic_expr (stderr, gimple_label_label (label_stmt));
> - fprintf (stderr, " in the middle of basic block %d", bb->index);
> + error ("label %qD in the middle of basic block %d",
> + gimple_label_label (label_stmt), bb->index);
> err = 1;
> }
> }
> --
> 2.31.1
>
More information about the Gcc-patches
mailing list