Commits on Source (8)
-
This replaces all Word<N> = W<N># Word# and Int<N> = I<N># Int# with Word<N> = W<N># Word<N># and Int<N> = I<N># Int<N>#, thus providing us with properly sized primitives in the codegenerator instead of pretending they are all full machine words. This came up when implementing darwinpcs for arm64. The darwinpcs reqires us to pack function argugments in excess of registers on the stack. While most procedure call standards (pcs) assume arguments are just passed in 8 byte slots; and thus the caller does not know the exact signature to make the call, darwinpcs requires us to adhere to the prototype, and thus have the correct sizes. If we specify CInt in the FFI call, it should correspond to the C int, and not just be Word sized, when it's only half the size. This does change the expected output of T16402 but the new result is no less correct as it eliminates the narrowing (instead of the `and` as was previously done). Bumps the array, bytestring, text, and binary submodules. Co-Authored-By:
Ben Gamari <ben@well-typed.com> Metric Increase: T13701 T14697
3cc388ff -
Co-authored-by:
Sven Tennie <sven.tennie@gmail.com> Co-authored-by:
Matthew Pickering <matthewtpickering@gmail.com> Co-authored-by:
Ben Gamari <bgamari.foss@gmail.com>
8c6a9221 -
On windows using gcc-10 gcc failed to inline copy_tag into evacuate. To fix this we now set the always_inline attribute for the various copy* functions in Evac.c. The main motivation here is not the overhead of the function call, but rather that this allows the code to "specialize" for the size of the closure we copy which is often known at compile time. An earlier commit also tried to avoid evacuate_large inlining. But didn't quite succeed. So I also marked evacuate_large as noinline. Fixes #12416
fae0c218 -
[This is @Ericson2314 writing a commit message for @hsyl20's patch.] (Progress towards #11953, #17377, #17375) `Int64Rep` and `Word64Rep` are currently broken on 64-bit systems. This is because they should use "native arg rep" but instead use "large arg rep" as they do on 32-bit systems, which is either a non-concept or a 128-bit rep depending on one's vantage point. Now, these reps currently aren't used during 64-bit compilation, so the brokenness isn't observed, but I don't think that constitutes reasons not to fix it. Firstly, the linked issues there is a clearly expressed desire to use explicit-bitwidth constructs in more places. Secondly, per [1], there are other bugs that *do* manifest from not threading explicit-bitwidth information all the way through the compilation pipeline. One can therefore view this as one piece of the larger effort to do that, improve ergnomics, and squash remaining bugs. Also, this is needed for !3658. I could just merge this as part of that, but I'm keen on merging fixes "as they are ready" so the fixes that aren't ready are isolated and easier to debug. [1]: https://mail.haskell.org/pipermail/ghc-devs/2020-October/019332.html
d4f2bb87 -
c166c1e0
-
Most compilers probably already infer that `barf` diverges but it nevertheless doesn't hurt to be explicit.
5d628c26 -
This was added in https://github.com/nomeata/ghc-heap-view/commit/34935206e51b9c86902481d84d2f368a6fd93423 GHC.ByteCode.Instr.BreakInfo no longer exists so the special case is dead code. Any check like this can be easily dealt with in client code.
e08089a9 -
Motivation 1. Don't enforce the repeated decoding of an info table, when the client can cache it (ghc-debug) 2. Allow the constructor information decoding to be overridden, this casues segfaults in ghc-debug
dc11a747
Showing
- compiler/GHC/Builtin/Names.hs 3 additions, 2 deletionscompiler/GHC/Builtin/Names.hs
- compiler/GHC/Builtin/Types.hs 3 additions, 5 deletionscompiler/GHC/Builtin/Types.hs
- compiler/GHC/Builtin/primops.txt.pp 28 additions, 8 deletionscompiler/GHC/Builtin/primops.txt.pp
- compiler/GHC/ByteCode/Asm.hs 9 additions, 0 deletionscompiler/GHC/ByteCode/Asm.hs
- compiler/GHC/ByteCode/Types.hs 2 additions, 2 deletionscompiler/GHC/ByteCode/Types.hs
- compiler/GHC/Cmm.hs 6 additions, 0 deletionscompiler/GHC/Cmm.hs
- compiler/GHC/Cmm/Expr.hs 11 additions, 0 deletionscompiler/GHC/Cmm/Expr.hs
- compiler/GHC/CmmToAsm/Ppr.hs 11 additions, 3 deletionscompiler/GHC/CmmToAsm/Ppr.hs
- compiler/GHC/CmmToC.hs 85 additions, 108 deletionscompiler/GHC/CmmToC.hs
- compiler/GHC/Core.hs 4 additions, 0 deletionscompiler/GHC/Core.hs
- compiler/GHC/Core/Opt/ConstantFold.hs 59 additions, 0 deletionscompiler/GHC/Core/Opt/ConstantFold.hs
- compiler/GHC/Core/TyCon.hs 2 additions, 2 deletionscompiler/GHC/Core/TyCon.hs
- compiler/GHC/CoreToByteCode.hs 81 additions, 46 deletionscompiler/GHC/CoreToByteCode.hs
- compiler/GHC/HsToCore/Foreign/Call.hs 3 additions, 29 deletionscompiler/GHC/HsToCore/Foreign/Call.hs
- compiler/GHC/HsToCore/Foreign/Decl.hs 6 additions, 0 deletionscompiler/GHC/HsToCore/Foreign/Decl.hs
- compiler/GHC/HsToCore/Quote.hs 2 additions, 3 deletionscompiler/GHC/HsToCore/Quote.hs
- compiler/GHC/Runtime/Heap/Inspect.hs 4 additions, 0 deletionscompiler/GHC/Runtime/Heap/Inspect.hs
- compiler/GHC/Runtime/Interpreter.hs 2 additions, 2 deletionscompiler/GHC/Runtime/Interpreter.hs
- compiler/GHC/Stg/Lift/Analysis.hs 1 addition, 1 deletioncompiler/GHC/Stg/Lift/Analysis.hs
- compiler/GHC/StgToCmm/ArgRep.hs 29 additions, 24 deletionscompiler/GHC/StgToCmm/ArgRep.hs