OSDN Git Service
(root)
/
pf3gnuchains
/
gcc-fork.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* config/alpha/alpha.c (alpha_sa_size): Force procedure type to
[pf3gnuchains/gcc-fork.git]
/
gcc
/
ddg.c
diff --git
a/gcc/ddg.c
b/gcc/ddg.c
index
1f8c140
..
adecb70
100644
(file)
--- a/
gcc/ddg.c
+++ b/
gcc/ddg.c
@@
-1,5
+1,5
@@
/* DDG - Data Dependence Graph implementation.
/* DDG - Data Dependence Graph implementation.
- Copyright (C) 2004, 2005, 2006, 2007
+ Copyright (C) 2004, 2005, 2006, 2007
, 2008, 2009
Free Software Foundation, Inc.
Contributed by Ayal Zaks and Mustafa Hagog <zaks,mustafa@il.ibm.com>
Free Software Foundation, Inc.
Contributed by Ayal Zaks and Mustafa Hagog <zaks,mustafa@il.ibm.com>
@@
-183,13
+183,13
@@
create_ddg_dep_from_intra_loop_link (ddg_ptr g, ddg_node_ptr src_node,
if (set && REG_P (SET_DEST (set)))
{
int regno = REGNO (SET_DEST (set));
if (set && REG_P (SET_DEST (set)))
{
int regno = REGNO (SET_DEST (set));
-
struct df_ref *
first_def;
+
df_ref
first_def;
struct df_rd_bb_info *bb_info = DF_RD_BB_INFO (g->bb);
first_def = df_bb_regno_first_def_find (g->bb, regno);
gcc_assert (first_def);
struct df_rd_bb_info *bb_info = DF_RD_BB_INFO (g->bb);
first_def = df_bb_regno_first_def_find (g->bb, regno);
gcc_assert (first_def);
- if (bitmap_bit_p (bb_info->gen,
first_def->id
))
+ if (bitmap_bit_p (bb_info->gen,
DF_REF_ID (first_def)
))
return;
}
}
return;
}
}
@@
-239,7
+239,7
@@
create_ddg_dep_no_link (ddg_ptr g, ddg_node_ptr from, ddg_node_ptr to,
and anti-dependences from its uses in the current iteration to the
first definition in the next iteration. */
static void
and anti-dependences from its uses in the current iteration to the
first definition in the next iteration. */
static void
-add_cross_iteration_register_deps (ddg_ptr g,
struct df_ref *
last_def)
+add_cross_iteration_register_deps (ddg_ptr g,
df_ref
last_def)
{
int regno = DF_REF_REGNO (last_def);
struct df_link *r_use;
{
int regno = DF_REF_REGNO (last_def);
struct df_link *r_use;
@@
-250,14
+250,14
@@
add_cross_iteration_register_deps (ddg_ptr g, struct df_ref *last_def)
#ifdef ENABLE_CHECKING
struct df_rd_bb_info *bb_info = DF_RD_BB_INFO (g->bb);
#endif
#ifdef ENABLE_CHECKING
struct df_rd_bb_info *bb_info = DF_RD_BB_INFO (g->bb);
#endif
-
struct df_ref *
first_def = df_bb_regno_first_def_find (g->bb, regno);
+
df_ref
first_def = df_bb_regno_first_def_find (g->bb, regno);
gcc_assert (last_def_node);
gcc_assert (first_def);
#ifdef ENABLE_CHECKING
gcc_assert (last_def_node);
gcc_assert (first_def);
#ifdef ENABLE_CHECKING
- if (
last_def->id != first_def->id
)
- gcc_assert (!bitmap_bit_p (bb_info->gen,
first_def->id
));
+ if (
DF_REF_ID (last_def) != DF_REF_ID (first_def)
)
+ gcc_assert (!bitmap_bit_p (bb_info->gen,
DF_REF_ID (first_def)
));
#endif
/* Create inter-loop true dependences and anti dependences. */
#endif
/* Create inter-loop true dependences and anti dependences. */
@@
-293,7
+293,7
@@
add_cross_iteration_register_deps (ddg_ptr g, struct df_ref *last_def)
gcc_assert (first_def_node);
gcc_assert (first_def_node);
- if (
last_def->id != first_def->id
+ if (
DF_REF_ID (last_def) != DF_REF_ID (first_def)
|| !flag_modulo_sched_allow_regmoves)
create_ddg_dep_no_link (g, use_node, first_def_node, ANTI_DEP,
REG_DEP, 1);
|| !flag_modulo_sched_allow_regmoves)
create_ddg_dep_no_link (g, use_node, first_def_node, ANTI_DEP,
REG_DEP, 1);
@@
-311,7
+311,7
@@
add_cross_iteration_register_deps (ddg_ptr g, struct df_ref *last_def)
{
ddg_node_ptr dest_node;
{
ddg_node_ptr dest_node;
- if (
last_def->id == first_def->id
)
+ if (
DF_REF_ID (last_def) == DF_REF_ID (first_def)
)
return;
dest_node = get_node_of_insn (g, DF_REF_INSN (first_def));
return;
dest_node = get_node_of_insn (g, DF_REF_INSN (first_def));
@@
-333,7
+333,7
@@
build_inter_loop_deps (ddg_ptr g)
/* Find inter-loop register output, true and anti deps. */
EXECUTE_IF_SET_IN_BITMAP (rd_bb_info->gen, 0, rd_num, bi)
{
/* Find inter-loop register output, true and anti deps. */
EXECUTE_IF_SET_IN_BITMAP (rd_bb_info->gen, 0, rd_num, bi)
{
-
struct df_ref *
rd = DF_DEFS_GET (rd_num);
+
df_ref
rd = DF_DEFS_GET (rd_num);
add_cross_iteration_register_deps (g, rd);
}
add_cross_iteration_register_deps (g, rd);
}
@@
-345,6
+345,10
@@
build_inter_loop_deps (ddg_ptr g)
static void
add_inter_loop_mem_dep (ddg_ptr g, ddg_node_ptr from, ddg_node_ptr to)
{
static void
add_inter_loop_mem_dep (ddg_ptr g, ddg_node_ptr from, ddg_node_ptr to)
{
+ if (!insn_alias_sets_conflict_p (from->insn, to->insn))
+ /* Do not create edge if memory references have disjoint alias sets. */
+ return;
+
if (mem_write_insn_p (from->insn))
{
if (mem_read_insn_p (to->insn))
if (mem_write_insn_p (from->insn))
{
if (mem_read_insn_p (to->insn))