* @author Christoph Mallon, Matthias Braun
* @version $Id$
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include "iroptimize.h"
if(is_Bad(block))
return new_Bad();
- /* already processed this block? */
- if(irn_visited(block)) {
- ir_node *value = (ir_node*) get_irn_link(block);
- return value;
- }
-
/* the other defs can't be marked for cases where a user of the original
* value is in the same block as the alternative definition.
* In this case we mustn't use the alternative definition.
return ssa_second_def;
}
+ /* already processed this block? */
+ if(irn_visited(block)) {
+ ir_node *value = (ir_node*) get_irn_link(block);
+ return value;
+ }
+
irg = get_irn_irg(block);
assert(block != get_irg_start_block(irg));
const ir_edge_t *edge;
const ir_edge_t *next;
+ /* no need to do anything */
+ if (orig_val == second_val)
+ return;
+
irg = get_irn_irg(orig_val);
inc_irg_visited(irg);
{
ir_node *block = get_nodes_block(jump);
- if (irn_visited(value))
+ if (irn_visited_else_mark(value))
return NULL;
- mark_irn_visited(value);
if (is_Const_or_Confirm(value)) {
if (eval_cmp(env, value) <= 0) {
{
ir_node *block = get_nodes_block(jump);
- if(irn_visited(value)) {
+ if (irn_visited_else_mark(value)) {
return NULL;
}
- mark_irn_visited(value);
if (is_Const_or_Confirm(value)) {
tarval *tv = get_Const_or_Confirm_tarval(value);