------- Comment #5 from uros at kss-loka dot si 2006-07-18 08:06 ------- This error can be tracked down to fold_negate_expr() returning NULL_TREE via this path:
(a) constant_multiple_of() calls fold_unary_to_constant(): /* If BOT seems to be negative, try dividing by -BOT instead, and negate the result afterwards. */ if (tree_int_cst_sign_bit (bot)) { negate = true; bot = fold_unary_to_constant (NEGATE_EXPR, type, bot); } (b) fold_unary_to_constant() calls fold_unary() (c) fold_unary() calls fold_unary_negate() for NEGATE_EXPR: case NEGATE_EXPR: tem = fold_negate_expr (arg0); if (tem) return fold_convert (type, tem); return NULL_TREE; (d) fold_negate_expr() returns NULL_TREE, because: case INTEGER_CST: tem = fold_negate_const (t, type); if (! TREE_OVERFLOW (tem) || TYPE_UNSIGNED (type) || ! flag_trapv) return tem; break; ... default: break; } return NULL_TREE; } >From here, I don't know, what a correct solution would be... -- uros at kss-loka dot si changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |uros at kss-loka dot si http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28411