libFirm
|
Enumerations | |
enum | fp_model_t { fp_explicit_rounding = (1u << 0), fp_strict_algebraic = (1u << 1), fp_contradictions = (1u << 2), fp_strict_eval_order = (1u << 3), fp_exceptions = (1u << 4), fp_environment_access = (1u << 5), fp_model_precise = fp_explicit_rounding|fp_strict_algebraic|fp_contradictions, fp_model_strict, fp_model_fast = fp_contradictions } |
The Floating point model. More... |
Functions | |
ir_tarval * | computed_value (const ir_node *n) |
If the expression referenced can be evaluated statically computed_value returns a tarval representing the result. | |
ir_node * | optimize_in_place (ir_node *n) |
Applies all optimizations to n that are expressible as a pattern in Firm, i.e., they need not a walk of the graph. | |
int | ir_is_negated_value (const ir_node *a, const ir_node *b) |
checks whether 1 value is the negated other value | |
ir_relation | ir_get_possible_cmp_relations (const ir_node *left, const ir_node *right) |
(conservatively) approximates all possible relations when comparing the value left and right |
enum fp_model_t |
The Floating point model.
Several basic properties are defined:
From those basic properties three general models are defined, compatible to the VC8 compiler:
If the expression referenced can be evaluated statically computed_value returns a tarval representing the result.
Else returns tarval_bad.
ir_relation ir_get_possible_cmp_relations | ( | const ir_node * | left, |
const ir_node * | right | ||
) |
(conservatively) approximates all possible relations when comparing the value left
and right
checks whether 1 value is the negated other value
Applies all optimizations to n that are expressible as a pattern in Firm, i.e., they need not a walk of the graph.
Returns a better node for n. Does not free n – other nodes could reference n.
An equivalent optimization is applied in the constructors defined in ircons.ch. There n is freed if a better node could be found.