Commit 854e2559 authored by Michael Beck's avatar Michael Beck
Browse files

Add pass constructor C99 feature removed.

[r27381]
parent d56c188c
......@@ -1083,4 +1083,17 @@ ir_graph_pass_t *place_code_pass(const char *name);
*/
void fixpoint_vrp(ir_graph*);
/**
* Creates an ir_graph pass for fixpoint_vrp().
* This pass dDetermines information about the values of nodes
* and perform simplications using this information.
* This optimization performs a data-flow analysis to
* find the minimal fixpoint.
*
* @param name the name of this pass or NULL
*
* @return the newly created ir_graph pass
*/
ir_graph_pass_t *fixpoint_vrp_irg_pass(const char *name);
#endif
......@@ -40,6 +40,7 @@
#include "iroptimize.h"
#include "irtools.h"
#include "tv.h"
#include "irpass.h"
/* TODO:
* - Implement cleared/set bit calculation for Add, Sub, Minus, Mul, Div, Mod, Shl, Shr, Shrs, Rotl
......@@ -314,8 +315,8 @@ result_unknown_X:
* range the addition is disjoint and therefore Add behaves like Or.
*/
tarval* const low_zero_mask = tarval_or(no_c_in_no_c_out, tarval_neg(no_c_in_no_c_out));
z = tarval_or( tarval_or(lz, rz), low_zero_mask);
tarval* const low_one_mask = tarval_not(low_zero_mask);
z = tarval_or( tarval_or(lz, rz), low_zero_mask);
o = tarval_and(tarval_or(lo, ro), low_one_mask);
}
break;
......@@ -684,3 +685,8 @@ void fixpoint_vrp(ir_graph* const irg)
obstack_free(&obst, NULL);
}
ir_graph_pass_t *fixpoint_vrp_irg_pass(const char *name)
{
return def_graph_pass(name ? name : "fixpoint_vrp", fixpoint_vrp);
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment