On Tue, Aug 15, 2017 at 6:44 PM, Dibyendu Majumdar <mobile@xxxxxxxxxxxxxxx> wrote: > Hi, > > I think it would be good to perform a detailed comparison / assessment > of where the problem lies currently versus the new solution. I get the > impression that the current problem is not well explained or > understood. I haven't look into the weather the new implementation does every thing right yet. I can explain pretty well how the current implementation of SSA is wrong. In short it is violating the SSA dominance property. More specifically. 1) We have the "usage before define". The crazy programmer bug is trigger by this. Hopefully remove the single store short cut is going to help. My impression is that there is still more offender of "usage before define". 2) We don't place phi node at dominance frontier of the pseudo definition. 3) Uninitialized variable need to be treated as having implicate defined value of "uninitialzed" at entry point. > Here are two known issues at present. You can see the old linearized > output and the new linearized output - both produced with > simplifications switched off. > > C code: > https://github.com/dibyendumajumdar/dmr_c/blob/newssa/tests/bugs/simplifybug.c > > Old linearized output: > https://github.com/dibyendumajumdar/dmr_c/blob/newssa/tests/bugs/simplifybug_old.lin > > New linearized output: > https://github.com/dibyendumajumdar/dmr_c/blob/newssa/tests/bugs/simplifybug_new.lin I haven't have time to take a closer look of the output. The above 3 points should cover what is dong wrong with our SSA form. That 3 points is also easier to reason than staring at the low level byte codes. Chris -- 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