1. 16 Jan, 2005 1 commit
  2. 14 Jan, 2005 6 commits
    • wolfgang's avatar
      [project @ 2005-01-14 22:47:29 by wolfgang] · 05990bef
      wolfgang authored
      Fix a typo in the previous commit.
      05990bef
    • wolfgang's avatar
      [project @ 2005-01-14 22:12:54 by wolfgang] · acea64ed
      wolfgang authored
      When -dynamic is specified but -fPIC is not, generate code that works around
      the ELF dynamic linker's misguided attempts to keep the main program unaware
      of dynamic linking.
      
      This involves generating indirect references and computed jumps for position
      dependent code, too, and making all constant data sections writable in order
      to persuade ld to not use "COPY" relocations.
      
      Tested on powerpc-linux; in theory, it also applies to i386-linux, but other
      parts of the PIC story are missing there.
      
      Note that the writable-const-data hack could be improved a bit by
      distinguishing between "really" constant data and "relocatable" constant data,
      which would be a nice thing to do anyway.
      acea64ed
    • simonmar's avatar
      [project @ 2005-01-14 17:57:41 by simonmar] · c464eda3
      simonmar authored
      HEADS UP!  You now need to use an up to date Happy from CVS to build
      GHC.  Happy version 1.15 will be released shortly.
      
      Replace the slow hacked up String-based GetImports with one based on
      the real Haskell parser.  This requires a new addition to Happy to
      support parsing partial files.  We now avoid reading each source file
      off the disk twice: once to get its module name and imports, and again
      to parse it.  Instead we just slurp it once, and cache the StringBuffer.
      
      This should result in improved startup times for ghc --make,
      especially when there are lots of source files.
      c464eda3
    • simonmar's avatar
      [project @ 2005-01-14 11:46:24 by simonmar] · 5155d694
      simonmar authored
      hGetStringBuffer: hClose the file after we've read it (duh).  This
      causes a real problem on Windows, where the file remains locked in
      GHCi, and cannot be modified until after the finalizer has closed it
      (bug #1047408).
      5155d694
    • simonmar's avatar
      [project @ 2005-01-14 11:34:44 by simonmar] · 20b21f5b
      simonmar authored
      retire $(compiling_with_4xx): we don't support compiling with 4.x any more
      20b21f5b
    • wolfgang's avatar
      [project @ 2005-01-14 08:01:26 by wolfgang] · 4f457f34
      wolfgang authored
      Dynamic Linking, Part 2:
      
      Hack the Makefiles to build dynamic libraries.
      This allows you to actually use dynamic libraries to greatly reduce binary
      sizes on Darwin/PowerPC and on powerpc64-linux (for now).
      
      To use this, add the following to your build.mk
      
      SplitObjs=NO
      GhcBuildDylibs=YES
      GhcStage2HcOpts=-dynamic
      GhcLibHcOpts+=-fPIC -dynamic
      GhcRtsHcOpts+=-fPIC -dynamic
      GHC_CC_OPTS+=-fPIC
      
      (You can leave out the last three lines on powerpc64-linux).
      
      Then, to compile a program using dynamic libraries, pass the -dynamic option to GHC.
      To make GHCi use the dynamic libraries instead of .o files, just delete the HS*.o files.
      
      The dynamic library files are named libHSfoo_dyn.dylib or libHSfoo_dyn.so.
      
      Note that the dynamic and static libraries are build from the same .o files,
      but we really want to build the static libraries with SplitObjs and without
      -fPIC -dynamic to achieve better code size and performance.
      
      ghc/compiler/ghci/Linker.lhs:
          When looking for a library, look for HSfoo.o first (as before),
          then look for libHSfoo_dyn.[so/dylib] before looking for
          libHSfoo.[so/dylib].
      
      ghc/compiler/main/DriverPipeline.hs:
          Main.dll_o and PrelMain.dll_o are dead, at least for now.
      
      ghc/compiler/main/Packages.lhs:
          When -dynamic is specified, add "_dyn" to all libraries specified in
          hs-libraries (not to the extra-libs).
      
      ghc/lib/compat/Makefile:
          Never build libghccompat as a dynamic lib.
      
      mk/package.mk:
          if GhcBuildDylibs is set to YES, build dynamic libraries.
      
      mk/target.mk:
          When installing .dylibs (Darwin only), update the install_name to point
          to the final location.
          (Somebody please read Apple's documentation on what install_names are,
          and then comment on whether this is a useful feature or whether it should
          be done the "normal" unix way).
      4f457f34
  3. 13 Jan, 2005 2 commits
    • simonmar's avatar
      [project @ 2005-01-13 16:32:34 by simonmar] · 6b46a984
      simonmar authored
      Small optimisation: allow lookForInline to skip over CmmNop too
      6b46a984
    • simonmar's avatar
      [project @ 2005-01-13 12:44:08 by simonmar] · f25cb619
      simonmar authored
      Fix bug(s) in the register allocator: if a virtual register is both in
      memory and in a register (perhaps because it was recently loaded from
      a spill slot), and the current instruction writes it, we're supposed
      to invalidate the memory slot.  That wasn't happening properly.
      
      This fixes two problems noticed when using -prof -fasm: 10queens in the
      testsuite gives the wrong answer, and nofib/spectral/hartel/ida fails
      with a 'head []' message.  Interesting bug to track down!
      f25cb619
  4. 12 Jan, 2005 8 commits
  5. 11 Jan, 2005 3 commits
  6. 10 Jan, 2005 2 commits
    • wolfgang's avatar
      [project @ 2005-01-10 18:44:38 by wolfgang] · 0aca2f00
      wolfgang authored
      Handle foreign import wrapper properly for MacOS X, powerpc64-linux and AIX.
      Only Mac OS X tested so far.
      Pass information about argument types from DsForeign to createAdjustor encoded
      as a string ('i' for integers, 'f' for floats, 'd' for doubles and 'l' for
      long [64bit] integers).
      0aca2f00
    • simonmar's avatar
      [project @ 2005-01-10 13:53:14 by simonmar] · cad81487
      simonmar authored
      Obscure bugfix affecting foreign import "wrapper" with non-word-sized
      argument types (eg. Double) on Windows.  The list of arguments types
      returned by dsFExport was the boxed types, rather than the unboxed
      types, so dsFExportDynamic couldn't get the correct sizes of the
      argument types to the stub function.
      
      It's more correct now, but not totally correct (see the comment for
      details).
      
      Noticed by: Wolfgang Thaller.
      cad81487
  7. 08 Jan, 2005 1 commit
    • desrt's avatar
      [project @ 2005-01-08 22:54:28 by desrt] · 1e7063fc
      desrt authored
      Fixed this 6.4 TODO item listed on the wiki:
      
       PowerPC Linux (32bit): Fix GHCi FFI calls for arguments that are not passed on the stack (ByteCodeFFI).
      
      Separated the code for Darwin and Linux (for PowerPC only).  Rewrote the Linux version to account for the differences in the ABIs.
      
      All changes are inside #if powerpc_TARGET_ARCH && linux_TARGET_OS except:
        - import Data.List ( mapAccumL )      (used by my code)
        - small fix to a comment typo in Wolfgang's Darwin code
        - changed 'undefined' to a more meaningful 'error' message if
           mkMarshalCode is unimplemented
      
      Ran regression tests.  It passes them all except for the ones that are broken because of the 'wrapper' problems currently being addressed.
      1e7063fc
  8. 06 Jan, 2005 6 commits
  9. 05 Jan, 2005 4 commits
  10. 04 Jan, 2005 3 commits
    • simonpj's avatar
      [project @ 2005-01-04 16:26:55 by simonpj] · a27f7c87
      simonpj authored
      ------------------
                Fix an mdo bug
        	------------------
      
      Embarassingly, this bug makes GHC either panic (for some programs) or
      go into a loop (on others) in a recursive mdo that involves a
      polymorphic function.  Urk!
      
      The fix is twofold:
        a) add a missing bindInstsOfLocalFuns to tcStmtAndThen (RecStmt case)
        b) bind the correct set of variables in dsRecStmt
      
      I added some explanatory comments about RecStmt in HsExpr too.
      
      The tests is mdo/should_compile/mdo006
      a27f7c87
    • simonpj's avatar
      [project @ 2005-01-04 10:26:34 by simonpj] · 700819de
      simonpj authored
      Import trimming
      700819de
    • simonpj's avatar
      [project @ 2005-01-04 09:19:50 by simonpj] · ce82d32e
      simonpj authored
      Remove redundant Subst hi-boot files
      ce82d32e
  11. 30 Dec, 2004 1 commit
    • simonpj's avatar
      [project @ 2004-12-30 22:14:59 by simonpj] · 7f05f109
      simonpj authored
      Fix to the pre-Xmas simplifier changes, which should make 
      everything work again.  I'd forgotten to attend to this
      corner.  Still not properly tested I fear.
      
      Also remove dead code from SimplEnv, and simplify the remainder (hooray).
      7f05f109
  12. 27 Dec, 2004 2 commits
  13. 24 Dec, 2004 1 commit
    • simonpj's avatar
      [project @ 2004-12-24 16:14:36 by simonpj] · 339d5220
      simonpj authored
      ---------------------------
                Refactor the simplifier
        	---------------------------
      
      Driven by a GADT bug, I have refactored the simpifier, and the way GHC
      treats substitutions.  I hope I have gotten it right.  Be cautious about updating.
      
      * coreSyn/Subst.lhs has gone
      
      * coreSyn/CoreSubst replaces it, except that it's quite a bit simpler
      
      * simplCore/SimplEnv is added, and contains the simplifier-specific substitution
        stuff
      
      Previously Subst was trying to be all things to all men, and that was making
      it Too Complicated.
      
      There may be a little more code now, but it's much easier to understand.
      339d5220