On 10/26/07, J.C. Pizarro <[EMAIL PROTECTED]> wrote: > What is the matter if the 'b' var. is unused and > optimally removed by the SSA algorithm?
In this case, it will not be removed. If any of the p_i pointers is ever dereferenced in this code, that will be considered a use of variable 'b'. > int a; > int b; > > a = 2; > p_4 = phi(a) Is this 'phi' as in a PHI function or a function in your code? If the former, then it's wrong, you can never have such a phi function in this code snippet. > // b doesn't used here > if (...) > p_1 = &a; > else > p_2 = &b; > endif > p_3 = phi (p_1, p_2) > > points-to (p_1) = { a } > points-to (p_2) = { b } > points-to (p_3) = { a b } > > In this case, should exist hidden p_5 = phi(b) although 'b' is not used > but yes used his reference to phantom cell 'b'. It's weird for me. I recommend that you read about the SSA form. PHI nodes are special constructs that exist only where multiple control flow paths reach a common join node. The getting started section of the wiki has links to books and articles about it. Morgan's book on compiler optimization is fairly good. > I've not idea WHERE put "hidden p_5 = phi(b)"! No such thing exists. > Too it's possible to ocurr *p_2 = c where 'b' will be hidden used through > the pointer p_2. It's too weird for me. Yes, that is possible, an that is precisely what alias analysis tells the compiler. We know from the analysis that reading/writing to '*p_2' is exactly the same as reading/writing to 'b'.