aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2015-11-09 12:14:07 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2015-11-09 12:14:07 +0000
commit7b95c729031bc2d698075a8c594b7ed6ba9e0191 (patch)
treef319f7fa44f0d74b89b6dc926d17db42fad3bce5
parent0780fbabe817acfecd44ea2ca48df0bb0b7af9cb (diff)
downloadgcc-7b95c729031bc2d698075a8c594b7ed6ba9e0191.zip
gcc-7b95c729031bc2d698075a8c594b7ed6ba9e0191.tar.gz
gcc-7b95c729031bc2d698075a8c594b7ed6ba9e0191.tar.bz2
re PR middle-end/68251 (sorry, unimplemented: reverse storage order for BLKmode)
PR middle-end/68251 * tree-core.h (REF_REVERSE_STORAGE_ORDER): Move around. * tree.h (REF_REVERSE_STORAGE_ORDER): Change to default_def_flag. * tree-streamer-in.c (unpack_ts_base_value_fields): Adjust. * tree-streamer-out.c (pack_ts_base_value_fields): Likewise. From-SVN: r230015
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/tree-core.h10
-rw-r--r--gcc/tree-streamer-in.c5
-rw-r--r--gcc/tree-streamer-out.c5
-rw-r--r--gcc/tree.h2
5 files changed, 22 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4e96aeb..2c80165 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2015-11-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR middle-end/68251
+ * tree-core.h (REF_REVERSE_STORAGE_ORDER): Move around.
+ * tree.h (REF_REVERSE_STORAGE_ORDER): Change to default_def_flag.
+ * tree-streamer-in.c (unpack_ts_base_value_fields): Adjust.
+ * tree-streamer-out.c (pack_ts_base_value_fields): Likewise.
+
2015-11-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR rtl-optimization/67749
diff --git a/gcc/tree-core.h b/gcc/tree-core.h
index d7b4ca4..ff061ef 100644
--- a/gcc/tree-core.h
+++ b/gcc/tree-core.h
@@ -1157,9 +1157,6 @@ struct GTY(()) tree_base {
TYPE_SATURATING in
other types
- REF_REVERSE_STORAGE_ORDER in
- BIT_FIELD_REF, MEM_REF
-
VAR_DECL_IS_VIRTUAL_OPERAND in
VAR_DECL
@@ -1174,6 +1171,9 @@ struct GTY(()) tree_base {
default_def_flag:
+ TYPE_FINAL_P in
+ RECORD_TYPE, UNION_TYPE and QUAL_UNION_TYPE
+
TYPE_VECTOR_OPAQUE in
VECTOR_TYPE
@@ -1183,8 +1183,8 @@ struct GTY(()) tree_base {
DECL_NONLOCAL_FRAME in
VAR_DECL
- TYPE_FINAL_P in
- RECORD_TYPE, UNION_TYPE and QUAL_UNION_TYPE
+ REF_REVERSE_STORAGE_ORDER in
+ BIT_FIELD_REF, MEM_REF
*/
struct GTY(()) tree_typed {
diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c
index 7417eaf..65a1ce3 100644
--- a/gcc/tree-streamer-in.c
+++ b/gcc/tree-streamer-in.c
@@ -143,7 +143,10 @@ unpack_ts_base_value_fields (struct bitpack_d *bp, tree expr)
TYPE_ADDR_SPACE (expr) = (unsigned) bp_unpack_value (bp, 8);
}
else if (TREE_CODE (expr) == BIT_FIELD_REF || TREE_CODE (expr) == MEM_REF)
- REF_REVERSE_STORAGE_ORDER (expr) = (unsigned) bp_unpack_value (bp, 1);
+ {
+ REF_REVERSE_STORAGE_ORDER (expr) = (unsigned) bp_unpack_value (bp, 1);
+ bp_unpack_value (bp, 8);
+ }
else if (TREE_CODE (expr) == SSA_NAME)
{
SSA_NAME_IS_DEFAULT_DEF (expr) = (unsigned) bp_unpack_value (bp, 1);
diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c
index 9ca0271..d0b7f6d 100644
--- a/gcc/tree-streamer-out.c
+++ b/gcc/tree-streamer-out.c
@@ -117,7 +117,10 @@ pack_ts_base_value_fields (struct bitpack_d *bp, tree expr)
bp_pack_value (bp, TYPE_ADDR_SPACE (expr), 8);
}
else if (TREE_CODE (expr) == BIT_FIELD_REF || TREE_CODE (expr) == MEM_REF)
- bp_pack_value (bp, REF_REVERSE_STORAGE_ORDER (expr), 1);
+ {
+ bp_pack_value (bp, REF_REVERSE_STORAGE_ORDER (expr), 1);
+ bp_pack_value (bp, 0, 8);
+ }
else if (TREE_CODE (expr) == SSA_NAME)
{
bp_pack_value (bp, SSA_NAME_IS_DEFAULT_DEF (expr), 1);
diff --git a/gcc/tree.h b/gcc/tree.h
index e71eba4..2a5ccfc 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -927,7 +927,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
But, of course, the storage order must be preserved when the accesses
themselves are rewritten or transformed. */
#define REF_REVERSE_STORAGE_ORDER(NODE) \
- (TREE_CHECK2 (NODE, BIT_FIELD_REF, MEM_REF)->base.u.bits.saturating_flag)
+ (TREE_CHECK2 (NODE, BIT_FIELD_REF, MEM_REF)->base.default_def_flag)
/* These flags are available for each language front end to use internally. */
#define TREE_LANG_FLAG_0(NODE) \