1. 30 Jan, 2002 16 commits
    • simonmar's avatar
      [project @ 2002-01-30 16:37:59 by simonmar] · 487968ec
      simonmar authored
      comsetic only: shorten some lines.
      487968ec
    • simonmar's avatar
      [project @ 2002-01-30 16:37:14 by simonmar] · 4aed87eb
      simonmar authored
      Simplify the package story inside the compiler.  The new story is
      this:
      
        The Finder no longer determines a module's package based on its
        filesystem location.  The filesystem location indicates only whether
        a given module is in the current package or not (i.e. found along
        the -i path ==> current package, found along the package path ==>
        other package).
      
        Hence a Module no longer contains a package name.  Instead it just
        contains PackageInfo, which is either ThisPackage or AnotherPackage.
        The compiler uses this information for generating cross-DLL calls
        and omitting certain version information from .hi files.
      
        The interface still contains the package name.  This isn't used for
        anything right now, but in the future (when we have hierarchical
        libraries) we might use it to automatically determine which packages
        a binary should be linked against.  When building a package, you
        should still use -package-name, but it won't be fatal if you don't.
      
      The warning/error about package name mismatches has gone away.
      4aed87eb
    • simonmar's avatar
      [project @ 2002-01-30 16:27:34 by simonmar] · 1e046f78
      simonmar authored
      Set $(HC) *after* including boilerplate.mk, which re-defines it.
      1e046f78
    • simonmar's avatar
      [project @ 2002-01-30 16:25:20 by simonmar] · 6c09a020
      simonmar authored
      Don't use :: rules for building HSstd.o, they cause it to be rebuilt
      every time.  According to the GNU make manual, :: rules are vary
      rarely actually useful, and I'm sure we use them too much.
      6c09a020
    • simonmar's avatar
      [project @ 2002-01-30 14:05:36 by simonmar] · abbc07ed
      simonmar authored
      Minor cleanups.
      abbc07ed
    • simonmar's avatar
      [project @ 2002-01-30 14:05:01 by simonmar] · 6682d974
      simonmar authored
      Cleanup sweep, we can now use more of the std fptools build system
      machinery in here.
      6682d974
    • simonmar's avatar
      [project @ 2002-01-30 14:01:29 by simonmar] · 54b445f3
      simonmar authored
      - .hsc sources can generate .hc files too
      - Fix the sense of a conditional
      54b445f3
    • sewardj's avatar
      [project @ 2002-01-30 13:23:25 by sewardj] · f50b4739
      sewardj authored
      Fix debug build.
      f50b4739
    • simonmar's avatar
      [project @ 2002-01-30 13:13:55 by simonmar] · 0f8bc606
      simonmar authored
      Oops, better not pre-compute PRE_SRCS in paths.mk, because ALL_DIRS is
      not set yet.  Instead, defer it until we include target.mk.
      0f8bc606
    • simonmar's avatar
      [project @ 2002-01-30 12:17:21 by simonmar] · 975ef297
      simonmar authored
      Clean up this Makefile:
      
        - Use the enhanced automatic source-finding machinery from
          paths.mk rather than rolling our own,
      
        - Turn on UseGhcForCc to get our C files compiled with GHC.
          This fixes some obscure bugs caused by the fact that we
          were re-initializing $(CC_OPTS) in this Makefile using
          :=, when it had previously already been set with = (apparently
          different versions of GNU make behave differently presented
          with this kind of mixed assigment).
      975ef297
    • simonmar's avatar
      [project @ 2002-01-30 12:13:59 by simonmar] · 3dfd7d76
      simonmar authored
      GHC_CC_OPTS is a derived version of CC_OPTS with -optc prepended to
      each option.  This is used when $(UseGhcForCc) = "YES" (see suffix.mk).
      3dfd7d76
    • simonmar's avatar
      [project @ 2002-01-30 12:13:11 by simonmar] · a7cfd56b
      simonmar authored
      Introduce a new tweakable $(UseGhcForCc) which if set to "YES" enables
      a different set of suffix rules which build C-ish files using $(HC)
      instead of $(CC).  We'll use this to clean up the ghc/rts Makefile.
      a7cfd56b
    • simonmar's avatar
      [project @ 2002-01-30 12:11:35 by simonmar] · 8335c227
      simonmar authored
      - Consider .hc files as real sources unless they are derived from
        .hs/.lhs sources (using the existing "derived sources" mechanism").
      
      - Set PRE_SRCS using := rather than =, to avoid re-expanding the
        $(wildcard) multiple times.  In a simple test I did, this can save
        a 1/4 second (depending on the size of the directores involved) per
        make!
      8335c227
    • sewardj's avatar
      [project @ 2002-01-30 10:52:38 by sewardj] · dca430c4
      sewardj authored
      Fix syntax error in printing indirect calls in sparc assembly.
      dca430c4
    • simonmar's avatar
      [project @ 2002-01-30 10:30:34 by simonmar] · 13a46b43
      simonmar authored
      - Allow sources from multiple subdirectories to be selected, by
        setting $(ALL_DIRS).
      
      - Automatically detect Happy sources in the same way as other kinds
        of sources.
      13a46b43
    • sof's avatar
      [project @ 2002-01-30 01:06:14 by sof] · 17861c1b
      sof authored
      cope with the fact that StgTickyHeader is no more
      17861c1b
  2. 29 Jan, 2002 17 commits
    • krasimir's avatar
      [project @ 2002-01-29 19:26:38 by krasimir] · ce56bd8b
      krasimir authored
      Add ObjectIO to standard packages
      ce56bd8b
    • sof's avatar
      [project @ 2002-01-29 18:50:28 by sof] · 7d47dea7
      sof authored
      Add ProjectPatchLevel
      7d47dea7
    • sof's avatar
      [project @ 2002-01-29 18:32:18 by sof] · 77d12b43
      sof authored
      StgParHeader&StgTickyHeader vestige removal
      77d12b43
    • sof's avatar
      [project @ 2002-01-29 18:28:49 by sof] · c732b368
      sof authored
      sigh, steer clear of mingw backquoting issues
      c732b368
    • simonmar's avatar
      [project @ 2002-01-29 17:12:53 by simonmar] · 0cb35eb6
      simonmar authored
      Add instance Eq Exception (and hence instance Eq IOError).
      0cb35eb6
    • sewardj's avatar
      [project @ 2002-01-29 16:54:41 by sewardj] · 975b3c32
      sewardj authored
      x86 only: remove special ccall support for calling PerformGC_wrapper
      using dodgy-looking calling convention.  PerformGC_wrapper was last
      seen alive in GHC 3.X, AFAIK.
      975b3c32
    • simonmar's avatar
      [project @ 2002-01-29 16:52:46 by simonmar] · aeefae7c
      simonmar authored
      Remove some empty structs that weren't used.  Apparently empty structs
      are illegal C.
      aeefae7c
    • sewardj's avatar
      [project @ 2002-01-29 16:52:25 by sewardj] · 383f737f
      sewardj authored
      sparc NCG fixes for f-i-dynamic.
      383f737f
    • simonmar's avatar
      [project @ 2002-01-29 16:50:08 by simonmar] · 2674c7c3
      simonmar authored
      Remove StgParInfo - not used anywhere.
      2674c7c3
    • simonmar's avatar
      [project @ 2002-01-29 16:49:42 by simonmar] · 1b0e92fe
      simonmar authored
      Remove PAR_ITBL_SIZE - not used anywhere.
      1b0e92fe
    • simonmar's avatar
      [project @ 2002-01-29 16:24:08 by simonmar] · 662555be
      simonmar authored
      Inline mpz_cmp_si() into cmpIntegerInt#, and mpz_cmp() into cmpInteger#
      to offset recent performance degradation caused by outlining of these
      primitives.
      
      Also remove heap checks in these primitives: they don't do any
      allocation, so no heap check is necessary.
      662555be
    • simonmar's avatar
      [project @ 2002-01-29 14:41:52 by simonmar] · 5bed878b
      simonmar authored
      Fix highly obscure bug.
      
      The heap check in cmpIntegerzh_fast was erroneously passing
      cmpIntegerIntzh_fast as the resumption point instead of
      cmpIntegerzh_fast, with the result that if a heap-check happened to
      strike in cmpIntegerzh_fast then we would end up resuming in
      cmpIntegerIntzh and returning an incorrect comparison result.  One
      symptom is that very occasionally floating point numbers would print
      incorrectly (ending in an 'a').
      5bed878b
    • sewardj's avatar
      [project @ 2002-01-29 13:22:28 by sewardj] · ec269b12
      sewardj authored
      Teach the NCG how to do f-i-dynamic.  Nothing unexpected.
      sparc-side now needs fixing.
      ec269b12
    • sewardj's avatar
      [project @ 2002-01-29 11:07:26 by sewardj] · 7f42c60a
      sewardj authored
      Allow constructors with non-ptr fields to be allocated in-line.
      7f42c60a
    • simonpj's avatar
      [project @ 2002-01-29 09:58:14 by simonpj] · f2054812
      simonpj authored
      ------------
      	Rule phasing
      	------------
      
      This commit adds a little more control to when rules are enabled.
      
        {-# RULES
             "foo" [2] forall ...
             "baz" [~2] forall ...
        #-}
      
      Rule "foo" is active in phase 2 and later.  The new thing is that the
      "~2" means that Rule "baz" is active in phase 3 and earlier.
      (Remember tha phases decrease towards zero.)
      
      All the machinery was there to implement this, it just needed the syntax.
      
      
      Why do this?  Peter Gammie (at UNSW) found that rules weren't firing
      because of bindings of the form
      
      	M.f = f
      	f = ....
      
      where the rules where on the M.f binding.  It turned out that an old
      hack (which have for some time elicited the harmless "shortMeOut" debug
      warnings) prevented this trivial construction from being correctly
      simplified.  The hack in turn derived from a trick in the way the
      foldr/build rule was implemented....and that hack is no longer necessary
      now we can switch rules *off* as well as *on*.
      
      
      There are consequential changes in the Prelude foldr/build RULE stuff.
      It's a clean-up.... Instead of strange definitions like
      	map = mapList
      which we had before, we have an ordinary recursive defn of map, together
      with rules to convert first to foldr/build form, and then (if nothing
      happens) back again.
      
      There's a fairly long comment about the general plan of attack in
      PrelBase, near the defn of map.
      f2054812
    • sof's avatar
      [project @ 2002-01-29 06:15:03 by sof] · a704ee9c
      sof authored
      Update comments re: reloc overflow. A careful re-read of the PE
      spec did prove useful; Sec 4.1 (last para) describes how overflow
      is handled.
      a704ee9c
    • sof's avatar
      [project @ 2002-01-29 02:41:21 by sof] · 9efa7107
      sof authored
      PEi386/COFF: handle relocation overflows, i.e., if a section is
      marked with the flag (MY)IMAGE_SCN_LNK_NRELOC_OVFL, then
      the first entry in the relocation table holds the 32-bit
      relocation count rather than 16-bit number in the section header.
      Apparently, a version of the MS PE spec exists that spells this
      out, but haven't been able to locate it (perhaps people on the
      'inside' could try to locate an up-to-date version...?) winnt.h
      is clear enough about it though (as is the GNU libbfd sources).
      
      This is the Right Way to compute the relocation count, but
      unfortunately libbfd / GNU ld is generating bogus output
      when the reloc field overflows (causing objdump/nm etc. to
      crash when trying to read the generated output!) Looking into it.
      
      Once this has been cleared up/fixed, the splitting up of HSstd.o
      (and HSwin32.o) should be a thing of the past. I've taken the
      liberty of disabling the suspiciously-large-reloc-section test
      already.
      9efa7107
  3. 28 Jan, 2002 6 commits
    • sewardj's avatar
      [project @ 2002-01-28 17:22:45 by sewardj] · 7bf9669c
      sewardj authored
      Generate better code for lets whose RHS is a simple fn or constructor
      application.  Details are in comment in code.
      7bf9669c
    • simonmar's avatar
      [project @ 2002-01-28 17:09:05 by simonmar] · 8de7cb84
      simonmar authored
      Catch up with recent changes in the middle end that changed the
      assumptions about constructor applications: it is not necessarily the
      case any more that constructor applications are always saturated in
      the output from CorePrep.
      
      For a non-saturated constructor application there is always a curried
      worker function that can be called instead.  This change updates the
      byte code generator to use the curried worker when necessary.
      
      Also: a couple of micro-optimisations/cleanups.
      8de7cb84
    • simonpj's avatar
      [project @ 2002-01-28 16:52:37 by simonpj] · 0d62bdb2
      simonpj authored
      ----------------------
      	Zero-constructor types
      	----------------------
      
      If we have
      
      	data T
      	data S = MkS !T
      
      we were getting a crash in the compiler because ctrlRetConvAlg
      didn't know what to do for zero-constructor types.
      
      This fix arbitrarily says that they use a non-vectored return,
      which fixes the crash.  (Since they only have bottom values,
      the return never gets exercised, but GC and exception handling
      should work.)
      
      What is still unclear is how we handle data types that are defined
      with zero constructors in an hi-boot file.  I think that Bad Things
      may well happen if you do a 'seq' on them before we get up to the
      definition.  (e.g. as a result of this fix we'll say "unvectored"
      whereas the truth may be "vectored".)  This obviously doesn't happen
      much (because at present we'd get a compiler crash in ctrlRetConvAlg,
      but we should look into it.
      0d62bdb2
    • simonmar's avatar
      [project @ 2002-01-28 13:47:05 by simonmar] · 6d550803
      simonmar authored
      Never close std file descriptors.  This works around a "problem" in
      GHCi: if the program reaches EOF on stdin, it might close it, which in
      turn causes the interactive shell to fall over with a "bad file
      descriptor" error when it tries to read from stdin.
      6d550803
    • simonmar's avatar
      [project @ 2002-01-28 13:34:10 by simonmar] · a7549035
      simonmar authored
      Set stdin to unbuffered, so that GHCi doesn't accidentally buffer any
      input that might be intended for the program.
      a7549035
    • simonmar's avatar
      [project @ 2002-01-28 12:01:12 by simonmar] · 4db852d2
      simonmar authored
      Make GHCi silent in "unverbose" mode (-v0).  Now you can get a crude
      runhugs-style behaviour like this:
      
         echo main | ghci -v0 Main
      4db852d2
  4. 27 Jan, 2002 1 commit
    • panne's avatar
      [project @ 2002-01-27 10:53:26 by panne] · 388a6347
      panne authored
      Unbreak 2nd stage build by tracking recent RTS naming changes
      (ATTENTION: I'm not quite sure what I'm doing here exactly,
       but things seem to work... :-}
      388a6347