FIX #1910: fix code generated for GDTOI on x86_32
authorBertram Felgenhauer <int-e@gmx.de>
Wed, 21 Nov 2007 10:26:27 +0000 (10:26 +0000)
committerBertram Felgenhauer <int-e@gmx.de>
Wed, 21 Nov 2007 10:26:27 +0000 (10:26 +0000)
compiler/nativeGen/PprMach.hs

index 26a6f28..5115955 100644 (file)
@@ -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