diff options
author | David Edelsohn <dje.gcc@gmail.com> | 2015-10-06 13:46:34 +0000 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2015-10-06 09:46:34 -0400 |
commit | 2d546fb73bb1ddeec67162ff7b2bf74f3caf7c18 (patch) | |
tree | a0ca7167aa5af236ae6d73a006de920ec0c772d5 /gcc | |
parent | bdef54425126ff1cb3c61424e5d062d8b7608dd8 (diff) | |
download | gcc-2d546fb73bb1ddeec67162ff7b2bf74f3caf7c18.zip gcc-2d546fb73bb1ddeec67162ff7b2bf74f3caf7c18.tar.gz gcc-2d546fb73bb1ddeec67162ff7b2bf74f3caf7c18.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 10 |
2 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8ec89e3..d8e7a86 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index c00d730..e095f03 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); |