paulkirth added a comment.

Sorry, it took me a while to circle back to this.

In D135488#3931603 <https://reviews.llvm.org/D135488#3931603>, @dblaikie wrote:

> I'm not sure we'd need/want to optimize a diagnostic experience for a 
> codebase that's got a lot of latent warnings. If people have lots of existing 
> warnings they should probably turn the warning off (in those instances, at 
> least) & I think saying "this function has a frame that's too big" without 
> any info is pretty hard to act on, so it doesn't seem totally outside the 
> realm of good diagnostics for this particular diagnostic to print a lot of 
> info to help a user act on it/fix the issue when they get it. If most of the 
> time you see this warning and want to fix it, you had to run your build again 
> with an extra flag - I'd say that was a bad diagnostic experience, we should 
> give them enough info the first time around.

On the topic of how frequent warnings should be, it's important to keep in mind 
that a function with a large stack frame will generate a diagnostic in every 
caller who has inlined that function. So even if you were warning free in the 
last build a single function using too much stack could generate a lot of 
diagnostics.

> If most of the time you don't need this info - yeah, that's something we 
> should figure out, how to provide the right amount of info to be actionable, 
> but in this case I suspect more-often-than-not you want some kind of 
> report/breakdown. If it's a case of not having a way to make it more 
> targeted/actionable and we just have two options ("too terse" and "too 
> verbose") fairly evenly split (it's not clear that most of the time one or 
> the other is the right answer) - I guess two different warning flags or some 
> kind of modifier flag could be suitable. I guess we have that for template 
> recursion things, maybe? Where you can ask if you want the full expansion, 
> but by default we give you a summarized one, skipping expansions we don't 
> think are relevant (I might be misremembering).

While I agree that running the build again isn't ideal, I don't' see a good way 
to balance the need for clang to report concise errors with the need for more 
information in this case.  Reading D127923 <https://reviews.llvm.org/D127923>, 
I think it's clear that many of clang's maintainers would like to keep 
diagnostics concise if possible. I should also note that we already give some 
minimal context to `-Wframe-larger-than` diagnostics by printing the breakdown 
of the stack usage between spills, program variables, and the UnSafeStack.

I think the right approach in this case is to allow developers to opt into the 
behavior when needed, so your suggestion of gating it behind a flag seems like 
a good way to express that. I also think the diagnostic is useful enough on its 
own to warrant use outside of `-Wframe-larger-than`, despite being very useful 
when triaging those type of warnings. I guess that means I should take a harder 
look at plumbing this through the remarks infrastructure, even if I don't love 
the output.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D135488/new/

https://reviews.llvm.org/D135488

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to