https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63783
Michael Karcher <gcc-bugzilla at mkarcher dot dialup.fu-berlin.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |gcc-bugzilla at mkarcher dot dialu | |p.fu-berlin.de --- Comment #3 from Michael Karcher <gcc-bugzilla at mkarcher dot dialup.fu-berlin.de> --- Created attachment 33954 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33954&action=edit Remove assumption that "not" is logical negate Indeed the treg combine pass is broken. Thanks to the nicely documented code, it could easily be determined, that this optimization pass contains the wrong assumption that "not" is an assembler instruction that can be used for logical negation of a register. As this is a bitwise negate instruction, it can not be used that way. As I was unable to find a machine instruction that performs logical negation, I prepared a patch that completely removes the parts that rely on a logical negate instruction, while keeping all other aspects on the optimization pass intact.