projects
/
libfirm
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
f8b8dc8
)
after inlining, the loop-info is inconsistent
author
Michael Beck
<beck@ipd.info.uni-karlsruhe.de>
Sat, 5 Apr 2008 18:37:30 +0000
(18:37 +0000)
committer
Michael Beck
<beck@ipd.info.uni-karlsruhe.de>
Sat, 5 Apr 2008 18:37:30 +0000
(18:37 +0000)
[r19144]
ir/opt/opt_inline.c
patch
|
blob
|
history
diff --git
a/ir/opt/opt_inline.c
b/ir/opt/opt_inline.c
index
a91615e
..
0fd8328
100644
(file)
--- a/
ir/opt/opt_inline.c
+++ b/
ir/opt/opt_inline.c
@@
-1230,15
+1230,23
@@
void inline_small_irgs(ir_graph *irg, int size) {
irg_walk_graph(irg, NULL, collect_calls, &env);
if (env.head != NULL) {
irg_walk_graph(irg, NULL, collect_calls, &env);
if (env.head != NULL) {
+ int did_inline = 0;
+
/* There are calls to inline */
collect_phiprojs(irg);
for (entry = env.head; entry != NULL; entry = entry->next) {
ir_graph *callee = entry->callee;
if (((_obstack_memory_used(callee->obst) - (int)obstack_room(callee->obst)) < size) ||
(get_irg_inline_property(callee) >= irg_inline_forced)) {
/* There are calls to inline */
collect_phiprojs(irg);
for (entry = env.head; entry != NULL; entry = entry->next) {
ir_graph *callee = entry->callee;
if (((_obstack_memory_used(callee->obst) - (int)obstack_room(callee->obst)) < size) ||
(get_irg_inline_property(callee) >= irg_inline_forced)) {
- inline_method(entry->call, callee);
+
did_inline |=
inline_method(entry->call, callee);
}
}
}
}
+ if (did_inline != 0) {
+ /* this irg got calls inlined */
+ set_irg_outs_inconsistent(irg);
+ set_irg_doms_inconsistent(irg);
+ set_irg_loopinfo_inconsistent(irg);
+ }
}
obstack_free(&env.obst, NULL);
current_ir_graph = rem;
}
obstack_free(&env.obst, NULL);
current_ir_graph = rem;
@@
-1603,6
+1611,7
@@
void inline_leave_functions(int maxsize, int leavesize, int size, int ignore_run
/* this irg got calls inlined */
set_irg_outs_inconsistent(irg);
set_irg_doms_inconsistent(irg);
/* this irg got calls inlined */
set_irg_outs_inconsistent(irg);
set_irg_doms_inconsistent(irg);
+ set_irg_loopinfo_inconsistent(irg);
optimize_graph_df(irg);
optimize_cf(irg);
optimize_graph_df(irg);
optimize_cf(irg);
@@
-1984,6
+1993,7
@@
void inline_functions(int inline_threshold) {
/* this irg got calls inlined */
set_irg_outs_inconsistent(irg);
set_irg_doms_inconsistent(irg);
/* this irg got calls inlined */
set_irg_outs_inconsistent(irg);
set_irg_doms_inconsistent(irg);
+ set_irg_loopinfo_inconsistent(irg);
if (env->local_vars)
scalar_replacement_opt(irg);
if (env->local_vars)
scalar_replacement_opt(irg);