Hi Luc, On 12 September 2017 at 11:48, Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> wrote: >> I have some practical reasons for it: >> >> a) In the JIT world, we often want fast compilation. I already disable >> all subsequent phases, and generate code from the initial linear >> output. > > Amusingly, the Simple SSA method was (partially) created for such uses. > I think you can easily understand why. Yes, I think the SSA form is important for simplifications. And for some back-ends such as NanoJIT which do not have optimizations that LLVM has, the Sparse layer can act as the optimizer. But the issue right now is that the simplifications are not always correct even with the new SSA so that I have to disable everything anyway. And having the phi nodes then actually complicates things. > > > Anyway, I'm more than a bit tired of this 'debate', mainly based by half-truths, > assumptions and misunderstandings. Given that there could be major changes in the output (at least for the initial one) then it is good to make sure that there is a proper consideration of pros and cons. I am not arguing against the new implementation at all - just saying it should be a later phase. I also accept your point that currently there are issues with the SSA construction, and accept that changes are necessary. > > As I have already stated twice, I've put the code for SSSA on hold, focusing > instead on the *correct* conversion of the *others variables* (since SSSA is > only concerned by local variables which can never be aliased to anything, > depending on your code that can be most variables or only a small number). > > When I'll have something I'm happy with, I'll evaluate (read: "based > on numbers") > if there is any value left to the SSSA method or not. If I see there > is a significant > value for some uses, I'll submit it and we can have this 'debate'. > *If* the code reaches upstream and bothers you too much, as you had > already asked > for, you will be able to disable it by simply doing so that the call > to 'is_promotable()' > always returns false and you will have all your nice stores & loads. > > Meanwhile, the current code is broken and the existing code with SSSA > *can* be used to test, experiment, evaluate, compare, ... > Okay that is exactly what I am giving you - feedback based on using the new implementation. In fact I started with the assumption that it solved all the problems, only after using and testing it found that it didn't, i.e. later simplifications are still causing issues. Regards Dibyendu -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html