[gcc(refs/vendors/ARM/heads/arm-struct-reorg-wip)] riscv: Fix up riscv_atomic_assign_expand_fenv [PR94950]

Tamar Christina tnfchris@gcc.gnu.org
Fri Jul 17 14:58:12 GMT 2020


https://gcc.gnu.org/g:5454a13add37fa6a8eedbf9d2f6bdc63a7825e2c

commit 5454a13add37fa6a8eedbf9d2f6bdc63a7825e2c
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed May 6 09:40:33 2020 +0200

    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.

Diff:
---
 gcc/ChangeLog                     | 6 ++++++
 gcc/config/riscv/riscv-builtins.c | 4 ++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8c80642c85e..c948d829d6b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +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.
+
 2020-05-06  Jakub Jelinek  <jakub@redhat.com>
 
 	PR rtl-optimization/94873
diff --git a/gcc/config/riscv/riscv-builtins.c b/gcc/config/riscv/riscv-builtins.c
index 201fdb52f20..a45108e0355 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;
 }


More information about the Gcc-cvs mailing list