On 10/21/2021 9:53 PM, Aldy Hernandez wrote:


    >
    > Phew, I think we're finally converging on a useful set of
    threading tests :).
    >
    > OK for trunk?
    Mostly, I just worry about losing the key test for the FSM
    optimization.


With the provided test, the forward threaders can't thread through the backedge and into the switch. Disabling the other threaders was just a precaution. I just wanted to make sure it happened late because of the loop restrictions we have in place. I could enable the forward threaders to prove they can't get it.
Right.  There was a time when the forward threaders handled the backedge, but it's much better handled by the backwards threader.

I could add more cases and check that we have N or more threads through the back edges. .and if it makes you feel safer, we could even convert the test to gimple and test the specific thread sequence. It's just that the gimple FE test is bound to get large and difficult to decipher if I start adding many switch cases.
I would love if we could turn the testcase into a gimple based test.  I just shudder at the thought of trying to pull that together.  And yes, it's awful hard to decipher, both in terms of test behavior and in terms of what the key jump threads are.


I'm just trying to avoid a huge test with 40 potential threads where no one really knows how many we should get....as every threading pass opens up possibilities for other passes.
Understood.  To some degree it's inherent in the problem.  The smarter our threaders get the more likely they are to discover new opportunities, so there's clearly a maintenance burden to these tests over time.  It's made worse by the interactions with BRANCH_COST as well as the heuristics for switch conversion.

Gimple based tests would significantly help the the latter issues, but I don't know how to tackle the problem of exposing more jump threads as our threaders get better.


Ughhhh....we could put the test back, check for some random large number, and come up with a more satisfactory test later? ;-)
I thought our "counting" based tests could only check equality (ie, expect to see this string precisely N times).  Though if we could check that # threads realized was > some low water mark, that'd probably be better than what we've got right now.


jeff

Reply via email to