Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Zwinkau
libfirm
Commits
62fa2bac
Commit
62fa2bac
authored
Feb 21, 2011
by
Andreas Zwinkau
Browse files
Fix opt/fehler180
Respect block dominance in localopt. Node a may not be live in b's block. [r28430]
parent
b42d141b
Changes
1
Show whitespace changes
Inline
Side-by-side
ir/ir/iropt.c
View file @
62fa2bac
...
...
@@ -2404,19 +2404,19 @@ restart:
/* a - (b - c) -> a + (c - b)
* -> (a - b) + c iff (b - c) is a pointer */
dbg_info
*
s_dbg
=
get_irn_dbg_info
(
b
);
ir_node
*
s_block
=
get_nodes_block
(
b
);
ir_node
*
s_left
=
get_Sub_left
(
b
);
ir_node
*
s_right
=
get_Sub_right
(
b
);
ir_mode
*
s_mode
=
get_irn_mode
(
b
);
if
(
mode_is_reference
(
s_mode
))
{
ir_node
*
sub
=
new_rd_Sub
(
s_dbg
,
s_block
,
a
,
s_left
,
mode
);
ir_node
*
lowest_block
=
get_nodes_block
(
n
);
/* a and b are live here */
ir_node
*
sub
=
new_rd_Sub
(
s_dbg
,
lowest_block
,
a
,
s_left
,
mode
);
dbg_info
*
a_dbg
=
get_irn_dbg_info
(
n
);
ir_node
*
a_block
=
get_nodes_block
(
n
);
if
(
s_mode
!=
mode
)
s_right
=
new_r_Conv
(
a
_block
,
s_right
,
mode
);
n
=
new_rd_Add
(
a_dbg
,
a
_block
,
sub
,
s_right
,
mode
);
s_right
=
new_r_Conv
(
lowest
_block
,
s_right
,
mode
);
n
=
new_rd_Add
(
a_dbg
,
lowest
_block
,
sub
,
s_right
,
mode
);
}
else
{
ir_node
*
s_block
=
get_nodes_block
(
b
);
ir_node
*
sub
=
new_rd_Sub
(
s_dbg
,
s_block
,
s_right
,
s_left
,
s_mode
);
dbg_info
*
a_dbg
=
get_irn_dbg_info
(
n
);
ir_node
*
a_block
=
get_nodes_block
(
n
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment