On Mon, 29 May 2017, Yuri Gribov wrote: > This improve VRP handling for bitfield comparisons added by previous patch. > > -I
+is_masked_range_test (tree name, tree valt, enum tree_code cond_code, bool is_else_edge, + tree *new_name, long line + wide_int mask = maskt, + inv_mask = ~mask, + val = valt; // Assume VALT is INTEGER_CST indent is off here, please use separate declarations: wide_int mask = maskt; wide_int inv_mask = ~mask; ... +// bool is_range = (cond_code == EQ_EXPR) ^ is_else_edge; + bool is_range = cond_code == EQ_EXPR; + do not leave dead code around. + if (is_range) + { + *low_code = val == min ? (enum tree_code) 0 : GE_EXPR; + *high_code = val == max ? (enum tree_code) 0 : LE_EXPR; + } please use ERROR_MARK here instead of (enum tree_code) 0. + { + if (low_code) and check with != ERROR_MARK here. + if (is_masked_range_test (name, val, comp_code, is_else_edge, &name, &low, &low_code, &high, &high_code)) + { long line again. Otherwise looks ok. Thanks, Richard.