dblaikie added a comment.

In D94019#2478308 <https://reviews.llvm.org/D94019#2478308>, @hoy wrote:

> In D94019#2478284 <https://reviews.llvm.org/D94019#2478284>, @dblaikie wrote:
>
>> In D94019#2478277 <https://reviews.llvm.org/D94019#2478277>, @hoy wrote:
>>
>>> In D94019#2478253 <https://reviews.llvm.org/D94019#2478253>, @dblaikie 
>>> wrote:
>>>
>>>> In D94019#2478206 <https://reviews.llvm.org/D94019#2478206>, @hoy wrote:
>>>>
>>>>> In D94019#2478048 <https://reviews.llvm.org/D94019#2478048>, @dblaikie 
>>>>> wrote:
>>>>>
>>>>>> In D94019#2478047 <https://reviews.llvm.org/D94019#2478047>, @hoy wrote:
>>>>>>
>>>>>>> In D94019#2478045 <https://reviews.llvm.org/D94019#2478045>, @dblaikie 
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Please add a clang test for this.
>>>>>>>
>>>>>>> There is the original clang test `unique-internal-linkage-names.cpp` 
>>>>>>> that still works with the change here. What kind of new test would you 
>>>>>>> like?
>>>>>>
>>>>>> Something that tests this change (something that would fail before this 
>>>>>> patch is applied, and passes afterwards - demonstrating the change in 
>>>>>> behavior). Either something like the LLVM test, testing the pass 
>>>>>> sequence, or something with very simple IR (something that can robustly 
>>>>>> demonstrate the change in optimization behavior due to this patch and 
>>>>>> will be resilient to as many other changes to LLVM as possible (ie: 
>>>>>> something that captures the essence of this change)).
>>>>>
>>>>> I'm not sure how to test this change if LLVM is treated as a black box to 
>>>>> clang. This patch doesn't seem to change anything fundamental from the 
>>>>> Clang point of view. My understanding is that the previous placement of 
>>>>> the unique name pass in the pipeline didn't seem particularly important 
>>>>> to Clang, therefore we ended up just testing the whole Clang output. If 
>>>>> that's the case, I don't think we need to test the pass order here with 
>>>>> this change.
>>>>
>>>> My understanding was that the change in pass ordering has some observable 
>>>> change in the total behavior of LLVM? So an end-to-end test could be used 
>>>> here (I tend towards preferring the checking the pass ordering, but 
>>>> understand @aeubanks contrasting position)  - that's what I was trying to 
>>>> describe in the "or something with very simple IR (... )" part of my 
>>>> suggestion. If the change in pass order can be observed in terms of 
>>>> different final IR, that's what an end-to-end Clang test could validate.
>>>
>>> The change on the LLVM side is observable on the IR level when pseudo probe 
>>> is enabled. I think that LLVM change is transparent to Clang. In other 
>>> words, Clang doesn't need to know that the LLVM change is to favor pseudo 
>>> probe.
>>
>> Clang's overall, user-facing behavior changed (otherwise why make this 
>> change, right?) due to a change to Clang's source code, so it should be 
>> tested to demonstrate that the source change had the desired effect and 
>> doesn't regress. These particular changes are awkward because things like 
>> CodeGenOpts aren't serialized, unlike LLVM IR, but that doesn't mean they 
>> shouldn't be tested - it means the testing isn't as elegant as it is for 
>> serialized IR.
>
> Yes, the user-facing behavior changed and it is tested by an LLVM test. I 
> think that's transparent to clang and Clang doesn't know why that change is 
> made in LLVM. A possible clang test could be to enable pseudo probe and check 
> the output of pseudo probe metadata where unique linkage names are encoded. 
> But we don't even has such a test in the LLVM part either.

If this didn't involve a code change in Clang, I'd generally agree with you - 
but this is a code change in Clang required/intended to elicit a change in 
behavior, and should be tested to demonstrate that change in behavior.

> A possible clang test could be to enable pseudo probe and check the output of 
> pseudo probe metadata where unique linkage names are encoded. But we don't 
> even has such a test in the LLVM part either.

Yes, I think that would be one valid option - or a test that validates the 
change in the pass order, like the LLVM test. Either would be acceptable to me 
- I'd personally lean more towards the pass order test, like the LLVM one, and 
@aeubanks has expressed a preference towards and end-to-end type test, I 
believe.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D94019

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

Reply via email to