1. 07 Sep, 2001 9 commits
    • simonpj's avatar
      [project @ 2001-09-07 16:46:21 by simonpj] · dd27c958
      simonpj authored
      Make dmdFix not loop forever
      dd27c958
    • sewardj's avatar
      [project @ 2001-09-07 16:08:31 by sewardj] · b982291d
      sewardj authored
      Fix compilation with -DDEBUG.
      
      MERGE TO STABLE
      b982291d
    • 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]
      
      	MERGE WITH STABLE BRANCH
      a2415187
    • 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.
      991a868b
    • 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.
      66a9fc6c
    • 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
      around.
      
      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.
      d3f61314
    • simonpj's avatar
      [project @ 2001-09-07 12:34:54 by simonpj] · 3446ed6c
      simonpj authored
      Omit unnecessary import
      3446ed6c
    • simonpj's avatar
      [project @ 2001-09-07 12:34:03 by simonpj] · b8711eeb
      simonpj authored
      -------------------
      	Newtypes and ccalls
      	     [addendum]
      	-------------------
      
      	MERGE WITH STABLE BRANCH
      
      I accidentally omitted these two wibbles from my previous commit.
      I've added PrelNames.unitTyConKey, and used it in TcType and DsCCall.
      b8711eeb
    • simonpj's avatar
      [project @ 2001-09-07 12:30:15 by simonpj] · f16df743
      simonpj authored
      -------------------
      	Newtypes and ccalls
      	-------------------
      
      	MERGE WITH STABLE BRANCH
      
      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.
      f16df743
  2. 06 Sep, 2001 8 commits
  3. 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.
      d08db632
    • 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
      3fa9a538
  4. 04 Sep, 2001 6 commits
    • ken's avatar
      [project @ 2001-09-04 18:29:20 by ken] · fb7a723b
      ken authored
      THIS CHANGE AFFECTS ALL OBJECT FILES COMPILED FROM HASKELL.
      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.
      
      MERGE TO STABLE BRANCH
      fb7a723b
    • 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.
      
      MERGE TO STABLE BRANCH
      c00aaade
    • sewardj's avatar
      [project @ 2001-09-04 16:49:12 by sewardj] · 243f2a5c
      sewardj authored
      Fix ELF compilation for new section table scheme.
      243f2a5c
    • 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.
      10bc730f
    • 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.
      9c5f23d4
    • 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.
      6f2578c5
  5. 02 Sep, 2001 1 commit
  6. 31 Aug, 2001 9 commits
  7. 30 Aug, 2001 5 commits