On Tue, Aug 22, 2017 at 10:59:54AM -0400, Christopher Li wrote: > On Tue, Aug 22, 2017 at 10:53 AM, Dibyendu Majumdar > <mobile@xxxxxxxxxxxxxxx> wrote: > >> > > > > It will be great if the SSSA series is merged and tested a bit before > > merging other changes. > > I can create a topic branch for SSSA on sparse repository. > > Merge it when it is ready? I've put it on hold for the moment. The conversion of purely local vars was the easy job. The real challenge is to do it for the other loads & stores (in simplify_symbol_usage() & simplify_memops()). I'm working on it and have some encouraging results: - correct phi-nodes - pass the test-suite - no crashes in GCC test-suite and others - no infinite loops - no catastrophic performance on exceptional workoads - roughly convert as much stores & loads as currently - good performance (within 2-5% as rc5 on some workloads) - in some case, surprising good effect on optimization I don't know yet if keeping the Simple SSA during linearization will be worth to keep or not. > Right now I do wish the SSSA has the two options I request > before. I don't remember what was the other option you asked but keeping both the old and the new method is not something I'm interested in. We know that the current method is broken. In fact, it's broken in two different ways: - the phi-nodes are mis-placed (they are on the use site instead of the meet point). - each phi-nodes have as many sources as there are definitions for this variable (more or less) instead of having one for each parents. I also recently discovered that the logic for aliases is broken. For example, code like: int foo(void) { int i = 1; int *a; int **p; a = &i; p = &a; *p[0] = 0; return i; } is mis-compiled as it always returns 1 instead of 0 (it fails to see that *p[0] is aliased to i). What I'm interested in is, in this order: 1) produce correct IR 2) convert as much loads & stores as currently (but only when it's correct to do it, of course) 3) have performance that is similar as we currently have Point 2) is needed to avoid more false warnings during context checking (and have a very significant effect on performance). -- Luc -- 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