tree-flow.h (FREE_SSANAMES): Move to tree-ssanames.c (SSANAMES...
* tree-flow.h (FREE_SSANAMES): Move to tree-ssanames.c (SSANAMES, MODIFIED_NORETURN_CALLS, DEFAULT_DEFS, ptr_info_def, num_ssa_names, ssa_name): Move to tree-ssanames.h + prototypes. * tree-flow-inline.h (make_ssa_name, copy_ssa_name, duplicate_ssa_name, make_temp_ssa_name): move to tree-ssanames.h * tree-ssa-alias.h: Move prototype. * tree-ssa.h: Include tree-ssanames.h. * tree-ssanames.c (FREE_SSANAMES): Move to here. * tree-ssanames.h: New. Move items from tree-flow*.h * Makefile.in (tree-ssanames.h): Add to tree-ssanames.o and GTFILES. From-SVN: r202527
This commit is contained in:
parent
0e2cd22d3d
commit
b12ebd96ba
@ -1,3 +1,16 @@
|
||||
2013-09-12 Andrew MacLeod <amacleod@redhat.com>
|
||||
|
||||
* tree-flow.h (FREE_SSANAMES): Move to tree-ssanames.c
|
||||
(SSANAMES, MODIFIED_NORETURN_CALLS, DEFAULT_DEFS, ptr_info_def,
|
||||
num_ssa_names, ssa_name): Move to tree-ssanames.h + prototypes.
|
||||
* tree-flow-inline.h (make_ssa_name, copy_ssa_name, duplicate_ssa_name,
|
||||
make_temp_ssa_name): move to tree-ssanames.h
|
||||
* tree-ssa-alias.h: Move prototype.
|
||||
* tree-ssa.h: Include tree-ssanames.h.
|
||||
* tree-ssanames.c (FREE_SSANAMES): Move to here.
|
||||
* tree-ssanames.h: New. Move items from tree-flow*.h
|
||||
* Makefile.in (tree-ssanames.h): Add to tree-ssanames.o and GTFILES.
|
||||
|
||||
2013-09-12 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/58404
|
||||
|
@ -2379,7 +2379,7 @@ tree-ssa-threadupdate.o : tree-ssa-threadupdate.c $(TREE_SSA_H) $(CONFIG_H) \
|
||||
$(DIAGNOSTIC_H) $(FUNCTION_H) $(TM_H) coretypes.h $(DUMPFILE_H) \
|
||||
$(BASIC_BLOCK_H) $(FLAGS_H) $(CFGLOOP_H)
|
||||
tree-ssanames.o : tree-ssanames.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
||||
$(TM_H) $(TREE_H) $(TREE_SSA_H) $(TREE_PASS_H)
|
||||
$(TM_H) $(TREE_H) $(TREE_SSA_H) $(TREE_PASS_H) tree-ssanames.h
|
||||
tree-phinodes.o : tree-phinodes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
||||
$(TM_H) $(TREE_H) $(GGC_H) $(BASIC_BLOCK_H) $(TREE_SSA_H) \
|
||||
gt-tree-phinodes.h $(DIAGNOSTIC_CORE_H) $(GIMPLE_H)
|
||||
@ -3837,6 +3837,7 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
|
||||
$(srcdir)/tree-ssa-propagate.c \
|
||||
$(srcdir)/tree-phinodes.c \
|
||||
$(srcdir)/tree-ssa-alias.h \
|
||||
$(srcdir)/tree-ssanames.h \
|
||||
$(srcdir)/ipa-prop.h \
|
||||
$(srcdir)/trans-mem.c \
|
||||
$(srcdir)/lto-streamer.h \
|
||||
|
@ -1159,46 +1159,6 @@ gimple_ssa_operands (const struct function *fun)
|
||||
}
|
||||
|
||||
|
||||
/* Return an SSA_NAME node for variable VAR defined in statement STMT
|
||||
in function cfun. */
|
||||
|
||||
static inline tree
|
||||
make_ssa_name (tree var, gimple stmt)
|
||||
{
|
||||
return make_ssa_name_fn (cfun, var, stmt);
|
||||
}
|
||||
|
||||
/* Return an SSA_NAME node using the template SSA name NAME defined in
|
||||
statement STMT in function cfun. */
|
||||
|
||||
static inline tree
|
||||
copy_ssa_name (tree var, gimple stmt)
|
||||
{
|
||||
return copy_ssa_name_fn (cfun, var, stmt);
|
||||
}
|
||||
|
||||
/* Creates a duplicate of a SSA name NAME tobe defined by statement STMT
|
||||
in function cfun. */
|
||||
|
||||
static inline tree
|
||||
duplicate_ssa_name (tree var, gimple stmt)
|
||||
{
|
||||
return duplicate_ssa_name_fn (cfun, var, stmt);
|
||||
}
|
||||
|
||||
/* Return an anonymous SSA_NAME node for type TYPE defined in statement STMT
|
||||
in function cfun. Arrange so that it uses NAME in dumps. */
|
||||
|
||||
static inline tree
|
||||
make_temp_ssa_name (tree type, gimple stmt, const char *name)
|
||||
{
|
||||
tree ssa_name;
|
||||
gcc_checking_assert (TYPE_P (type));
|
||||
ssa_name = make_ssa_name_fn (cfun, type, stmt);
|
||||
SET_SSA_NAME_VAR_OR_IDENTIFIER (ssa_name, get_identifier (name));
|
||||
return ssa_name;
|
||||
}
|
||||
|
||||
/* Returns the base object and a constant BITS_PER_UNIT offset in *POFFSET that
|
||||
denotes the starting address of the memory access EXP.
|
||||
Returns NULL_TREE if the offset is not constant or any component
|
||||
|
@ -92,12 +92,6 @@ struct GTY(()) gimple_df {
|
||||
htab_t GTY ((param_is (struct tm_restart_node))) tm_restart;
|
||||
};
|
||||
|
||||
/* Accessors for internal use only. Generic code should use abstraction
|
||||
provided by tree-flow-inline.h or specific modules. */
|
||||
#define FREE_SSANAMES(fun) (fun)->gimple_df->free_ssanames
|
||||
#define SSANAMES(fun) (fun)->gimple_df->ssa_names
|
||||
#define MODIFIED_NORETURN_CALLS(fun) (fun)->gimple_df->modified_noreturn_calls
|
||||
#define DEFAULT_DEFS(fun) (fun)->gimple_df->default_defs
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@ -113,41 +107,6 @@ typedef struct
|
||||
!end_htab_p (&(ITER)); \
|
||||
RESULT = (TYPE) next_htab_element (&(ITER)))
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
Attributes for SSA_NAMEs.
|
||||
|
||||
NOTE: These structures are stored in struct tree_ssa_name
|
||||
but are only used by the tree optimizers, so it makes better sense
|
||||
to declare them here to avoid recompiling unrelated files when
|
||||
making changes.
|
||||
---------------------------------------------------------------------------*/
|
||||
|
||||
/* Aliasing information for SSA_NAMEs representing pointer variables. */
|
||||
|
||||
struct GTY(()) ptr_info_def
|
||||
{
|
||||
/* The points-to solution. */
|
||||
struct pt_solution pt;
|
||||
|
||||
/* Alignment and misalignment of the pointer in bytes. Together
|
||||
align and misalign specify low known bits of the pointer.
|
||||
ptr & (align - 1) == misalign. */
|
||||
|
||||
/* When known, this is the power-of-two byte alignment of the object this
|
||||
pointer points into. This is usually DECL_ALIGN_UNIT for decls and
|
||||
MALLOC_ABI_ALIGNMENT for allocated storage. When the alignment is not
|
||||
known, it is zero. Do not access directly but use functions
|
||||
get_ptr_info_alignment, set_ptr_info_alignment,
|
||||
mark_ptr_info_alignment_unknown and similar. */
|
||||
unsigned int align;
|
||||
|
||||
/* When alignment is known, the byte offset this pointer differs from the
|
||||
above alignment. Access only through the same helper functions as align
|
||||
above. */
|
||||
unsigned int misalign;
|
||||
};
|
||||
|
||||
|
||||
/* It is advantageous to avoid things like life analysis for variables which
|
||||
do not need PHI nodes. This enum describes whether or not a particular
|
||||
variable may need a PHI node. */
|
||||
@ -282,9 +241,6 @@ struct int_tree_map {
|
||||
tree to;
|
||||
};
|
||||
|
||||
#define num_ssa_names (vec_safe_length (cfun->gimple_df->ssa_names))
|
||||
#define ssa_name(i) ((*cfun->gimple_df->ssa_names)[(i)])
|
||||
|
||||
/* Macros for showing usage statistics. */
|
||||
#define SCALE(x) ((unsigned long) ((x) < 1024*10 \
|
||||
? (x) \
|
||||
@ -479,26 +435,6 @@ void mark_virtual_operands_for_renaming (struct function *);
|
||||
tree get_current_def (tree);
|
||||
void set_current_def (tree, tree);
|
||||
|
||||
/* In tree-ssanames.c */
|
||||
extern void init_ssanames (struct function *, int);
|
||||
extern void fini_ssanames (void);
|
||||
extern tree make_ssa_name_fn (struct function *, tree, gimple);
|
||||
extern tree copy_ssa_name_fn (struct function *, tree, gimple);
|
||||
extern tree duplicate_ssa_name_fn (struct function *, tree, gimple);
|
||||
extern void duplicate_ssa_name_ptr_info (tree, struct ptr_info_def *);
|
||||
extern void release_ssa_name (tree);
|
||||
extern void release_defs (gimple);
|
||||
extern void replace_ssa_name_symbol (tree, tree);
|
||||
extern bool get_ptr_info_alignment (struct ptr_info_def *, unsigned int *,
|
||||
unsigned int *);
|
||||
extern void mark_ptr_info_alignment_unknown (struct ptr_info_def *);
|
||||
extern void set_ptr_info_alignment (struct ptr_info_def *, unsigned int,
|
||||
unsigned int);
|
||||
extern void adjust_ptr_info_misalignment (struct ptr_info_def *,
|
||||
unsigned int);
|
||||
|
||||
extern void ssanames_print_statistics (void);
|
||||
|
||||
/* In tree-ssa-ccp.c */
|
||||
tree fold_const_aggregate_ref (tree);
|
||||
tree gimple_fold_stmt_to_constant (gimple, tree (*)(tree));
|
||||
|
@ -116,7 +116,6 @@ extern void *walk_non_aliased_vuses (ao_ref *, tree,
|
||||
extern unsigned int walk_aliased_vdefs (ao_ref *, tree,
|
||||
bool (*)(ao_ref *, tree, void *),
|
||||
void *, bitmap *);
|
||||
extern struct ptr_info_def *get_ptr_info (tree);
|
||||
extern void dump_alias_info (FILE *);
|
||||
extern void debug_alias_info (void);
|
||||
extern void dump_points_to_solution (FILE *, struct pt_solution *);
|
||||
|
@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see
|
||||
#define GCC_TREE_SSA_H
|
||||
|
||||
#include "tree-flow.h"
|
||||
#include "tree-ssanames.h"
|
||||
|
||||
/* Mapping for redirected edges. */
|
||||
struct _edge_var_map {
|
||||
|
@ -60,6 +60,9 @@ along with GCC; see the file COPYING3. If not see
|
||||
unsigned int ssa_name_nodes_reused;
|
||||
unsigned int ssa_name_nodes_created;
|
||||
|
||||
#define FREE_SSANAMES(fun) (fun)->gimple_df->free_ssanames
|
||||
|
||||
|
||||
/* Initialize management of SSA_NAMEs to default SIZE. If SIZE is
|
||||
zero use default. */
|
||||
|
||||
|
119
gcc/tree-ssanames.h
Normal file
119
gcc/tree-ssanames.h
Normal file
@ -0,0 +1,119 @@
|
||||
/* SSA name expresssons routines
|
||||
Copyright (C) 2013 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 3, or (at your option) any later
|
||||
version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef GCC_TREE_SSANAMES_H
|
||||
#define GCC_TREE_SSANAMES_H
|
||||
|
||||
/* Aliasing information for SSA_NAMEs representing pointer variables. */
|
||||
|
||||
struct GTY(()) ptr_info_def
|
||||
{
|
||||
/* The points-to solution. */
|
||||
struct pt_solution pt;
|
||||
|
||||
/* Alignment and misalignment of the pointer in bytes. Together
|
||||
align and misalign specify low known bits of the pointer.
|
||||
ptr & (align - 1) == misalign. */
|
||||
|
||||
/* When known, this is the power-of-two byte alignment of the object this
|
||||
pointer points into. This is usually DECL_ALIGN_UNIT for decls and
|
||||
MALLOC_ABI_ALIGNMENT for allocated storage. When the alignment is not
|
||||
known, it is zero. Do not access directly but use functions
|
||||
get_ptr_info_alignment, set_ptr_info_alignment,
|
||||
mark_ptr_info_alignment_unknown and similar. */
|
||||
unsigned int align;
|
||||
|
||||
/* When alignment is known, the byte offset this pointer differs from the
|
||||
above alignment. Access only through the same helper functions as align
|
||||
above. */
|
||||
unsigned int misalign;
|
||||
};
|
||||
|
||||
|
||||
#define SSANAMES(fun) (fun)->gimple_df->ssa_names
|
||||
#define MODIFIED_NORETURN_CALLS(fun) (fun)->gimple_df->modified_noreturn_calls
|
||||
#define DEFAULT_DEFS(fun) (fun)->gimple_df->default_defs
|
||||
|
||||
#define num_ssa_names (vec_safe_length (cfun->gimple_df->ssa_names))
|
||||
#define ssa_name(i) ((*cfun->gimple_df->ssa_names)[(i)])
|
||||
|
||||
|
||||
extern void init_ssanames (struct function *, int);
|
||||
extern void fini_ssanames (void);
|
||||
extern void ssanames_print_statistics (void);
|
||||
extern tree make_ssa_name_fn (struct function *, tree, gimple);
|
||||
extern void release_ssa_name (tree);
|
||||
extern bool get_ptr_info_alignment (struct ptr_info_def *, unsigned int *,
|
||||
unsigned int *);
|
||||
extern void mark_ptr_info_alignment_unknown (struct ptr_info_def *);
|
||||
extern void set_ptr_info_alignment (struct ptr_info_def *, unsigned int,
|
||||
unsigned int);
|
||||
extern void adjust_ptr_info_misalignment (struct ptr_info_def *,
|
||||
unsigned int);
|
||||
extern struct ptr_info_def *get_ptr_info (tree);
|
||||
|
||||
extern tree copy_ssa_name_fn (struct function *, tree, gimple);
|
||||
extern void duplicate_ssa_name_ptr_info (tree, struct ptr_info_def *);
|
||||
extern tree duplicate_ssa_name_fn (struct function *, tree, gimple);
|
||||
extern void release_defs (gimple);
|
||||
extern void replace_ssa_name_symbol (tree, tree);
|
||||
|
||||
|
||||
/* Return an SSA_NAME node for variable VAR defined in statement STMT
|
||||
in function cfun. */
|
||||
|
||||
static inline tree
|
||||
make_ssa_name (tree var, gimple stmt)
|
||||
{
|
||||
return make_ssa_name_fn (cfun, var, stmt);
|
||||
}
|
||||
|
||||
/* Return an SSA_NAME node using the template SSA name NAME defined in
|
||||
statement STMT in function cfun. */
|
||||
|
||||
static inline tree
|
||||
copy_ssa_name (tree var, gimple stmt)
|
||||
{
|
||||
return copy_ssa_name_fn (cfun, var, stmt);
|
||||
}
|
||||
|
||||
/* Creates a duplicate of a SSA name NAME tobe defined by statement STMT
|
||||
in function cfun. */
|
||||
|
||||
static inline tree
|
||||
duplicate_ssa_name (tree var, gimple stmt)
|
||||
{
|
||||
return duplicate_ssa_name_fn (cfun, var, stmt);
|
||||
}
|
||||
|
||||
/* Return an anonymous SSA_NAME node for type TYPE defined in statement STMT
|
||||
in function cfun. Arrange so that it uses NAME in dumps. */
|
||||
|
||||
static inline tree
|
||||
make_temp_ssa_name (tree type, gimple stmt, const char *name)
|
||||
{
|
||||
tree ssa_name;
|
||||
gcc_checking_assert (TYPE_P (type));
|
||||
ssa_name = make_ssa_name_fn (cfun, type, stmt);
|
||||
SET_SSA_NAME_VAR_OR_IDENTIFIER (ssa_name, get_identifier (name));
|
||||
return ssa_name;
|
||||
}
|
||||
|
||||
|
||||
#endif /* GCC_TREE_SSANAMES_H */
|
Loading…
Reference in New Issue
Block a user