Hi Chris, On 20 August 2017 at 17:20, Christopher Li <sparse@xxxxxxxxxxx> wrote: > 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. > Okay thanks. > >> 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. > Thanks, I understand this better now. 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