Endilll wrote:

> That was always true, in the sense that there's nothing preventing the author 
> from doing the exact same thing: looking at the output from the clang -verify 
> failure and adding/removing expected diagnostics until it matches. In fact, 
> even without this script that is the most mindless way of doing it, and I'm 
> sure it already happens a lot.

An author still has to pay some attention to the diagnostic test they are 
changing, and they still can notice things. Sure, they might not pick 
subtleties, but I think there's a fair chance to catch something really wrong. 
Again, we're constrained on review bandwidth, and not on making changes. As a 
testament to that, number of active PRs has been constantly going up ever since 
we switched to them, and we also have a long tail of opened reviews in 
Phabricator. So this little nudge to review your work helps the worst 
bottleneck we've been having.

> But for clang -verify you have to add checkers for exactly the emitted 
> diagnostics. No more or less. So the only real question is on which line to 
> place them.

I don't think it's that simple at least for some tests. We have tests that run 
in `-verify` mode multiple times with different combinations of compiler 
options. Such tests might rely on custom prefixes (`-verify=prefix1,prefix2`), 
and updating them automatically can easily yield incorrect result. As an 
example how more complicated tests might look like, consider C++ DR test suite. 
Here's one example: 
https://github.com/llvm/llvm-project/blob/ca0613e0fcef2a9972f2802318201f8272e74693/clang/test/CXX/drs/cwg3xx.cpp#L779-L782

> That said my main goal is not to make creating tests easier (although it of 
> course also does that, and I don't know that I agree that it's harmful to 
> lower the threshold to create tests), but to make it easier to batch update 
> many/large breaking tests. We have many tests downstream that while testing 
> features that don't yet exist upstream, are affected by new diagnostics added 
> upstream. Handling many tests breaking all at once because of upstream 
> changes is easier if it doesn't require a ton of sed-fu. Similar interactions 
> happen when cherry-picking a patch from a dev branch to one or multiple 
> release branches, that may not contain the exact same set of diagnostics. I 
> could of course keep this script downstream, but we are not the only ones 
> with downstream changes and I think others will find it helpful. And that's 
> for a completely new script: keeping something like 
> https://github.com/llvm/llvm-project/pull/108425 downstream only would be 
> result in merge conflicts.

I don't intend to dismiss the pain downstream could have over this, but in my 
opinion it doesn't justify opening floodgates of automated test updates 
upstream. At the moment I don't have a strong opinion on infrastructure that 
supports such automated updates, like #108425 you mentioned.

> Furthermore, I have observed how existing regression tests create friction to 
> improving phrasing of existing diagnostics. Old diagnostics often appear in 
> many many tests, so while the code change to improving the diagnostic may be 
> quick, you know it'll take significant time to update all of the regression 
> tests using the old phrasing.

I agree that the pain is there. But again, I don't think the end justifies the 
mean.

> So you don't do that drive-by improvement, because that wasn't your goal 
> anyways.

Drive-by fix that makes you update a lot of test would introduce a lot of noise 
into your PR anyway, making it noticeably harder to review. I believe the 
script addresses the wrong problem here. 

https://github.com/llvm/llvm-project/pull/108658
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to