projects
/
libfirm
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
bfd7203
)
BugFix: a Cmp can be in a different block than its Cond
author
Michael Beck
<beck@ipd.info.uni-karlsruhe.de>
Sun, 3 Jan 2010 13:11:15 +0000
(13:11 +0000)
committer
Michael Beck
<beck@ipd.info.uni-karlsruhe.de>
Sun, 3 Jan 2010 13:11:15 +0000
(13:11 +0000)
[r26897]
ir/opt/boolopt.c
patch
|
blob
|
history
diff --git
a/ir/opt/boolopt.c
b/ir/opt/boolopt.c
index
d42ae99
..
c404e65
100644
(file)
--- a/
ir/opt/boolopt.c
+++ b/
ir/opt/boolopt.c
@@
-661,30
+661,34
@@
restart:
* common block (ie. conjunctive normal form) */
if (get_Proj_proj(lower_cf) == pn_Cond_false) {
if (cpair.proj_lo == cond_selector) {
* common block (ie. conjunctive normal form) */
if (get_Proj_proj(lower_cf) == pn_Cond_false) {
if (cpair.proj_lo == cond_selector) {
- ir_mode *mode = get_tarval_mode(cpair.tv_lo);
- cpair.pnc_lo = get_negated_pnc(cpair.pnc_lo, mode);
- cpair.proj_lo = new_r_Proj(lower_block,
- get_Proj_pred(cpair.proj_lo), mode_b, cpair.pnc_lo);
+ ir_mode *mode = get_tarval_mode(cpair.tv_lo);
+ ir_node *cmp = get_Proj_pred(cpair.proj_lo);
+ ir_node *block = get_nodes_block(cmp);
+ cpair.pnc_lo = get_negated_pnc(cpair.pnc_lo, mode);
+ cpair.proj_lo = new_r_Proj(block, cmp, mode_b, cpair.pnc_lo);
} else {
} else {
- ir_mode *mode = get_tarval_mode(cpair.tv_hi);
+ ir_mode *mode = get_tarval_mode(cpair.tv_hi);
+ ir_node *cmp = get_Proj_pred(cpair.proj_hi);
+ ir_node *block = get_nodes_block(cmp);
assert(cpair.proj_hi == cond_selector);
assert(cpair.proj_hi == cond_selector);
- cpair.pnc_hi = get_negated_pnc(cpair.pnc_hi, mode);
- cpair.proj_hi = new_r_Proj(lower_block,
- get_Proj_pred(cpair.proj_hi), mode_b, cpair.pnc_hi);
+ cpair.pnc_hi = get_negated_pnc(cpair.pnc_hi, mode);
+ cpair.proj_hi = new_r_Proj(block, cmp, mode_b, cpair.pnc_hi);
}
}
if (get_Proj_proj(upper_cf) == pn_Cond_false) {
if (cpair.proj_lo == upper_cond_selector) {
}
}
if (get_Proj_proj(upper_cf) == pn_Cond_false) {
if (cpair.proj_lo == upper_cond_selector) {
- ir_mode *mode = get_tarval_mode(cpair.tv_lo);
- cpair.pnc_lo = get_negated_pnc(cpair.pnc_lo, mode);
- cpair.proj_lo = new_r_Proj(upper_block,
- get_Proj_pred(cpair.proj_lo), mode_b, cpair.pnc_lo);
+ ir_mode *mode = get_tarval_mode(cpair.tv_lo);
+ ir_node *cmp = get_Proj_pred(cpair.proj_lo);
+ ir_node *block = get_nodes_block(cmp);
+ cpair.pnc_lo = get_negated_pnc(cpair.pnc_lo, mode);
+ cpair.proj_lo = new_r_Proj(block, cmp, mode_b, cpair.pnc_lo);
} else {
} else {
- ir_mode *mode = get_tarval_mode(cpair.tv_hi);
+ ir_mode *mode = get_tarval_mode(cpair.tv_hi);
+ ir_node *cmp = get_Proj_pred(cpair.proj_hi);
+ ir_node *block = get_nodes_block(cmp);
assert(cpair.proj_hi == upper_cond_selector);
assert(cpair.proj_hi == upper_cond_selector);
- cpair.pnc_hi = get_negated_pnc(cpair.pnc_hi, mode);
- cpair.proj_hi = new_r_Proj(upper_block,
- get_Proj_pred(cpair.proj_hi), mode_b, cpair.pnc_hi);
+ cpair.pnc_hi = get_negated_pnc(cpair.pnc_hi, mode);
+ cpair.proj_hi = new_r_Proj(block, cmp, mode_b, cpair.pnc_hi);
}
}
}
}