http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35860
Georg-Johann Lay <gjl at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |gjl at gcc dot gnu.org Depends on| |50447 --- Comment #14 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-09-21 14:25:09 UTC --- The bloat is partly caused by PR50447 because the a |= 1 leads to reload of the constant 1 into an SI register. For that constant no reloading is needed. However, insn *iorsi3_clobber is hidden behind iorsi3 so that a reload happens and causes a part of the observed code bloat. Moreover, operations like AND, IOR, XOR are implemented in a suboptimal way. The other part of the code bloat is simply because of -f[no-]split-wide-types; there will always be cases where splitting wide types leads to bloated (or sort of) code because there might be SUBREGs all over the place. Not all insns can be split, e.g. addition, subtraction, comparison, etc. so that there will be mixture of split and non-split insns.