summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
585313e)
This fixes testsuite/backend/floatset.c ...
[r27367]
node_t *r = get_irn_node(get_Cmp_right(cmp));
lattice_elem_t a = l->type;
lattice_elem_t b = r->type;
node_t *r = get_irn_node(get_Cmp_right(cmp));
lattice_elem_t a = l->type;
lattice_elem_t b = r->type;
+ ir_mode *mode = get_irn_mode(get_Cmp_left(cmp));
if (a.tv == tarval_top || b.tv == tarval_top) {
node->type.tv = tarval_top;
} else if (r->part == l->part) {
/* both nodes congruent, we can probably do something */
if (a.tv == tarval_top || b.tv == tarval_top) {
node->type.tv = tarval_top;
} else if (r->part == l->part) {
/* both nodes congruent, we can probably do something */
- node->type.tv = tarval_b_true;
+ if (mode_is_float(mode)) {
+ /* beware of NaN's */
+ node->type.tv = tarval_bottom;
+ } else {
+ node->type.tv = tarval_b_true;
+ }
} else if (is_con(a) && is_con(b)) {
/* both nodes are constants, we can probably do something */
} else if (is_con(a) && is_con(b)) {
/* both nodes are constants, we can probably do something */
- node->type.tv = tarval_b_true;
+ if (mode_is_float(mode)) {
+ /* beware of NaN's */
+ node->type.tv = tarval_bottom;
+ } else {
+ node->type.tv = tarval_b_true;
+ }
} else {
node->type.tv = tarval_bottom;
}
} else {
node->type.tv = tarval_bottom;
}