https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67239
--- Comment #10 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Richard Biener from comment #7) > No, even for the false edge we can record proper expressions, see > record_conds and how it handles the cases if the condition was true or false. > record_conds inserted many temporary expressions with both TRUE and FALSE values. But /* If that didn't simplify to a constant see if we have recorded temporary expressions from taken edges. */ if (!val || TREE_CODE (val) != INTEGER_CST) { tree ops[2]; ops[0] = lhs; ops[1] = rhs; val = vn_nary_op_lookup_pieces (2, gimple_cond_code (stmt), boolean_type_node, ops, NULL); } only lookups and uses one value.