1. 26 Jul, 2001 3 commits
    • ken's avatar
      [project @ 2001-07-26 03:20:52 by ken] · a1b48d4c
      ken authored
      Added to main():
      
         /*
          * Believe it or not, calling tzset() at startup seems to get rid of
          * a scheduler-related Heisenbug on alpha-dec-osf3.  The symptom of
          * the bug is that, when the load on the machine is high or when
          * there are many threads, the variable "Capability *cap" in the
          * function "schedule" in the file "Schedule.c" magically becomes
          * null before the line "t = cap->rCurrentTSO;".  Why, and why does
          * calling tzset() here seem to fix it?  Excellent questions!
          */
         tzset();
      a1b48d4c
    • ken's avatar
      [project @ 2001-07-26 03:13:37 by ken] · 8cc0574a
      ken authored
      Fixed code to not return an undefined value on platforms that are
      neither OBJFORMAT_ELF nor OBJFORMAT_PEi386.
      8cc0574a
    • ken's avatar
      [project @ 2001-07-26 03:08:38 by ken] · 47774449
      ken authored
      Run prelude/primops.txt through the preprocessor, to weed out
      primitives that don't (need to) exist on 64-bit architectures.
      47774449
  2. 25 Jul, 2001 11 commits
    • simonpj's avatar
      [project @ 2001-07-25 15:55:30 by simonpj] · 7fde87b3
      simonpj authored
      -----------------------------------------
      	Fix a bug in the monomorphism restriction
      	------------------------------------------
      
      Thanks for Koen for reporting this bug.
      
      In tcSimplifyRestricted, I wrongly called tcSimpifyToDicts,
      whereas actually we have to simplfy further than simply to
      a dictionary.
      
      The test for this is in typecheck/should_compile/tc132.hs
      7fde87b3
    • simonpj's avatar
      [project @ 2001-07-25 13:29:07 by simonpj] · 92428681
      simonpj authored
      ---------------------------------
      	Fix a bug in the defn of "both"
      	---------------------------------
      
      This bug made the bootstrapped GHC enter an absent argument.
      
      The change is from
      
      	both Lazy (Seq k Now ds) = Seq Keep Now ds
      to
      	both Lazy (Seq k l ds) = Seq Keep l ds
      
      Simple, eh?  (Comments with the code.)
      92428681
    • simonmar's avatar
      [project @ 2001-07-25 12:18:26 by simonmar] · f7341243
      simonmar authored
      - move the call to scavenge_mark_stack() inside the inner scavenge loop,
        so it gets called more often and there's less chance of the mark
        stack filling up.  None of the nofib tests cause the mark stack to
        fill up now.
      
      - remove some experimental code from scavenge_mark_stack().
      f7341243
    • simonmar's avatar
      [project @ 2001-07-25 11:55:57 by simonmar] · 06754543
      simonmar authored
      Specialise thread_static() a little bit: improves performance for
      threading the static object list.
      06754543
    • simonpj's avatar
      [project @ 2001-07-25 10:49:46 by simonpj] · 0338d7e2
      simonpj authored
      Do for evalStrictness the same as for evalAbsence
      0338d7e2
    • simonmar's avatar
      [project @ 2001-07-25 10:10:25 by simonmar] · 7d34d68c
      simonmar authored
      - Move FptoolsHcOpts out of the hslibs section of this file (which was
        *exactly* the wrong place for it).
      
      - Clarify the meaning of FptoolsHcOpts and GhcHcOpts.
      
      NOTE: $(FptoolsHcOpts) gets added to every Haskell compilation for
      Haskell *programs* (not libraries), including GHC itself.  By default,
      it contains only -O.  To remove the -O, you need to override
      FptoolsHcOpts in build.mk, not GhcHcOpts.
      
      GhcHcOpts is still there, and contains options to be added when
      compiling GHC only.
      7d34d68c
    • simonpj's avatar
      [project @ 2001-07-25 09:19:41 by simonpj] · a47868d5
      simonpj authored
      ---------------------------------
      	Another long-standing infelicity!
      	---------------------------------
      
      CoreTidy was throwing away demand info on let-binders.
      This meant that CorePrep would build a let (thunk) instead of
      a case, even if the Id is sure to be demanded.
      
      Easily fixed by making CoreTidy retain the demand info.
      
      This demand-analysis stuff is having the excellent side effect
      of flushing out performance bugs!
      a47868d5
    • simonmar's avatar
      [project @ 2001-07-25 09:14:21 by simonmar] · e16e9973
      simonmar authored
      - bugfix (was erroneously ignoring the return value from scavenge_one() and
        checking failed_to_evac instead, which was always false)
      
      - printf format fix (shut gcc up).
      e16e9973
    • simonpj's avatar
      [project @ 2001-07-25 08:04:00 by simonpj] · 513e9c2f
      simonpj authored
      Change pretty-print of DmdType slightly
      513e9c2f
    • simonpj's avatar
      [project @ 2001-07-25 07:43:53 by simonpj] · 7ca7d77a
      simonpj authored
      ---------------------------
      	Fix another bad DmdAnal bug
      	---------------------------
      
      The `both` operator wasn't commutative, leading to most
      strange results.  In particular, the fixpoint finder went into
      an infinite fip/flop loop on Marcin's program.
      7ca7d77a
    • simonpj's avatar
      [project @ 2001-07-25 07:42:23 by simonpj] · 72904630
      simonpj authored
      ---------------------------------------
      	Fix a grevious dict-inlining infelicity
      	---------------------------------------
      
      This commit fixes an infelicity that must have been there
      for a long time.  The problem was that dictionary functions
      (arising from instance declarations) were treated as GlobalIds,
      and hence no taken account of when doing free variable and dependency
      analysis.    As a result, the specialiser was messing up dependency
      order, so the program was considerably more complex than it should
      be by the time it got to the strictness analyser.
      
      Net result:
      	PrelRead.$sreduce :: Integer -> Integer -> (Integer,Integer)
      didn't get detected as strict.
      
      Easily fixed, by making DictFunIds into LocalIds (albeit exported ones).
      72904630
  3. 24 Jul, 2001 26 commits