https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100236
--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Richard Earnshaw <rearn...@gcc.gnu.org>: https://gcc.gnu.org/g:01d0bda8bdf3cd804e1e00915d432ad0cdc49399 commit r12-148-g01d0bda8bdf3cd804e1e00915d432ad0cdc49399 Author: Richard Earnshaw <rearn...@arm.com> Date: Tue Apr 27 12:25:30 2021 +0100 arm: fix UB when compiling thumb2 with PIC [PR100236] arm_compute_save_core_reg_mask contains UB in that the saved PIC register number is used to create a bit mask. However, for some target options this register is undefined and we end up with a shift of ~0. On native compilations this is benign since the shift will still be large enough to move the bit outside of the range of the mask, but if cross compiling from a system that truncates out-of-range shifts to zero (or worse, raises a trap for such values) we'll get potentially wrong code (or a fault). gcc: PR target/100236 * config/arm/arm.c (THUMB2_WORK_REGS): Check PIC_OFFSET_TABLE_REGNUM is valid before including it in the mask.