dblaikie added a comment.

In D107049#3103984 <https://reviews.llvm.org/D107049#3103984>, @lhames wrote:

> In D107049#3101456 <https://reviews.llvm.org/D107049#3101456>, @dblaikie 
> wrote:
>
>> In D107049#3100630 <https://reviews.llvm.org/D107049#3100630>, @rnk wrote:
>>
>>> So, to back up a bit, do I understand correctly that this change adds tests 
>>> to the check-clang test suite that JIT compiles C++ code for the host and 
>>> throws C++ exceptions? Can we reconsider that?
>>>
>>> We have a policy of not running execution tests in the clang test suite 
>>> because we know they always turn out to be unreliable, flaky, and highly 
>>> dependent on the environment rather than the code under test. Integration 
>>> tests are great, everyone needs them, but they should definitely not be 
>>> part of the default set of tests that developers run anywhere and 
>>> everywhere and expect to work out of the box, regardless of the 
>>> environment. +@dblaikie to confirm if I am off base here about our testing 
>>> strategy, and maybe Lang can advise us about past JIT testing strategies.
>>
>> Yeah, seems we've had some precedent for this for a while, as @lhames says 
>> (doing some archaeology I see one of the clang-interpreter tests added here, 
>> for instance: 
>> https://github.com/llvm/llvm-project/commit/1d487617f20ab9df65ab60d6cf9431ef288312ab
>
> Also all of the MJCIT and Orc tests in LLVM.

I think @rnk was asking/drawing a distinction between execution tests in LLVM 
(which is at least only testing LLVM code in LLVM) and execution tests in Clang 
(which is both execution, and cross-project) - so I was just talking about the 
Clang->LLVM->execution tests. Though I think in LLVM there'd also be some 
opportunity to find some ways to isolate/test JIT infrastructure with less 
execution (had sort of hoped in the early days of Orc that the layered 
architecture would allow more isolated/unit testing to robustly test pieces 
without execution for that testing).

>> I push back pretty hard on end-to-end tests in clang in most cases - one 
>> place that slips through either untested or with end to end tests is 
>> anything in MCOptions, etc, since they aren't in IR and are only observable 
>> through their effect on the resulting assembly. And JITs - I didn't actually 
>> know we had live JIT tests up in clang - and yeah, would rather we didn't - 
>> perhaps via a mode in such frontends that emits the IR at various points, 
>> but it'll be a pretty significant investment to make something fairly 
>> robust, I would imagine (sort of like lldb reproducers replays (which are 
>> being removed due to unmaintainability, by the sounds of it) but being able 
>> to stub out the actual execution) -  hmm, perhaps a remote execution mock 
>> would be feasible? That'd at least remove the execution part, make it 
>> portable to run on non-native environments - but wouldn't remove the 
>> end-to-end-ness, for that maybe you'd need a mock target that worked as 
>> though it ran IR natively, perhaps? Not sure.
>
> The LLVM MCJIT and Orc tests have been stable enough once we constrained the 
> environments that they run in. I don't see why this would be any less stable. 
> The features being exercised (essentially the object runtimes) are likely to 
> be more stable in practice than the environments being tested in the LLDB 
> tests.
>
>> Then maybe the more end-to-end-y tests could move out to cross-project-tests.
>
> Are you suggesting execution tests for cross-project-tests?

I think cross-project-tests (originally debuginfo-tests) has always had/been a 
place for execution tests. Not all of them, and still value in having lit-style 
non-execution cross-project tests where possible for more robust/variation 
testing where possible, with fewer full end-to-end-including-execution tests 
where possible (always going to be fuzzy lines of what's worth the 
cost/benefit, etc - and we're all going to have different points on that 
spectrum).


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

https://reviews.llvm.org/D107049

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

Reply via email to