On Mon, 3 Apr 2006, Richard Guenther wrote: > > || (TREE_CODE (type) == INTEGER_TYPE > && (TREE_CODE (arg1) == INTEGER_CST > || TYPE_UNSIGNED (type) > || (flag_wrapv && !flag_trapv))) > > Does this sound reasonable?
Yes, this sounds reasonable. It was not the negate_expr_p call that's causing your problems but the overly restrictive guard on this transformation. Let me know the results of a bootstrap and regression test in case that points out something I've missed. Roger --