summaryrefslogtreecommitdiff
path: root/gcc/config/aarch64/aarch64-builtins.c
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-25 11:54:22 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-25 11:54:22 +0000
commite9fd1d1b34815215aa1398fd7be361dd8d6d5593 (patch)
treefb1e10e7a1da69a790d20a6e1ded81fbfd66b4aa /gcc/config/aarch64/aarch64-builtins.c
parent3f6183e5e3f1466640a80fd1cdc982dff415f226 (diff)
downloadgcc-e9fd1d1b34815215aa1398fd7be361dd8d6d5593.tar.gz
[AArch64] Force __builtin_aarch64_fp[sc]r argument into a REG
The testcase triggered an ICE because the builtin expansion code passed the output of expand_normal directly to the SET_FP[SC]R generator, without forcing it into a register first. gcc/ * config/aarch64/aarch64-builtins.c (aarch64_expand_builtin): Force __builtin_aarch64_fp[sc]r arguments into a register. gcc/testsuite/ * gcc.target/aarch64/fpcr_fpsr_1.c: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228116 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/aarch64/aarch64-builtins.c')
-rw-r--r--gcc/config/aarch64/aarch64-builtins.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c
index 4ed2a8b6cb0..80916a9fca2 100644
--- a/gcc/config/aarch64/aarch64-builtins.c
+++ b/gcc/config/aarch64/aarch64-builtins.c
@@ -1171,7 +1171,7 @@ aarch64_expand_builtin (tree exp,
icode = (fcode == AARCH64_BUILTIN_SET_FPSR) ?
CODE_FOR_set_fpsr : CODE_FOR_set_fpcr;
arg0 = CALL_EXPR_ARG (exp, 0);
- op0 = expand_normal (arg0);
+ op0 = force_reg (SImode, expand_normal (arg0));
pat = GEN_FCN (icode) (op0);
}
emit_insn (pat);