https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81863
--- Comment #5 from Yvan Roux <yroux at gcc dot gnu.org> --- Thinking more about it, I think that the right place to fix it is in the define of TARGET_HAVE_MOVT or TARGET_USE_MOVT, but I'm a bit confused with these two macros. My understanding of their semantic, is that it should be in TARGET_USE_MOVT (the chip has movt support but we don't want to use it with when -mword_relocations is used), but if we do so the issue movw/movt will be generated anyway since arm_movt pattern and "j" contraint uses TARGET_HAVE_MOVT. In fact, it seems to me that most of TARGET_HAVE_MOVT should be replaced by TARGET_USE_MOVT. Kyrill, Thomas can you educate me ?