diff options
author | Bertram Felgenhauer <int-e@gmx.de> | 2007-11-21 10:26:27 +0000 |
---|---|---|
committer | Bertram Felgenhauer <int-e@gmx.de> | 2007-11-21 10:26:27 +0000 |
commit | dd9d5b34eb64fd45b362eab8aed53b90f1defeec (patch) | |
tree | 04b35fde228318c328581e14ab0fdb26221df7df /compiler/nativeGen | |
parent | aafdba3bce91afb003f5f50e001e141744837bae (diff) | |
download | haskell-dd9d5b34eb64fd45b362eab8aed53b90f1defeec.tar.gz |
FIX #1910: fix code generated for GDTOI on x86_32
Diffstat (limited to 'compiler/nativeGen')
-rw-r--r-- | compiler/nativeGen/PprMach.hs | 15 |
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 |