https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87374
Thomas Preud'homme <thopre01 at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED --- Comment #3 from Thomas Preud'homme <thopre01 at gcc dot gnu.org> --- The ICE occurs because of a mismatch between the movw/movt splitter for arm_disable_literal_pool (-mslow-flash-data) and the arm_movt instruction pattern. The latter is guarded by -mword-relocations being disabled (via arm_valid_symbolic_address_p) since it requires patching a 16-bit immediate but not the former. Adding a similar check in the splitter causes relocation error at assembly time though as GCC generate symbol+offset references instead of doing the add as a separate instructions.