X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FnativeGen%2FMachCodeGen.hs;h=aaf7cec792af9c1fefdab89ca49f66c7fa9e6d4e;hb=00abc3998739f7db38a2466b6e730105f16f8ddf;hp=7f09c9d3462e7ec43afd1e6e8cf87e4b75a05f8b;hpb=f41ed9e7eac5a351d8581400e696549a1fda01cc;p=ghc-hetmet.git diff --git a/compiler/nativeGen/MachCodeGen.hs b/compiler/nativeGen/MachCodeGen.hs index 7f09c9d..aaf7cec 100644 --- a/compiler/nativeGen/MachCodeGen.hs +++ b/compiler/nativeGen/MachCodeGen.hs @@ -42,13 +42,13 @@ import Constants ( wORD_SIZE ) #ifdef DEBUG import Outputable ( assertPanic ) -import TRACE ( trace ) +import Debug.Trace ( trace ) #endif import Control.Monad ( mapAndUnzipM ) -import Maybe ( fromJust ) -import DATA_BITS -import DATA_WORD +import Data.Maybe ( fromJust ) +import Data.Bits +import Data.Word -- ----------------------------------------------------------------------------- -- Top-level of the instruction selector @@ -2047,7 +2047,7 @@ getCondCode (CmmMachOp mop [x, y]) MO_U_Lt rep -> condIntCode LU x y MO_U_Le rep -> condIntCode LEU x y - other -> pprPanic "getCondCode(x86,sparc)" (pprMachOp mop) + other -> pprPanic "getCondCode(x86,x86_64,sparc)" (ppr (CmmMachOp mop [x,y])) getCondCode other = pprPanic "getCondCode(2)(x86,sparc)" (ppr other) @@ -2909,6 +2909,10 @@ genCCall fn cconv result_regs args #if i386_TARGET_ARCH +genCCall (CmmPrim MO_WriteBarrier) _ _ _ = return nilOL + -- write barrier compiles to no code on x86/x86-64; + -- we keep it this long in order to prevent earlier optimisations. + -- we only cope with a single result for foreign calls genCCall (CmmPrim op) [(r,_)] args vols = do case op of @@ -3078,7 +3082,7 @@ outOfLineFloatOp mop res args vols code2 <- stmtToInstrs (CmmAssign res (CmmReg tmp)) return (code1 `appOL` code2) where - lbl = mkForeignLabel fn Nothing True + lbl = mkForeignLabel fn Nothing False fn = case mop of MO_F32_Sqrt -> FSLIT("sqrtf") @@ -3119,6 +3123,10 @@ outOfLineFloatOp mop res args vols #if x86_64_TARGET_ARCH +genCCall (CmmPrim MO_WriteBarrier) _ _ _ = return nilOL + -- write barrier compiles to no code on x86/x86-64; + -- we keep it this long in order to prevent earlier optimisations. + genCCall (CmmPrim op) [(r,_)] args vols = outOfLineFloatOp op r args vols