projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
BugFix: equivalent_node_Bound() was too greedy, reduced to a safe minimum (now mostly...
[libfirm]
/
ir
/
ir
/
ircons.c
diff --git
a/ir/ir/ircons.c
b/ir/ir/ircons.c
index
8381a96
..
7de8333
100644
(file)
--- a/
ir/ir/ircons.c
+++ b/
ir/ir/ircons.c
@@
-2000,9
+2000,11
@@
get_r_frag_value_internal(ir_node *block, ir_node *cfOp, int pos, ir_mode *mode)
* @param prev_cf_op if cf_pred is a Proj, the predecessor node, else equal to cf_pred
*/
static int is_exception_flow(ir_node *cf_pred, ir_node *prev_cf_op) {
* @param prev_cf_op if cf_pred is a Proj, the predecessor node, else equal to cf_pred
*/
static int is_exception_flow(ir_node *cf_pred, ir_node *prev_cf_op) {
- /* all projections from a raise are exceptional control flow */
- if (is_Raise(prev_cf_op))
- return 1;
+ /*
+ * Note: all projections from a raise are "exceptional control flow" we we handle it
+ * like a normal Jmp, because there is no "regular" one.
+ * That's why Raise is no "fragile_op"!
+ */
if (is_fragile_op(prev_cf_op)) {
if (is_Proj(cf_pred)) {
if (get_Proj_proj(cf_pred) == pn_Generic_X_regular) {
if (is_fragile_op(prev_cf_op)) {
if (is_Proj(cf_pred)) {
if (get_Proj_proj(cf_pred) == pn_Generic_X_regular) {
@@
-2712,7
+2714,7
@@
add_immBlock_pred(ir_node *block, ir_node *jmp) {
assert(!block->attr.block.is_matured && "Error: Block already matured!\n");
assert(block->attr.block.is_mb_head && "Error: Cannot add a predecessor to a PartBlock");
assert(!block->attr.block.is_matured && "Error: Block already matured!\n");
assert(block->attr.block.is_mb_head && "Error: Cannot add a predecessor to a PartBlock");
- assert(
jmp != NULL
);
+ assert(
is_ir_node(jmp)
);
ARR_APP1(ir_node *, block->in, jmp);
/* Call the hook */
ARR_APP1(ir_node *, block->in, jmp);
/* Call the hook */
@@
-2751,6
+2753,7
@@
set_value(int pos, ir_node *value) {
ir_graph *irg = current_ir_graph;
assert(get_irg_phase_state(irg) == phase_building);
assert(pos+1 < irg->n_loc);
ir_graph *irg = current_ir_graph;
assert(get_irg_phase_state(irg) == phase_building);
assert(pos+1 < irg->n_loc);
+ assert(is_ir_node(value));
irg->current_block->attr.block.graph_arr[pos + 1] = value;
} /* set_value */
irg->current_block->attr.block.graph_arr[pos + 1] = value;
} /* set_value */