[Bug middle-end/71942] [ARM] Zero-extending whats allready zero-extended even when -O3

albrecht.guendel at web dot de gcc-bugzilla@gcc.gnu.org
Wed Jul 20 09:37:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71942

--- Comment #3 from Albi <albrecht.guendel at web dot de> ---
Agreed, after way more google research a lot of people complain about this.

Never the less this poses a big problem since it halves the performance of
every load on a sub-32-bit datatype.

Imho the problem issnt in the optimizer... i think the fundamental problem is
that the instruction-set is not aware of the implicit unsigned zero-extention
thats allready done by the load-instruction.

With that knowledge the idea of inserting the (redundant) zero-extending
instruction like "uxth" wouldnt even come up even without optimization.

This is at least true for every unsigned short or unsigned char.
Signed types need the sign extension of course.

In other words: there is actually no reason the instruction should be issued in
the first place and therefore the optimizer should not really need to remove it
afterwards.  Its fundamentally redundant.


More information about the Gcc-bugs mailing list