On Tue, Jun 9, 2020 at 1:47 AM Alexandre Oliva <ol...@adacore.com> wrote: > > > An asm operand with a "VIEW_CONVERT_EXPR<struct { > [...] > }>" will output the definition of the struct as asm code. Oops. > > I hoped setting print_rtx_head would affect print_mem_expr, just > because it's in print-rtl rather than tree-pretty-print, but it didn't > help. I've thus arranged for print_mem_expr to "obey" print_rtx_head > by enabling TDF_SLIM. > > Regstrapped on x86_64-linux-gnu. Ok to install? > > > Another alternative that occurred to me was to get print_rtx_head > printed by e.g. pp_newline, or otherwise get print-rtl and > pretty-print infrastructure to both use the same line-leading > infrastructure. I think that would be a much bigger undertaking, so I > figured I'd ask whether that would be desirable, before taking it up. > Thoughts? > > > for gcc/ChangeLog > > * final.c (output_asm_operand_names): Set print_rtx_head > around print_mem_expr. > * print-rtl.c (print_mem_expr): Enable TDF_SLIM in dump_flags > when print_rtx_head is nonempty. > --- > final.c | 3 +++ > print-rtl.c | 4 ++++ > 2 files changed, 7 insertions(+) > > diff --git gcc/final.c gcc/final.c > index a360196..482801db 100644 > --- gcc/final.c > +++ gcc/final.c > @@ -3706,9 +3706,12 @@ output_asm_operand_names (rtx *operands, int *oporder, > int nops) > wrote = 1; > if (expr) > { > + const char *saved_print_rtx_head = print_rtx_head; > fprintf (asm_out_file, "%s", > addressp ? "*" : ""); > + print_rtx_head = ASM_COMMENT_START; > print_mem_expr (asm_out_file, expr); > + print_rtx_head = saved_print_rtx_head; > wrote = 1; > } > else if (REG_P (op) && ORIGINAL_REGNO (op) > diff --git gcc/print-rtl.c gcc/print-rtl.c > index 611ea07..0563540 100644 > --- gcc/print-rtl.c > +++ gcc/print-rtl.c > @@ -182,8 +182,12 @@ rtx_reuse_manager::set_seen_def (int reuse_id) > void > print_mem_expr (FILE *outfile, const_tree expr) > { > + dump_flags_t save_dump_flags = dump_flags; > + if (*print_rtx_head) > + dump_flags |= TDF_SLIM; > fputc (' ', outfile); > print_generic_expr (outfile, CONST_CAST_TREE (expr), dump_flags);
How about simply unconditionally doing dump_flags | TDF_SLIM here to have the whole mem_expr on one line. OK with that change. Richard. > + dump_flags = save_dump_flags; > } > #endif > > > -- > Alexandre Oliva, freedom fighter he/him https://FSFLA.org/blogs/lxo/ > Free Software Evangelist Stallman was right, but he's left :( > GNU Toolchain Engineer Live long and free, and prosper ethically