sheaf pushed to branch wip/T23210 at Glasgow Haskell Compiler / GHC

Commits:

3 changed files:

Changes:

  • compiler/GHC/StgToByteCode.hs
    ... ... @@ -2331,11 +2331,12 @@ pushAtom d p (StgVarArg var)
    2331 2331
             -- PUSH_G doesn't tag constructors. So we use PACK here
    
    2332 2332
             -- if we are dealing with nullary constructor.
    
    2333 2333
             case isDataConWorkId_maybe var of
    
    2334
    -          Just con -> do
    
    2335
    -            massert (isNullaryRepDataCon con)
    
    2336
    -            return (unitOL (PACK con 0), szb)
    
    2334
    +          Just con
    
    2335
    +            -- See Note [LFInfo of DataCon workers and wrappers] in GHC.Types.Id.Make.
    
    2336
    +            | isNullaryRepDataCon con ->
    
    2337
    +              return (unitOL (PACK con 0), szb)
    
    2337 2338
     
    
    2338
    -          Nothing
    
    2339
    +          _ ->
    
    2339 2340
                 -- see Note [Generating code for top-level string literal bindings]
    
    2340 2341
                 | idType var `eqType` addrPrimTy ->
    
    2341 2342
                   return (unitOL (PUSH_ADDR (getName var)), szb)
    

  • rts/Interpreter.c
    ... ... @@ -2227,7 +2227,6 @@ run_BCO:
    2227 2227
                 // n_nptrs=1, n_ptrs=0.
    
    2228 2228
                 ASSERT(n_ptrs + n_nptrs == n_words || (n_nptrs == 1 && n_ptrs == 0));
    
    2229 2229
                 ASSERT(n_ptrs + n_nptrs > 0);
    
    2230
    -            //ASSERT(n_words > 0); // We shouldn't ever need to allocate nullary constructors
    
    2231 2230
                 for (W_ i = 0; i < n_words; i++) {
    
    2232 2231
                     con->payload[i] = (StgClosure*)ReadSpW(i);
    
    2233 2232
                 }
    

  • testsuite/tests/codeGen/should_run/T23146/all.T
    1 1
     test('T23146', normal, compile_and_run, [''])
    
    2 2
     test('T23146_lifted', normal, compile_and_run, [''])
    
    3
    -test('T23146_liftedeq', expect_broken_for(23060, ghci_ways), compile_and_run, [''])
    
    3
    +test('T23146_liftedeq', normal, compile_and_run, [''])
    
    4 4
     test('T23146_lifted_unlifted', normal, compile_and_run, [''])