Tag ForeignCalls with the package they correspond to
[ghc-hetmet.git] / compiler / nativeGen / X86 / CodeGen.hs
index 8a1c77e..5941a8c 100644 (file)
@@ -27,7 +27,7 @@ where
 
 #include "HsVersions.h"
 #include "nativeGen/NCG.h"
-#include "MachDeps.h"
+#include "../includes/MachDeps.h"
 
 -- NCG stuff:
 import X86.Instr
@@ -1633,7 +1633,7 @@ genCCall target dest_regs args = do
                w  = typeWidth ty
                r_dest_hi = getHiVRegFromLo r_dest
                r_dest    = getRegisterReg (CmmLocal dest)
-       assign_code many = panic "genCCall.assign_code many"
+       assign_code many = pprPanic "genCCall.assign_code - too many return values:" (ppr many)
 
     return (push_code `appOL` 
            call `appOL` 
@@ -1882,7 +1882,10 @@ outOfLineFloatOp mop res args
           code2 <- stmtToInstrs (CmmAssign (CmmLocal res) (CmmReg (CmmLocal tmp)))
           return (code1 `appOL` code2)
   where
-       lbl = mkForeignLabel fn Nothing False IsFunction
+       -- Assume we can call these functions directly, and that they're not in a dynamic library.
+       -- TODO: Why is this ok? Under linux this code will be in libm.so
+       --       Is is because they're really implemented as a primitive instruction by the assembler??  -- BL 2009/12/31 
+       lbl = mkForeignLabel fn Nothing ForeignLabelInThisPackage IsFunction
 
        fn = case mop of
              MO_F32_Sqrt  -> fsLit "sqrtf"