Commit 2d546fb7 by David Edelsohn Committed by David Edelsohn

re PR c/65345 (ICE with _Generic selection on _Atomic int)

        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
parent bdef5442
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> 2015-10-06 Nick Clifton <nickc@redhat.com>
* config/rl78/rl78.c (rl78_rtx_costs): Improve cost estimates for * config/rl78/rl78.c (rl78_rtx_costs): Improve cost estimates for
...@@ -36475,8 +36475,8 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) ...@@ -36475,8 +36475,8 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
DECL_EXTERNAL (atomic_update_decl) = 1; DECL_EXTERNAL (atomic_update_decl) = 1;
} }
tree fenv_var = create_tmp_var (double_type_node); tree fenv_var = create_tmp_var_raw (double_type_node);
mark_addressable (fenv_var); TREE_ADDRESSABLE (fenv_var) = 1;
tree fenv_addr = build1 (ADDR_EXPR, double_ptr_type_node, fenv_var); tree fenv_addr = build1 (ADDR_EXPR, double_ptr_type_node, fenv_var);
*hold = build_call_expr (atomic_hold_decl, 1, fenv_addr); *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) ...@@ -36503,7 +36503,7 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
const unsigned HOST_WIDE_INT hold_exception_mask = const unsigned HOST_WIDE_INT hold_exception_mask =
HOST_WIDE_INT_C (0xffffffff00000007); 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); 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) ...@@ -36532,7 +36532,7 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
const unsigned HOST_WIDE_INT clear_exception_mask = const unsigned HOST_WIDE_INT clear_exception_mask =
HOST_WIDE_INT_C (0xffffffff00000000); 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); 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) ...@@ -36564,7 +36564,7 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
const unsigned HOST_WIDE_INT new_exception_mask = const unsigned HOST_WIDE_INT new_exception_mask =
HOST_WIDE_INT_C (0x1ff80fff); 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 update_mffs = build2 (MODIFY_EXPR, void_type_node, old_fenv, call_mffs);
tree old_llu = build1 (VIEW_CONVERT_EXPR, uint64_type_node, old_fenv); tree old_llu = build1 (VIEW_CONVERT_EXPR, uint64_type_node, old_fenv);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment