projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Massive patch for the first months work adding System FC to GHC #34
[ghc-hetmet.git]
/
compiler
/
nativeGen
/
MachCodeGen.hs
diff --git
a/compiler/nativeGen/MachCodeGen.hs
b/compiler/nativeGen/MachCodeGen.hs
index
7f09c9d
..
1e88867
100644
(file)
--- a/
compiler/nativeGen/MachCodeGen.hs
+++ b/
compiler/nativeGen/MachCodeGen.hs
@@
-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
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)
getCondCode other = pprPanic "getCondCode(2)(x86,sparc)" (ppr other)
@@
-2909,6
+2909,10
@@
genCCall fn cconv result_regs args
#if i386_TARGET_ARCH
#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
-- 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
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")
fn = case mop of
MO_F32_Sqrt -> FSLIT("sqrtf")
@@
-3119,6
+3123,10
@@
outOfLineFloatOp mop res args vols
#if x86_64_TARGET_ARCH
#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
genCCall (CmmPrim op) [(r,_)] args vols =
outOfLineFloatOp op r args vols