In C and C++ the expression exp1,exp2 means evaluate exp1, then exp2 and return the value of exp2. If exp1 has no side effects (assignments, I/O or system calls) it need not be evaluated at all. How can we test exp1's AST, prior to code generation, to see if we can suppress its evaluation?.