On Sun, Aug 6, 2017 at 10:24 AM, Christopher Li <sparse@xxxxxxxxxxx> wrote: > The source code has some variable uninitialized is still valid > C source code. In such condition the compiler produce transformation > that break the dominance property of SSA is wrong IMHO. Clarify, I mean the compiler is wrong. The source code has uninitialized variable is still legal in the C stander. >> The other way to see it is something like: "ok, this means that the >> pseudo was not initialized" (and ignore the internal bug aspect) and > > No, in SSA world, there is no pseudo is not initialized. Please refer back Let me rephrase, because I notice the I use the word "initialized" is not precise here. In SSA word, there is no pseudo is not *defined*. Chris > Dominance Property of SSA: > 1. If x is used in a Phi-function in block N, > then the definition of x dominates *every* <==== notice "every" > predecessor of N. > > It has incoming edge to the phi node, it need to be defined. > It means that you can't just do what ever you want with that > edge. You can pick a what ever initial value for the uninitialized > value, you can't just pretend that uninitialized edge does not exist > and do whatever you want with it. > >> then process it as such (for example choose any value you like for it). >> You can call this "a new/legal SSA form" if you like but it will only >> confuse discussion and won't change it's nature. > > OK, points taken. Replace "illegal SSA from" with "SSA form that violate > the SSA dominance property" so that we are clear what we are talking > about here. > > 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