aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Edelsohn <dje.gcc@gmail.com>2015-10-06 13:46:34 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2015-10-06 09:46:34 -0400
commit2d546fb73bb1ddeec67162ff7b2bf74f3caf7c18 (patch)
treea0ca7167aa5af236ae6d73a006de920ec0c772d5 /gcc
parentbdef54425126ff1cb3c61424e5d062d8b7608dd8 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c10
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);