Skip to content
Snippets Groups Projects
  1. Oct 19, 2023
  2. Oct 18, 2023
  3. Oct 14, 2023
    • John Ericson's avatar
      Users Guide: Drop dead code for Haddock refs to `parallel` · 13d3c613
      John Ericson authored and Marge Bot's avatar Marge Bot committed
      I noticed while working on !11451 that `@LIBRARY_parallel_UNIT_ID@` was
      not substituted. It is dead code -- there is no `parallel-ref` usages
      and it doesn't look like there ever was (going back to
      3e5d0f18), so let's delete it.
      13d3c613
    • Ilias Tsitsimpis's avatar
      hadrian: Pass -DNOSMP to C compiler when needed · 257c2807
      Ilias Tsitsimpis authored and Marge Bot's avatar Marge Bot committed
      Hadrian passes the -DNOSMP flag to GHC when the target doesn't support
      SMP, but doesn't pass it to CC as well, leading to the following
      compilation error on mips64el:
      
      | Run Cc (FindCDependencies CDep) Stage1: rts/sm/NonMovingScav.c => _build/stage1/rts/build/c/sm/NonMovingScav.o.d
      Command line: /usr/bin/mips64el-linux-gnuabi64-gcc -E -MM -MG -MF _build/stage1/rts/build/c/hooks/FlagDefaults.thr_debug_p_o.d -MT _build/stage1/rts/build/c/hooks/FlagDefaults.o -Irts/include -I_build/stage1/rts/build -I_build/stage1/rts/build/include -Irts/include -x c rts/hooks/FlagDefaults.c -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Winline -Wpointer-arith -Wmissing-noreturn -Wnested-externs -Wredundant-decls -Wundef -fno-strict-aliasing -DTHREADED_RTS -DDEBUG -fomit-frame-pointer -O2 -g -Irts -I_build/stage1/rts/build -DDEBUG -fno-omit-frame-pointer -g3 -O0
      ===> Command failed with error code: 1
      In file included from rts/include/Stg.h:348,
                       from rts/include/Rts.h:38,
                       from rts/hooks/FlagDefaults.c:8:
      rts/include/stg/SMP.h:416:2: error: #error memory barriers unimplemented on this architecture
        416 | #error memory barriers unimplemented on this architecture
            |  ^~~~~
      rts/include/stg/SMP.h:440:2: error: #error memory barriers unimplemented on this architecture
        440 | #error memory barriers unimplemented on this architecture
            |  ^~~~~
      rts/include/stg/SMP.h:464:2: error: #error memory barriers unimplemented on this architecture
        464 | #error memory barriers unimplemented on this architecture
            |  ^~~~~
      
      The old make system correctly passed this flag to both GHC and CC [1].
      
      Fix this error by passing -DNOSMP to CC as well.
      
      [1] https://gitlab.haskell.org/ghc/ghc/-/blob/00920f176b0235d5bb52a8e054d89a664f8938fe/rts/ghc.mk#L407
      
      Closes #24082
      257c2807
    • sheaf's avatar
      Combine GREs when combining in mkImportOccEnv · ec3c4488
      sheaf authored and Marge Bot's avatar Marge Bot committed
      In `GHC.Rename.Names.mkImportOccEnv`, we sometimes discard one import
      item in favour of another, as explained in Note [Dealing with imports]
      in `GHC.Rename.Names`. However, this can cause us to lose track of
      important parent information.
      
      Consider for example #24084:
      
        module M1 where { class C a where { type T a } }
        module M2 ( module M1 ) where { import M1 }
        module M3 where { import M2 ( C, T ); instance C () where T () = () }
      
      When processing the import list of `M3`, we start off (for reasons that
      are not relevant right now) with two `Avail`s attached to `T`, namely
      `C(C, T)` and `T(T)`. We combine them in the `combine` function of
      `mkImportOccEnv`; as described in Note [Dealing with imports] we discard
      `C(C, T)` in favour of `T(T)`. However, in doing so, we **must not**
      discard the information want that `C` is the parent of `T`. Indeed,
      losing track of this information can cause errors when importing,
      as we could get an error of the form
      
        ‘T’ is not a (visible) associated type of class ‘C’
      
      We fix this by combining the two GREs for `T` using `plusGRE`.
      
      Fixes #24084
      ec3c4488
    • Matthew Pickering's avatar
      hadrian: Move ghcBinDeps into ghcLibDeps · 32523713
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      This completes a5227080, the
      `ghc-usage.txt` and `ghci-usage.txt` file are also used by the `ghc`
      library so need to make sure they are present in the libdir even if we
      are not going to build `ghc-bin`.
      
      This also fixes things for cross compilers because the stage2
      cross-compiler requires the ghc-usage.txt file, but we are using
      the stage2 lib folder but not building stage3:exe:ghc-bin so
      ghc-usage.txt was not being generated.
      32523713
    • Sebastian Graf's avatar
      CorePrep: Refactor FloatingBind (#23442) · fea9ecdb
      Sebastian Graf authored and Marge Bot's avatar Marge Bot committed
      A drastically improved architecture for local floating in CorePrep
      that decouples the decision of whether a float is going to be let- or case-bound
      from how far it can float (out of strict contexts, out of lazy contexts, to
      top-level).
      
      There are a couple of new Notes describing the effort:
      
        * `Note [Floating in CorePrep]` for the overview
        * `Note [BindInfo and FloatInfo]` for the new classification of floats
        * `Note [Floats and FloatDecision]` for how FloatInfo is used to inform
          floating decisions
      
      This is necessary ground work for proper treatment of Strict fields and
      unlifted values at top-level.
      
      Fixes #23442.
      
      NoFib results (omitted = 0.0%):
      ```
      --------------------------------------------------------------------------------
              Program         Allocs    Instrs
      --------------------------------------------------------------------------------
               pretty           0.0%     -1.6%
                  scc           0.0%     -1.7%
      --------------------------------------------------------------------------------
                  Min           0.0%     -1.7%
                  Max           0.0%     -0.0%
       Geometric Mean          -0.0%     -0.0%
      ```
      fea9ecdb
    • Sebastian Graf's avatar
      Fix restarts in .ghcid · a0ac8785
      Sebastian Graf authored and Marge Bot's avatar Marge Bot committed
      Using the whole of `hadrian/` restarted in a loop for me.
      a0ac8785
  4. Oct 13, 2023
  5. Oct 12, 2023
  6. Oct 11, 2023
  7. Oct 10, 2023
    • Andreas Klebinger's avatar
      Aarch ncg: Optimize immediate use for address calculations · 1b213d33
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      When the offset doesn't fit into the immediate we now just reuse the
      general getRegister' code path which is well optimized to compute the
      offset into a register instead of a special case for CmmRegOff.
      
      This means we generate a lot less code under certain conditions which is
      why performance metrics for these improve.
      
      -------------------------
      Metric Decrease:
          T4801
          T5321FD
          T5321Fun
      -------------------------
      1b213d33
    • Andreas Klebinger's avatar
      AArch NCG: Refactor getRegister' · 739f4e6f
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      Remove some special cases which can be handled just as well by the
      generic case.
      
      This increases code re-use while also fixing #23749. Since some of the
      special case wasn't upholding Note [Signed arithmetic on AArch64].
      739f4e6f
Loading