aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@gcc.gnu.org>2012-10-02 10:00:32 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2012-10-02 10:00:32 +0000
commit0f1e88429a98791cd8c5b8d80703fc5f04a80b23 (patch)
tree7f56c0d30fa7499cd3ec678e78aedbc875ce2c20
parent70a6aea0adc11ad0562badf470857b2a615cabba (diff)
downloadgcc-0f1e88429a98791cd8c5b8d80703fc5f04a80b23.zip
gcc-0f1e88429a98791cd8c5b8d80703fc5f04a80b23.tar.gz
gcc-0f1e88429a98791cd8c5b8d80703fc5f04a80b23.tar.bz2
tree.h (DECL_NONLOCAL_FRAME): New macro.
* tree.h (DECL_NONLOCAL_FRAME): New macro. * tree-nested.c (get_frame_type): Set DECL_NONLOCAL_FRAME. * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream in DECL_NONLOCAL_FRAME flag. * tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream out DECL_NONLOCAL_FRAME flag. From-SVN: r191970
-rw-r--r--gcc/ChangeLog13
-rw-r--r--gcc/tree-nested.c1
-rw-r--r--gcc/tree-streamer-in.c3
-rw-r--r--gcc/tree-streamer-out.c3
-rw-r--r--gcc/tree.h8
5 files changed, 26 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d73416c..96da759 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2012-10-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree.h (DECL_NONLOCAL_FRAME): New macro.
+ * tree-nested.c (get_frame_type): Set DECL_NONLOCAL_FRAME.
+ * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream in
+ DECL_NONLOCAL_FRAME flag.
+ * tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream out
+ DECL_NONLOCAL_FRAME flag.
+
2012-10-02 Marc Glisse <marc.glisse@inria.fr>
* tree-ssa-forwprop.c (forward_propagate_into_cond): Don't use
@@ -14,10 +23,10 @@
2012-10-01 Dehao Chen <dehao@google.com>
PR middle-end/54759
- * gcc/tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): Use
+ * tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): Use
LOCATION_LOCUS to compare with UNKNOWN_LOCATION.
(slpeel_tree_peel_loop_to_edge): Likewise.
- * gcc/tree-vectorizer.c (vectorize_loops): Likewise.
+ * tree-vectorizer.c (vectorize_loops): Likewise.
2012-10-01 Andrew MacLeod <amacleod@redhat.com>
diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c
index 0b99803..b4d8688 100644
--- a/gcc/tree-nested.c
+++ b/gcc/tree-nested.c
@@ -235,6 +235,7 @@ get_frame_type (struct nesting_info *info)
info->frame_type = type;
info->frame_decl = create_tmp_var_for (info, type, "FRAME");
+ DECL_NONLOCAL_FRAME (info->frame_decl) = 1;
/* ??? Always make it addressable for now, since it is meant to
be pointed to by the static chain pointer. This pessimizes
diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c
index f9bee51..73a81c9 100644
--- a/gcc/tree-streamer-in.c
+++ b/gcc/tree-streamer-in.c
@@ -216,6 +216,9 @@ unpack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr)
expr->decl_common.off_align = bp_unpack_value (bp, 8);
}
+ if (TREE_CODE (expr) == VAR_DECL)
+ DECL_NONLOCAL_FRAME (expr) = (unsigned) bp_unpack_value (bp, 1);
+
if (TREE_CODE (expr) == RESULT_DECL
|| TREE_CODE (expr) == PARM_DECL
|| TREE_CODE (expr) == VAR_DECL)
diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c
index 54059a8..63f7a02 100644
--- a/gcc/tree-streamer-out.c
+++ b/gcc/tree-streamer-out.c
@@ -181,6 +181,9 @@ pack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr)
bp_pack_value (bp, expr->decl_common.off_align, 8);
}
+ if (TREE_CODE (expr) == VAR_DECL)
+ bp_pack_value (bp, DECL_NONLOCAL_FRAME (expr), 1);
+
if (TREE_CODE (expr) == RESULT_DECL
|| TREE_CODE (expr) == PARM_DECL
|| TREE_CODE (expr) == VAR_DECL)
diff --git a/gcc/tree.h b/gcc/tree.h
index 1217cc0..ff4ae52 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -712,6 +712,9 @@ struct GTY(()) tree_base {
SSA_NAME_IS_DEFAULT_DEF in
SSA_NAME
+
+ DECL_NONLOCAL_FRAME in
+ VAR_DECL
*/
struct GTY(()) tree_typed {
@@ -3270,9 +3273,14 @@ extern void decl_fini_priority_insert (tree, priority_type);
libraries. */
#define MAX_RESERVED_INIT_PRIORITY 100
+/* In a VAR_DECL, nonzero if this is a global variable for VOPs. */
#define VAR_DECL_IS_VIRTUAL_OPERAND(NODE) \
(VAR_DECL_CHECK (NODE)->base.u.bits.saturating_flag)
+/* In a VAR_DECL, nonzero if this is a non-local frame structure. */
+#define DECL_NONLOCAL_FRAME(NODE) \
+ (VAR_DECL_CHECK (NODE)->base.default_def_flag)
+
struct GTY(()) tree_var_decl {
struct tree_decl_with_vis common;
};