projects
/
libfirm
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3e83d98
)
Do not unconditionally set the unsigned pnc flag, but only for floating point compari...
author
Christoph Mallon
<christoph.mallon@gmx.de>
Mon, 16 Jul 2007 10:06:21 +0000
(10:06 +0000)
committer
Christoph Mallon
<christoph.mallon@gmx.de>
Mon, 16 Jul 2007 10:06:21 +0000
(10:06 +0000)
[r15153]
ir/be/ia32/ia32_emitter.c
patch
|
blob
|
history
diff --git
a/ir/be/ia32/ia32_emitter.c
b/ir/be/ia32/ia32_emitter.c
index
715f6a4
..
c3dd301
100644
(file)
--- a/
ir/be/ia32/ia32_emitter.c
+++ b/
ir/be/ia32/ia32_emitter.c
@@
-813,7
+813,10
@@
void finish_CondJmp(ia32_emit_env_t *env, const ir_node *node, ir_mode *mode,
}
be_emit_cstring(env, "\tj");
}
be_emit_cstring(env, "\tj");
- ia32_emit_cmp_suffix(env, pnc | ia32_pn_Cmp_Unsigned);
+ // The bits set by floating point compares correspond to unsigned comparisons
+ if (mode_is_float(mode))
+ pnc |= ia32_pn_Cmp_Unsigned;
+ ia32_emit_cmp_suffix(env, pnc);
be_emit_char(env, ' ');
ia32_emit_cfop_target(env, proj_true);
be_emit_finish_line_gas(env, proj_true);
be_emit_char(env, ' ');
ia32_emit_cfop_target(env, proj_true);
be_emit_finish_line_gas(env, proj_true);