<div dir="ltr">Yep - all about balance.<br><br>The main risk are tests that overfit (golden files being the worst case - checking that the entire output matches /exactly/ - this is what FileCheck is intended to help avoid) and maintainability. In the case of the autogenerated FileCheck lines I've seen so far - they seem like they still walk a fairly good line of checking exactly what's intended. Though I sometimes wonder if they're checking full combinatorial expansions that may not be required/desirable - always a tradeoff of just how black/white box tests are.<br></div><br><div class="gmail_quote"><div dir="ltr">On Fri, May 4, 2018 at 2:56 AM Alex Bradbury via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 4 May 2018 at 10:25, Alexandros Lamprineas via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
> Hello llvm-dev,<br>
><br>
><br>
> On a recent code review I was asked to auto-generate assertion checks for my<br>
> unit test. I wasn't aware that this was even possible. I am referring to the<br>
> python `update` scripts under `utils` directory. My first reaction was wow!<br>
> I found it very practical and useful. It saves you significant amount of<br>
> time when writing a regression test. So I gave it a try. The generated<br>
> checks were satisfying enough, almost exactly what I wanted. Then I got a<br>
> bit sceptical about them. I am worried that auto-generating tests based on<br>
> the compiler output can be quite dangerous. The tests will always pass<br>
> regardless of whether the compiler emits right or wrong code, therefore you<br>
> have to be certain that they impose the desired compiler behaviour. I guess<br>
> the question here is how often we should be using those scripts.<br>
<br>
Like many test-related issues, it comes down to personal judgement. It<br>
is of course easy to create test/CodeGen/*/* tests that pass<br>
regardless of whether the compiler breaks broken code regardless of<br>
whether the test CHECK lines are generated by<br>
<a href="http://update_llc_test.checks.py" rel="noreferrer" target="_blank">update_llc_test.checks.py</a> or not.<br>
<br>
I find it very helpful to have auto-generated CHECK lines that pick up<br>
any codegen change, but this can of course be problematic for very<br>
large test cases that are likely to see churn due to scheduling or<br>
regallloc changes. Being able to regenerate the CHECK lines and view<br>
the diff is also incredibly helpful when rebasing or moving a patch<br>
between different branches.<br>
<br>
My policy for test/Codegen/RISCV is to use update_llc_test_checks.py<br>
wherever possible, except in cases where there are so many CHECK lines<br>
on the output that they obscure the property being tested, indicating<br>
that a more limited hand-crafted pattern would be superior.<br>
<br>
Best,<br>
<br>
Alex<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>