summaryrefslogtreecommitdiff
path: root/compiler/nativeGen
diff options
context:
space:
mode:
authorBertram Felgenhauer <int-e@gmx.de>2007-11-21 10:26:27 +0000
committerBertram Felgenhauer <int-e@gmx.de>2007-11-21 10:26:27 +0000
commitdd9d5b34eb64fd45b362eab8aed53b90f1defeec (patch)
tree04b35fde228318c328581e14ab0fdb26221df7df /compiler/nativeGen
parentaafdba3bce91afb003f5f50e001e141744837bae (diff)
downloadhaskell-dd9d5b34eb64fd45b362eab8aed53b90f1defeec.tar.gz
FIX #1910: fix code generated for GDTOI on x86_32
Diffstat (limited to 'compiler/nativeGen')
-rw-r--r--compiler/nativeGen/PprMach.hs15
1 files changed, 3 insertions, 12 deletions
diff --git a/compiler/nativeGen/PprMach.hs b/compiler/nativeGen/PprMach.hs
index 26a6f286e1..51159559ed 100644
--- a/compiler/nativeGen/PprMach.hs
+++ b/compiler/nativeGen/PprMach.hs
@@ -1415,18 +1415,9 @@ pprInstr g@(GDTOI src dst)
pprInstr g@(GITOF src dst)
= pprInstr (GITOD src dst)
pprInstr g@(GITOD src dst)
- = pprG g (vcat [
- hcat [gtab, text "subl $8, %esp ; fnstcw 4(%esp)"],
- hcat [gtab, gpush src 0],
- hcat [gtab, text "movzwl 4(%esp), ", reg,
- text " ; orl $0xC00, ", reg],
- hcat [gtab, text "movl ", reg, text ", 0(%esp) ; fldcw 0(%esp)"],
- hcat [gtab, text "fistpl 0(%esp)"],
- hcat [gtab, text "fldcw 4(%esp) ; movl 0(%esp), ", reg],
- hcat [gtab, text "addl $8, %esp"]
- ])
- where
- reg = pprReg I32 dst
+ = pprG g (hcat [gtab, text "pushl ", pprReg I32 src,
+ text " ; ffree %st(7); fildl (%esp) ; ",
+ gpop dst 1, text " ; addl $4,%esp"])
{- Gruesome swamp follows. If you're unfortunate enough to have ventured
this far into the jungle AND you give a Rat's Ass (tm) what's going