1. 10 Sep, 2001 4 commits
    • simonmar's avatar
      [project @ 2001-09-10 12:53:21 by simonmar] · ec2ccca2
      simonmar authored
      Remove the "extra-bin" subdirectory from $(libexecdir), since there
      are too many assumptions in the tree that $(libexecdir) == $(libdir)
      (at the moment, binary dists are fairly well broken).
      Reuben has promised to track the change in the Windows distribution.
    • rje's avatar
      [project @ 2001-09-10 10:07:21 by rje] · 8d367f60
      rje authored
      Fixed a bug in TICKY_TICKY profiling.
      Previously, the TICK_ENT_DIRECT event was logged before the heap/stack
      check was done. As a result, if the check failed, the TICK_ENT_DIRECT
      event would be logged a second time, causing TICKY_TICKY to give innacurate
      This patch shouldn't have any affect on non-ticky compilation.
      Also changed the modified bit of code to use "do" notation, and so look a bit
    • simonpj's avatar
      [project @ 2001-09-10 07:25:17 by simonpj] · c51b55b8
      simonpj authored
      Fix ungramatical error message
    • simonpj's avatar
      [project @ 2001-09-10 07:24:09 by simonpj] · 2aa5738f
      simonpj authored
      	Fix a strictness bug in the simplifier
      This one has been there a long time, but hasn't bitten till
      now.  We should never float a let that is marked "sure to be
      evaluated" out of a let.  It shouldn't happen, and there was
      a warning to check, but the warning cried 'wolf' too often, so
      we have generally ignored it. But the wolf called for supper,
      when compiling spectral/expert with profiling on.
      The fix is simple too:
      	* use exprIsValue not exprIsCheap as the test
      	* move the warning, so it doesn't cry wolf
      Documentation with Simplify.simplRhs.
      On the way, I'm going to conmmit a change in the same module,
      which keeps unfolding info on lambda-bound variables.  This
      improves the elimination of cases when the wrapper does the
      'seq' -- then the worker gets to know that the arg is evaluated.
  2. 08 Sep, 2001 2 commits
    • ken's avatar
      [project @ 2001-09-08 22:40:38 by ken] · 8968073e
      ken authored
      Make the binary distribution configure recognize alphaev56-dec-osf5.
    • sof's avatar
      [project @ 2001-09-08 21:42:07 by sof] · ec2e177f
      sof authored
      Remove ugly special casing - if you want to turn off the
      default rule for GHCI_LIBRARY, set DONT_WANT_STD_GHCI_LIB_RULE
      to YES in your Makefile prior to including $(TOP)/mk/target.mk
      ghc/lib/std and hslibs/win32 both do this now on mingw32.
  3. 07 Sep, 2001 10 commits
    • simonpj's avatar
      [project @ 2001-09-07 16:52:53 by simonpj] · a49a7728
      simonpj authored
      Make isStrictDmd give the right answer
    • simonpj's avatar
      [project @ 2001-09-07 16:46:21 by simonpj] · dd27c958
      simonpj authored
      Make dmdFix not loop forever
    • sewardj's avatar
      [project @ 2001-09-07 16:08:31 by sewardj] · b982291d
      sewardj authored
      Fix compilation with -DDEBUG.
    • simonpj's avatar
      [project @ 2001-09-07 13:38:55 by simonpj] · a2415187
      simonpj authored
      Improve the error message for duplicate or invalid binders
      in a binding group.
      	[Consequence: rnfail034 should not be an expected failure
      		      any more]
    • simonpj's avatar
      [project @ 2001-09-07 12:44:30 by simonpj] · 991a868b
      simonpj authored
      	Make dict funs and default methods
      	into LocalIds only at their binding site
              [part of 3 related commits]
      There's a long comment about this with MkId.mkDefaultMethodId,
      which I reproduce below.
      While I was at it, I renamed setIdNoDiscard to setIdLocalExported.
      Which is hardly an improvement, I'm afraid.  This renaming touches
      	Var.lhs, Id.lhs, SimplCore.lhs
      in a trivial way.
      Dict funs and default methods are *not* ImplicitIds.  Their definition
      involves user-written code, so we can't figure out their strictness etc
      based on fixed info, as we can for constructors and record selectors (say).
      We build them as GlobalIds, but when in the module where they are
      bound, we turn the Id at the *binding site* into an exported LocalId.
      This ensures that they are taken to account by free-variable finding
      and dependency analysis (e.g. CoreFVs.exprFreeVars).   The simplifier
      will propagate the LocalId to all occurrence sites.
      Why shouldn't they be bound as GlobalIds?  Because, in particular, if
      they are globals, the specialiser floats dict uses above their defns,
      which prevents good simplifications happening.  Also the strictness
      analyser treats a occurrence of a GlobalId as imported and assumes it
      contains strictness in its IdInfo, which isn't true if the thing is
      bound in the same module as the occurrence.
      It's OK for dfuns to be LocalIds, because we form the instance-env to
      pass on to the next module (md_insts) in CoreTidy, afer tidying
      and globalising the top-level Ids.
      BUT make sure they are *exported* LocalIds (setIdLocalExported) so
      that they aren't discarded by the occurrence analyser.
    • simonpj's avatar
      [project @ 2001-09-07 12:43:28 by simonpj] · 66a9fc6c
      simonpj authored
      	Pin on accurate strictness info for
      	record and dictionary selectors
              [part of 3 related commits]
      This fixes a long-standing infelicity.  Sometimes selectors aren't
      inlined until after strictness analysis, so if we don't have decent
      strictness info on them we get bad strictness results.
      For record selectors, the unboxing-strict-fields stuff makes it hard
      to figurwe out the correct strictness, so we just invoke the demand
      analyser to work it out.
    • simonpj's avatar
      [project @ 2001-09-07 12:42:46 by simonpj] · d3f61314
      simonpj authored
      	Fix the demand analyser
      A spiffy new domain for demands, and definitions for lub/both
      which are actually monotonic.   Quite a bit of related jiggling
      One of the original motivations was to do with functions like:
      	sum n []     = n
      	sum n (x:xs) = sum (n+x) xs
      Even though n is returned boxed from the first case, we don't want
      to get strictness
      	S(L)V -> T
      because that means we pass the box for n, and that is TERRIBLE.
      So the new version errs on the side of unboxing, more like the forwards
      analyser, and only passes the box if it is *definitely* needed, rather
      than if it *may* be needed.
    • simonpj's avatar
      [project @ 2001-09-07 12:34:54 by simonpj] · 3446ed6c
      simonpj authored
      Omit unnecessary import
    • simonpj's avatar
      [project @ 2001-09-07 12:34:03 by simonpj] · b8711eeb
      simonpj authored
      	Newtypes and ccalls
      I accidentally omitted these two wibbles from my previous commit.
      I've added PrelNames.unitTyConKey, and used it in TcType and DsCCall.
    • simonpj's avatar
      [project @ 2001-09-07 12:30:15 by simonpj] · f16df743
      simonpj authored
      	Newtypes and ccalls
      Yet another bit of newtype-squashing that hadn't been
      synced with reality.  In desugaring ccalls, we can still
      see newtypes, if they are recursive, and we must generate
      appropriate coerces.
      Fixes a bug in cg011.
  4. 06 Sep, 2001 8 commits
  5. 05 Sep, 2001 2 commits
    • sewardj's avatar
      [project @ 2001-09-05 15:15:33 by sewardj] · d08db632
      sewardj authored
      Fix 32-bit breakage.  Int32 is the wrong thing; CInt is probably
      right.  I assume that Alpha is LP64, so that on Alpha
         sizeof(int) = 32, sizeof(long) = 64
      and that these are both sized at 32 for 32-bit platforms.
    • ken's avatar
      [project @ 2001-09-05 04:03:15 by ken] · 3fa9a538
      ken authored
      Replace CLong with CInt32 to fix 32-bit assumption. MERGE TO STABLE BRANCH
  6. 04 Sep, 2001 6 commits
    • ken's avatar
      [project @ 2001-09-04 18:29:20 by ken] · fb7a723b
      ken authored
      Please say "make -C ghc/lib/std clean; make -C hslibs clean".
      This commit eliminates spurious warning messages when compiling on
      the Alpha.  There are two kinds of spurious warning messages:
      (1) gcc: -noprefix_recognition: linker input file unused since linking not done
          This warning is because we pass the flag "-Xlinker -noprefix_recognition"
          to gcc.  We remove this warning by no longer passing the flag to gcc,
          and by removing the reason we were passing the flag in the first place:
          __init_* is now renamed to __stginit_*.
      (2) .../includes/Regs.h: warning: call-clobbered register used for global
          register variable
          This warning and all other warnings except (1), we eliminate by
          passing the -w flag to gcc.
    • ken's avatar
      [project @ 2001-09-04 18:22:34 by ken] · c00aaade
      ken authored
      On the Alpha we can only handle <= 4 integer arguments with foreign export
      dynamic.  Following the example of the corresponding Sparc hack, we detect
      when we're being asked to do something we can't and refuse.
    • sewardj's avatar
      [project @ 2001-09-04 16:49:12 by sewardj] · 243f2a5c
      sewardj authored
      Fix ELF compilation for new section table scheme.
    • sewardj's avatar
      [project @ 2001-09-04 16:35:02 by sewardj] · 10bc730f
      sewardj authored
      Build system hacks to split HSwin32.o into two parts, so that it
      can be loaded into GHCi.  Uses the same gruesome hacks as HSstd.o.
    • sewardj's avatar
      [project @ 2001-09-04 16:33:04 by sewardj] · 9c5f23d4
      sewardj authored
      Further linker fixes.  Record .bss space allocated, for the benefit of
      LOOKS_LIKE_GHC_INFO etc tests done by the GC.  In this commit, for
      Win32 only.
      Also some minor tweaks so that -package win32 can be loaded into GHCi.
    • ken's avatar
      [project @ 2001-09-04 14:11:58 by ken] · 6f2578c5
      ken authored
      Just as we do on sparc:
      On alpha, create code to shuffle a0 .. a3 into a2 .. a5 before the
      old code.  This is a GHASTLY HACK which at least makes f-x-dynamic on
      alpha work for callees with up to 32 bytes (4 words) of args.
  7. 02 Sep, 2001 1 commit
  8. 31 Aug, 2001 7 commits