From: David Edelsohn Date: Tue, 6 Oct 2015 13:46:34 +0000 (+0000) Subject: re PR c/65345 (ICE with _Generic selection on _Atomic int) X-Git-Tag: basepoints/gcc-7~4123 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2d546fb73bb1ddeec67162ff7b2bf74f3caf7c18;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8ec89e37b013..d8e7a86a89bb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-10-06 David Edelsohn + + 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 * config/rl78/rl78.c (rl78_rtx_costs): Improve cost estimates for diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index c00d73072c84..e095f0353870 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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);