re PR c/65345 (ICE with _Generic selection on _Atomic int)
authorDavid Edelsohn <dje.gcc@gmail.com>
Tue, 6 Oct 2015 13:46:34 +0000 (13:46 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Tue, 6 Oct 2015 13:46:34 +0000 (09:46 -0400)
        PR c/65345
        * config/rs6000/rs6000.c (rs6000_atomic_assign_expand_fenv):
        Adjust to use create_tmp_var_raw instead of create_tmp_var.

From-SVN: r228524

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 8ec89e37b013bf425ac1c934cf1bfcc020e23362..d8e7a86a89bbfab0ae0e369f36137495a825f484 100644 (file)
@@ -1,3 +1,9 @@
+2015-10-06  David Edelsohn  <dje.gcc@gmail.com>
+
+       PR c/65345
+       * config/rs6000/rs6000.c (rs6000_atomic_assign_expand_fenv):
+       Adjust to use create_tmp_var_raw instead of create_tmp_var.
+       
 2015-10-06  Nick Clifton  <nickc@redhat.com>
 
        * config/rl78/rl78.c (rl78_rtx_costs): Improve cost estimates for
index c00d73072c84e366168c7292abf170f0093a7575..e095f03538703cfc36abbf831baea55d4ad39c26 100644 (file)
@@ -36475,8 +36475,8 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
          DECL_EXTERNAL (atomic_update_decl) = 1;
        }
 
-      tree fenv_var = create_tmp_var (double_type_node);
-      mark_addressable (fenv_var);
+      tree fenv_var = create_tmp_var_raw (double_type_node);
+      TREE_ADDRESSABLE (fenv_var) = 1;
       tree fenv_addr = build1 (ADDR_EXPR, double_ptr_type_node, fenv_var);
 
       *hold = build_call_expr (atomic_hold_decl, 1, fenv_addr);
@@ -36503,7 +36503,7 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
   const unsigned HOST_WIDE_INT hold_exception_mask =
     HOST_WIDE_INT_C (0xffffffff00000007);
 
-  tree fenv_var = create_tmp_var (double_type_node);
+  tree fenv_var = create_tmp_var_raw (double_type_node);
 
   tree hold_mffs = build2 (MODIFY_EXPR, void_type_node, fenv_var, call_mffs);
 
@@ -36532,7 +36532,7 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
   const unsigned HOST_WIDE_INT clear_exception_mask =
     HOST_WIDE_INT_C (0xffffffff00000000);
 
-  tree fenv_clear = create_tmp_var (double_type_node);
+  tree fenv_clear = create_tmp_var_raw (double_type_node);
 
   tree clear_mffs = build2 (MODIFY_EXPR, void_type_node, fenv_clear, call_mffs);
 
@@ -36564,7 +36564,7 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
   const unsigned HOST_WIDE_INT new_exception_mask =
     HOST_WIDE_INT_C (0x1ff80fff);
 
-  tree old_fenv = create_tmp_var (double_type_node);
+  tree old_fenv = create_tmp_var_raw (double_type_node);
   tree update_mffs = build2 (MODIFY_EXPR, void_type_node, old_fenv, call_mffs);
 
   tree old_llu = build1 (VIEW_CONVERT_EXPR, uint64_type_node, old_fenv);