On Thu, 2021-07-01 at 14:14 -0600, Martin Sebor wrote: > On 6/30/21 5:35 PM, David Malcolm wrote: > > On Wed, 2021-06-30 at 13:45 -0600, Martin Sebor wrote: > > > On 6/30/21 9:39 AM, Martin Sebor wrote: > > > > Ping. Attached is the same patch rebased on top the latest > > > > trunk. > > > > > > Please see the attached patch instead. The previous one had typo > > > in it. > > > > > > > > > > > As discussed in the review of Aldy's recent changes to the > > > > backwards > > > > threader, he has run into the same bug the patch fixes. > > > > Getting this > > > > patch set reviewed and approved would be helpful in keeping him > > > > from > > > > having to work around the bug. > > > > > > > > https://gcc.gnu.org/pipermail/gcc/2021-June/236608.html > > > > > > > > On 6/10/21 5:27 PM, Martin Sebor wrote: > > > > > This diff removes the uses of %G and %K from all warning_at() > > > > > calls > > > > > throughout GCC front end and middle end. The inlining > > > > > context is > > > > > included in diagnostic output whenever it's present. > > > > > > > > > > > Thanks for writing the patch. > > > > I went through the full patch, though my eyes may have glazed over > > in > > places at all of the %G and %K removals. I *think* you got them > > mostly > > correct, apart from the following possible issues and nits... > > > > > diff --git a/gcc/expr.c b/gcc/expr.c > > > index 025033c9ecf..b9fe1cf91d7 100644 > > > --- a/gcc/expr.c > > > +++ b/gcc/expr.c > > > > [...] > > > > > @@ -11425,10 +11425,10 @@ expand_expr_real_1 (tree exp, rtx > > > target, machine_mode tmode, > > > DECL_ATTRIBUTES > > > (fndecl))) != NULL) > > > { > > > const char *ident = lang_hooks.decl_printable_name > > > (fndecl, 1); > > > - warning_at (tree_nonartificial_location (exp), > > > + warning_at (EXPR_LOCATION (exp), > > > > Are we preserving the existing behavior for > > __attribute__((__artificial__)) here? > > Is this behavior handled somewhere else in the patch kit? > > Yes. The warning infrastructure (set_inlining_locations) uses > the location of the site into which the statement has been inlined > regardless of whether the inlined function is artificial.
Do we have test coverage for this, though? [...] > > > > @@ -90,8 +90,8 @@ NOIPA void warn_g2 (struct A *p) > > > g2 (p); > > > } > > > > > > -// { dg-message "inlined from 'g2'" "" { target *-*-* } 0 } > > > -// { dg-message "inlined from 'warn_g2'" "" { target *-*-* } 0 } > > > +// { dg-message "inlined from 'g2'" "note on line 93" { target > > > *-*-* } 0 } > > > +// { dg-message "inlined from 'warn_g2'" "note on line 94" { > > > target *-*-* } 0 } > > > > You've added descriptions to disambiguate all of the various > > directives > > on line 0, which is good, but I don't like the use of line numbers > > in > > the descriptions, since it will get very confusing if the numbering > > changes. > > > > Would it work to use the message text as the description e.g. > > > > // { dg-message "inlined from 'warn_g2'" "inlined from > > 'warn_g2'" { target *-*-* } 0 } > > > > or somesuch? > > It would certainly work, they're just informational labels printed > by DejaGnu when the assertions fail. I added them to help me see > what they went with while working with the test. I'm not concerned > about the line numbers changing. If they do and someone notices, > they can update them, the same way they might want to if they > rename the functions they're inlined into. [...] > > > > After reading through this and trying to grok it, I see that this > > file > > logically can be split into several parts: the "warn*" functions, > > then > > the "nowarn*_ignore0" functions, then the "nowarn*_ignore_1" > > functions > > etc. > > > > Please add some kind of separator comment between each of these > > parts > > to make it easy for the reader to see this structure. > > Sure, I've added a comment. > Thanks. > Attached is the revised patch for reference. Since it just removes > the uses of the %K and %G directives made redundant by the first > patch in the series I'll go ahead and commit it as obvious in a day > or so after patch 1 unless someone has further questions or requests > for changes. Please can you look into the "__artificial__" test coverage, and address the line number thing above. Dave