projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
and again
[libfirm]
/
ir
/
opt
/
scalar_replace.c
diff --git
a/ir/opt/scalar_replace.c
b/ir/opt/scalar_replace.c
index
fbe05ff
..
8c87f77
100644
(file)
--- a/
ir/opt/scalar_replace.c
+++ b/
ir/opt/scalar_replace.c
@@
-230,6
+230,13
@@
int is_address_taken(ir_node *sel)
*/
return 1;
*/
return 1;
+ case iro_Id: {
+ int res = is_address_taken(succ);
+ if (res)
+ return 1;
+ break;
+ }
+
case iro_Tuple:
/* Non-optimized Tuple, happens in inlining */
for (input_nr = get_Tuple_n_preds(succ) - 1; input_nr >= 0; --input_nr) {
case iro_Tuple:
/* Non-optimized Tuple, happens in inlining */
for (input_nr = get_Tuple_n_preds(succ) - 1; input_nr >= 0; --input_nr) {
@@
-283,7
+290,7
@@
static void link_all_leave_sels(ir_entity *ent, ir_node *sel) {
* visited more than once causing a ring here, so we use the
* node flag to mark linked nodes
*/
* visited more than once causing a ring here, so we use the
* node flag to mark linked nodes
*/
- if (irn_visited(sel))
+ if (irn_visited
_else_mark
(sel))
return;
/* we know we are at a leave, because this function is only
return;
/* we know we are at a leave, because this function is only
@@
-292,8
+299,6
@@
static void link_all_leave_sels(ir_entity *ent, ir_node *sel) {
*/
set_irn_link(sel, get_entity_link(ent));
set_entity_link(ent, sel);
*/
set_irn_link(sel, get_entity_link(ent));
set_entity_link(ent, sel);
-
- mark_irn_visited(sel);
}
}
}
}
@@
-399,8
+404,7
@@
static path_t *find_path(ir_node *sel, unsigned len) {
if (! is_Sel(pred)) {
/* we found the root */
if (! is_Sel(pred)) {
/* we found the root */
-
- res = xmalloc(sizeof(*res) + (len - 1) * sizeof(res->path));
+ res = XMALLOCF(path_t, path, len);
res->path_len = len;
} else
res = find_path(pred, len);
res->path_len = len;
} else
res = find_path(pred, len);