https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85261
--- Comment #6 from Thomas Preud'homme <thopre01 at gcc dot gnu.org> --- Author: thopre01 Date: Wed Apr 18 13:17:30 2018 New Revision: 259469 URL: https://gcc.gnu.org/viewcvs?rev=259469&root=gcc&view=rev Log: [ARM] Fix PR85261: ICE with FPSCR setter builtin Instruction pattern for setting the FPSCR expects the input value to be in a register. However, __builtin_arm_set_fpscr expander does not ensure that this is the case and as a result GCC ICEs when the builtin is called with a constant literal. This commit fixes the builtin to force the input value into a register. It also remove the unneeded volatile in the existing fpscr test and fixes the function prototype. 2018-04-18 Thomas Preud'homme <thomas.preudho...@arm.com> Backport from mainline 2018-04-11 Thomas Preud'homme <thomas.preudho...@arm.com> gcc/ PR target/85261 * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand into register. gcc/testsuite/ PR target/85261 * gcc.target/arm/fpscr.c: Add call to __builtin_arm_set_fpscr with literal value. Expect 2 MCR instruction. Fix function prototype. Remove volatile keyword. Modified: branches/gcc-6-branch/gcc/ChangeLog branches/gcc-6-branch/gcc/config/arm/arm-builtins.c branches/gcc-6-branch/gcc/testsuite/ChangeLog branches/gcc-6-branch/gcc/testsuite/gcc.target/arm/fpscr.c