https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89400
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ramana at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- All the "unaligned_access" instructions use %? in the patterns (except the last one) where %? is TARGET_32BIT specific. If the unaligned loads/stores don't really work for thumb1, then if (! opts_set->x_unaligned_access) { opts->x_unaligned_access = (TARGET_32BIT_P (opts->x_target_flags) && arm_arch6 && (arm_arch_notm || arm_arch7)); } else if (opts->x_unaligned_access == 1 && !(arm_arch6 && (arm_arch_notm || arm_arch7))) { warning (0, "target CPU does not support unaligned accesses"); opts->x_unaligned_access = 0; } should be changed to: else if (opts->x_unaligned_access == 1 && (!(arm_arch6 && (arm_arch_notm || arm_arch7)) || !TARGET_32BIT_P (opts->x_target_flags))) If the unaligned_access instructions are also for thumb1, then perhaps they need to set predicable to no for !TARGET_32BIT e.g. based on isa attribute and avoid using %? in the thumb1 alternative patterns.