On Sun, Aug 20, 2017 at 12:12 PM, Dibyendu Majumdar <mobile@xxxxxxxxxxxxxxx> wrote: > Okay the linear output above seems SSA if we consider how it is shown > in the output. But in the code, access to 0[a] occurs via a pseudo - > of type PSEUDO_SYM. We see multiple stores happening to this pseudo. > So the question is each access generated through a different instance > of a pseudo? I see that in the code if a symbol already has a pseudo After promote the memory into pseudo, yes. each store is consider a new "define" from the SSA point of view. So it is a new pseudo, or new number of the variable in some SSA book. > then it is reused. So presumably then PSEUDO_SYMs are not SSA, but > PSEUDO_REGs are? PSEUDO_SYMS are static, you can think them as symbol address. It never change. There for it does not need phi node to qualify as SSA. > So then is it more accurate to say that PSEUDO_SYM and possibly > PSEUDO_ARG too - represent memory access, and are just a proxy for > stack allocated memory? I am not sure I understand you. PSEUDO_SYM is the address of the symbol. Load/Store is using this address to perform memory access. After convert the memory content into pseudo, that new pseudo represent the memory storage need to be SSA. PSEUDO_ARG is just a pseudo receiving the function call arguments. It will not change either. Any time some one assign a value to the arguments, it will generate new instance of the pseudo. Spare IR does not care if the argument is passing from stack or not. 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