aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2020-05-06 09:40:33 +0200
committerJakub Jelinek <jakub@redhat.com>2020-05-06 09:40:33 +0200
commitb4ace720e004f736f1ee46b374c12f9826aad630 (patch)
treed5586818acce882d5f7ed57417f60b3117506be8
parentf14848aea70066777faf201c0b6eb3c5520bfab9 (diff)
downloadgcc-b4ace720e004f736f1ee46b374c12f9826aad630.zip
gcc-b4ace720e004f736f1ee46b374c12f9826aad630.tar.gz
gcc-b4ace720e004f736f1ee46b374c12f9826aad630.tar.bz2
riscv: Fix up riscv_atomic_assign_expand_fenv [PR94950]
Similarly to the fixes on many other targets, riscv needs to use TARGET_EXPR to avoid having the create_tmp_var_raw temporaries without proper DECL_CONTEXT and not mentioned in local decls. 2020-05-06 Jakub Jelinek <jakub@redhat.com> PR target/94950 * config/riscv/riscv-builtins.c (riscv_atomic_assign_expand_fenv): Use TARGET_EXPR instead of MODIFY_EXPR for first assignment to old_flags.
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/riscv/riscv-builtins.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8040d0d..7a691f2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2020-05-06 Jakub Jelinek <jakub@redhat.com>
+ PR target/94950
+ * config/riscv/riscv-builtins.c (riscv_atomic_assign_expand_fenv): Use
+ TARGET_EXPR instead of MODIFY_EXPR for first assignment to old_flags.
+
PR rtl-optimization/94873
* combine.c (combine_instructions): Don't optimize using REG_EQUAL
note if SET_SRC (set) has side-effects.
diff --git a/gcc/config/riscv/riscv-builtins.c b/gcc/config/riscv/riscv-builtins.c
index 201fdb5..a45108e 100644
--- a/gcc/config/riscv/riscv-builtins.c
+++ b/gcc/config/riscv/riscv-builtins.c
@@ -283,8 +283,8 @@ riscv_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
tree fsflags = GET_BUILTIN_DECL (CODE_FOR_riscv_fsflags);
tree old_flags = create_tmp_var_raw (RISCV_ATYPE_USI);
- *hold = build2 (MODIFY_EXPR, RISCV_ATYPE_USI, old_flags,
- build_call_expr (frflags, 0));
+ *hold = build4 (TARGET_EXPR, RISCV_ATYPE_USI, old_flags,
+ build_call_expr (frflags, 0), NULL_TREE, NULL_TREE);
*clear = build_call_expr (fsflags, 1, old_flags);
*update = NULL_TREE;
}