Commit 0f1e8842 by Eric Botcazou

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
parent 70a6aea0
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> 2012-10-02 Marc Glisse <marc.glisse@inria.fr>
* tree-ssa-forwprop.c (forward_propagate_into_cond): Don't use * tree-ssa-forwprop.c (forward_propagate_into_cond): Don't use
...@@ -14,10 +23,10 @@ ...@@ -14,10 +23,10 @@
2012-10-01 Dehao Chen <dehao@google.com> 2012-10-01 Dehao Chen <dehao@google.com>
PR middle-end/54759 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. LOCATION_LOCUS to compare with UNKNOWN_LOCATION.
(slpeel_tree_peel_loop_to_edge): Likewise. (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> 2012-10-01 Andrew MacLeod <amacleod@redhat.com>
......
...@@ -235,6 +235,7 @@ get_frame_type (struct nesting_info *info) ...@@ -235,6 +235,7 @@ get_frame_type (struct nesting_info *info)
info->frame_type = type; info->frame_type = type;
info->frame_decl = create_tmp_var_for (info, type, "FRAME"); 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 /* ??? Always make it addressable for now, since it is meant to
be pointed to by the static chain pointer. This pessimizes be pointed to by the static chain pointer. This pessimizes
......
...@@ -216,6 +216,9 @@ unpack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr) ...@@ -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); 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 if (TREE_CODE (expr) == RESULT_DECL
|| TREE_CODE (expr) == PARM_DECL || TREE_CODE (expr) == PARM_DECL
|| TREE_CODE (expr) == VAR_DECL) || TREE_CODE (expr) == VAR_DECL)
......
...@@ -181,6 +181,9 @@ pack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr) ...@@ -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); 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 if (TREE_CODE (expr) == RESULT_DECL
|| TREE_CODE (expr) == PARM_DECL || TREE_CODE (expr) == PARM_DECL
|| TREE_CODE (expr) == VAR_DECL) || TREE_CODE (expr) == VAR_DECL)
......
...@@ -712,6 +712,9 @@ struct GTY(()) tree_base { ...@@ -712,6 +712,9 @@ struct GTY(()) tree_base {
SSA_NAME_IS_DEFAULT_DEF in SSA_NAME_IS_DEFAULT_DEF in
SSA_NAME SSA_NAME
DECL_NONLOCAL_FRAME in
VAR_DECL
*/ */
struct GTY(()) tree_typed { struct GTY(()) tree_typed {
...@@ -3270,9 +3273,14 @@ extern void decl_fini_priority_insert (tree, priority_type); ...@@ -3270,9 +3273,14 @@ extern void decl_fini_priority_insert (tree, priority_type);
libraries. */ libraries. */
#define MAX_RESERVED_INIT_PRIORITY 100 #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) \ #define VAR_DECL_IS_VIRTUAL_OPERAND(NODE) \
(VAR_DECL_CHECK (NODE)->base.u.bits.saturating_flag) (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 GTY(()) tree_var_decl {
struct tree_decl_with_vis common; struct tree_decl_with_vis common;
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment