https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65778
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Can't you not use just a move instead of a ldr here? basically it is the assembler which creates the constant pool here and that is too far from the where the ldr is located because the function is "huge".