Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC

Commits:

14 changed files:

Changes:

  • compiler/GHC/StgToCmm/Bind.hs
    ... ... @@ -866,7 +866,7 @@ link_caf node = do
    866 866
       ; let profile  = stgToCmmProfile cfg
    
    867 867
       ; let platform = profilePlatform profile
    
    868 868
       ; bh <- newTemp (bWord platform)
    
    869
    -  ; emitRtsCallGen [(bh,AddrHint)] newCAF_lbl
    
    869
    +  ; emitRtsCallGen [(bh,AddrHint)] newCAF_lbl CmmMayReturn
    
    870 870
           [ (baseExpr platform,  AddrHint),
    
    871 871
             (CmmReg (CmmLocal node), AddrHint) ]
    
    872 872
           False
    

  • compiler/GHC/StgToCmm/Utils.hs
    ... ... @@ -186,23 +186,27 @@ tagToClosure platform tycon tag
    186 186
     emitBarf :: String -> FCode ()
    
    187 187
     emitBarf msg = do
    
    188 188
       strLbl <- newStringCLit msg
    
    189
    -  emitRtsCall rtsUnitId (fsLit "barf") [(CmmLit strLbl,AddrHint)] False
    
    189
    +  emitRtsCallGen [] (mkCmmCodeLabel rtsUnitId (fsLit "sbarf"))
    
    190
    +    CmmNeverReturns
    
    191
    +    [(CmmLit strLbl, AddrHint)] False
    
    190 192
     
    
    191 193
     emitRtsCall :: UnitId -> FastString -> [(CmmExpr,ForeignHint)] -> Bool -> FCode ()
    
    192
    -emitRtsCall pkg fun = emitRtsCallGen [] (mkCmmCodeLabel pkg fun)
    
    194
    +emitRtsCall pkg fun = emitRtsCallGen [] (mkCmmCodeLabel pkg fun) CmmMayReturn
    
    193 195
     
    
    194 196
     emitRtsCallWithResult :: LocalReg -> ForeignHint -> UnitId -> FastString
    
    195 197
             -> [(CmmExpr,ForeignHint)] -> Bool -> FCode ()
    
    196
    -emitRtsCallWithResult res hint pkg = emitRtsCallGen [(res,hint)] . mkCmmCodeLabel pkg
    
    198
    +emitRtsCallWithResult res hint pkg =
    
    199
    +  \fun -> emitRtsCallGen [(res,hint)] (mkCmmCodeLabel pkg fun) CmmMayReturn
    
    197 200
     
    
    198 201
     -- Make a call to an RTS C procedure
    
    199 202
     emitRtsCallGen
    
    200 203
        :: [(LocalReg,ForeignHint)]
    
    201 204
        -> CLabel
    
    205
    +   -> CmmReturnInfo
    
    202 206
        -> [(CmmExpr,ForeignHint)]
    
    203 207
        -> Bool -- True <=> CmmSafe call
    
    204 208
        -> FCode ()
    
    205
    -emitRtsCallGen res lbl args safe
    
    209
    +emitRtsCallGen res lbl ret_info args safe
    
    206 210
       = do { platform <- getPlatform
    
    207 211
            ; updfr_off <- getUpdFrameOff
    
    208 212
            ; let (caller_save, caller_load) = callerSaveVolatileRegs platform
    
    ... ... @@ -214,7 +218,7 @@ emitRtsCallGen res lbl args safe
    214 218
           if safe then
    
    215 219
             emit =<< mkCmmCall fun_expr res' args' updfr_off
    
    216 220
           else do
    
    217
    -        let conv = ForeignConvention CCallConv arg_hints res_hints CmmMayReturn
    
    221
    +        let conv = ForeignConvention CCallConv arg_hints res_hints ret_info
    
    218 222
             emit $ mkUnsafeCall (ForeignTarget fun_expr conv) res' args'
    
    219 223
         (args', arg_hints) = unzip args
    
    220 224
         (res',  res_hints) = unzip res
    

  • rts/Apply.cmm
    ... ... @@ -250,7 +250,7 @@ again:
    250 250
        -------------------------------------------------------------------------- */
    
    251 251
     
    
    252 252
     INFO_TABLE(stg_PAP,/*special layout*/0,0,PAP,"PAP","PAP")
    
    253
    -{  ccall barf("PAP object (%p) entered!", R1) never returns; }
    
    253
    +{  ccall pbarf("PAP object (%p) entered!", R1 "ptr") never returns; }
    
    254 254
     
    
    255 255
     stg_PAP_apply /* no args => explicit stack */
    
    256 256
     {
    

  • rts/Compact.cmm
    ... ... @@ -282,7 +282,7 @@ eval:
    282 282
             goto constructor;
    
    283 283
         }}
    
    284 284
     
    
    285
    -    ccall barf("stg_compactWorkerzh", NULL);
    
    285
    +    ccall sbarf("stg_compactWorkerzh") never returns;
    
    286 286
     }
    
    287 287
     
    
    288 288
     //
    

  • rts/ContinuationOps.cmm
    ... ... @@ -36,7 +36,7 @@ import CLOSURE ghc_hs_iface;
    36 36
        -------------------------------------------------------------------------- */
    
    37 37
     
    
    38 38
     INFO_TABLE(stg_PROMPT_TAG,0,0,PRIM,"PROMPT_TAG","PROMPT_TAG")
    
    39
    -{ foreign "C" barf("PROMPT_TAG object (%p) entered!", R1) never returns; }
    
    39
    +{ ccall pbarf("PROMPT_TAG object (%p) entered!", R1 "ptr") never returns; }
    
    40 40
     
    
    41 41
     stg_newPromptTagzh()
    
    42 42
     {
    

  • rts/Exception.cmm
    ... ... @@ -666,11 +666,11 @@ stg_raiseOverflowzh ()
    666 666
      */
    
    667 667
     stg_paniczh (W_ str)
    
    668 668
     {
    
    669
    -    ccall barf(str, NULL) never returns;
    
    669
    +    ccall sbarf(str "ptr") never returns;
    
    670 670
     }
    
    671 671
     
    
    672 672
     // See Note [Compiler error functions] in GHC.Prim.Panic
    
    673 673
     stg_absentErrorzh (W_ str)
    
    674 674
     {
    
    675
    -    ccall barf("Oops!  Entered absent arg %s", str) never returns;
    
    675
    +    ccall ssbarf("Oops!  Entered absent arg %s", str "ptr") never returns;
    
    676 676
     }

  • rts/Jumps.h
    ... ... @@ -70,7 +70,7 @@ INFO_TABLE_RET (MK_FUN_NM(stg_stack_underflow_frame), UNDERFLOW_FRAME,
    70 70
     
    
    71 71
         jump %ENTRY_CODE(Sp(ret_off)) ALL_ARG_REGS;
    
    72 72
     #else
    
    73
    -    ccall barf("stg_stack_underflow_frame: unsupported register", NULL) never returns;
    
    73
    +    ccall sbarf("stg_stack_underflow_frame: unsupported register") never returns;
    
    74 74
     #endif
    
    75 75
     }
    
    76 76
     
    
    ... ... @@ -96,6 +96,6 @@ INFO_TABLE_RET (MK_FUN_NM(stg_restore_cccs), RET_SMALL, W_ info_ptr, W_ cccs)
    96 96
     
    
    97 97
         jump %ENTRY_CODE(Sp(0)) ALL_ARG_REGS;
    
    98 98
     #else
    
    99
    -    ccall barf("stg_restore_cccs: unsupported register", NULL) never returns;
    
    99
    +    ccall sbarf("stg_restore_cccs: unsupported register") never returns;
    
    100 100
     #endif
    
    101 101
     }

  • rts/PrimOps.cmm
    ... ... @@ -2332,7 +2332,7 @@ stg_asyncReadzh ( W_ fd, W_ is_sock, W_ len, W_ buf )
    2332 2332
         CInt reqID;
    
    2333 2333
     
    
    2334 2334
     #if defined(THREADED_RTS)
    
    2335
    -    ccall barf("asyncRead# on threaded RTS") never returns;
    
    2335
    +    ccall sbarf("asyncRead# on threaded RTS") never returns;
    
    2336 2336
     #else
    
    2337 2337
     
    
    2338 2338
         /* could probably allocate this on the heap instead */
    
    ... ... @@ -2358,7 +2358,7 @@ stg_asyncWritezh ( W_ fd, W_ is_sock, W_ len, W_ buf )
    2358 2358
         CInt reqID;
    
    2359 2359
     
    
    2360 2360
     #if defined(THREADED_RTS)
    
    2361
    -    ccall barf("asyncWrite# on threaded RTS") never returns;
    
    2361
    +    ccall sbarf("asyncWrite# on threaded RTS") never returns;
    
    2362 2362
     #else
    
    2363 2363
     
    
    2364 2364
         ("ptr" ares) = ccall stgMallocBytes(SIZEOF_StgAsyncIOResult,
    
    ... ... @@ -2384,7 +2384,7 @@ stg_asyncDoProczh ( W_ proc, W_ param )
    2384 2384
         CInt reqID;
    
    2385 2385
     
    
    2386 2386
     #if defined(THREADED_RTS)
    
    2387
    -    ccall barf("asyncDoProc# on threaded RTS") never returns;
    
    2387
    +    ccall sbarf("asyncDoProc# on threaded RTS") never returns;
    
    2388 2388
     #else
    
    2389 2389
     
    
    2390 2390
         /* could probably allocate this on the heap instead */
    

  • rts/RtsMessages.c
    ... ... @@ -58,6 +58,24 @@ vbarf(const char*s, va_list ap)
    58 58
       stg_exit(EXIT_INTERNAL_ERROR); // just in case fatalInternalErrorFn() returns
    
    59 59
     }
    
    60 60
     
    
    61
    +void
    
    62
    +sbarf(const char*s)
    
    63
    +{
    
    64
    +  barf("%s", s);
    
    65
    +}
    
    66
    +
    
    67
    +void
    
    68
    +pbarf(const char*fmt, void *p)
    
    69
    +{
    
    70
    +  barf(fmt, p);
    
    71
    +}
    
    72
    +
    
    73
    +void
    
    74
    +ssbarf(const char *fmt, const char *s)
    
    75
    +{
    
    76
    +  barf(fmt, s);
    
    77
    +}
    
    78
    +
    
    61 79
     void
    
    62 80
     _assertFail(const char*filename, unsigned int linenum)
    
    63 81
     {
    

  • rts/StgMiscClosures.cmm
    ... ... @@ -473,7 +473,7 @@ INFO_TABLE_RET( stg_dead_thread, RET_SMALL,
    473 473
                     W_ info_ptr,
    
    474 474
                     PROF_HDR_FIELDS(W_,p1,p2)
    
    475 475
                     P_ result )
    
    476
    -{ foreign "C" barf("stg_dead_thread entered!", NULL) never returns; }
    
    476
    +{ ccall sbarf("stg_dead_thread entered!") never returns; }
    
    477 477
     
    
    478 478
     /* ----------------------------------------------------------------------------
    
    479 479
        Entry code for a BCO
    
    ... ... @@ -631,11 +631,11 @@ INFO_TABLE(__stg_EAGER_BLACKHOLE,1,0,BLACKHOLE,"BLACKHOLE","BLACKHOLE")
    631 631
     }
    
    632 632
     
    
    633 633
     INFO_TABLE(stg_BLOCKING_QUEUE_CLEAN,4,0,BLOCKING_QUEUE,"BLOCKING_QUEUE","BLOCKING_QUEUE")
    
    634
    -{ foreign "C" barf("BLOCKING_QUEUE_CLEAN object (%p) entered!", R1) never returns; }
    
    634
    +{ ccall pbarf("BLOCKING_QUEUE_CLEAN object (%p) entered!", R1 "ptr") never returns; }
    
    635 635
     
    
    636 636
     
    
    637 637
     INFO_TABLE(stg_BLOCKING_QUEUE_DIRTY,4,0,BLOCKING_QUEUE,"BLOCKING_QUEUE","BLOCKING_QUEUE")
    
    638
    -{ foreign "C" barf("BLOCKING_QUEUE_DIRTY object (%p) entered!", R1) never returns; }
    
    638
    +{ ccall pbarf("BLOCKING_QUEUE_DIRTY object (%p) entered!", R1 "ptr") never returns; }
    
    639 639
     
    
    640 640
     
    
    641 641
     /* ----------------------------------------------------------------------------
    
    ... ... @@ -673,7 +673,7 @@ loop:
    673 673
         ACQUIRE_FENCE_ON(node + OFFSET_StgHeader_info);
    
    674 674
         jump %ENTRY_CODE(info) (node);
    
    675 675
     #else
    
    676
    -    ccall barf("WHITEHOLE object (%p) entered!", R1) never returns;
    
    676
    +    ccall pbarf("WHITEHOLE object (%p) entered!", R1 "ptr") never returns;
    
    677 677
     #endif
    
    678 678
     }
    
    679 679
     
    
    ... ... @@ -684,10 +684,10 @@ loop:
    684 684
        ------------------------------------------------------------------------- */
    
    685 685
     
    
    686 686
     INFO_TABLE(stg_TSO, 0,0,TSO, "TSO", "TSO")
    
    687
    -{ foreign "C" barf("TSO object (%p) entered!", R1) never returns; }
    
    687
    +{ ccall pbarf("TSO object (%p) entered!", R1 "ptr") never returns; }
    
    688 688
     
    
    689 689
     INFO_TABLE(stg_STACK, 0,0, STACK, "STACK", "STACK")
    
    690
    -{ foreign "C" barf("STACK object (%p) entered!", R1) never returns; }
    
    690
    +{ ccall pbarf("STACK object (%p) entered!", R1 "ptr") never returns; }
    
    691 691
     
    
    692 692
     /* ----------------------------------------------------------------------------
    
    693 693
        Weak pointers
    
    ... ... @@ -698,7 +698,7 @@ INFO_TABLE(stg_STACK, 0,0, STACK, "STACK", "STACK")
    698 698
        ------------------------------------------------------------------------- */
    
    699 699
     
    
    700 700
     INFO_TABLE(stg_WEAK,1,4,WEAK,"WEAK","WEAK")
    
    701
    -{ foreign "C" barf("WEAK object (%p) entered!", R1) never returns; }
    
    701
    +{ ccall pbarf("WEAK object (%p) entered!", R1 "ptr") never returns; }
    
    702 702
     
    
    703 703
     /*
    
    704 704
      * It's important when turning an existing WEAK into a DEAD_WEAK
    
    ... ... @@ -707,7 +707,7 @@ INFO_TABLE(stg_WEAK,1,4,WEAK,"WEAK","WEAK")
    707 707
      * DEAD_WEAK 5 non-pointer fields.
    
    708 708
      */
    
    709 709
     INFO_TABLE_CONSTR(stg_DEAD_WEAK,0,5,0,CONSTR,"DEAD_WEAK","DEAD_WEAK")
    
    710
    -{ foreign "C" barf("DEAD_WEAK object (%p) entered!", R1) never returns; }
    
    710
    +{ ccall pbarf("DEAD_WEAK object (%p) entered!", R1 "ptr") never returns; }
    
    711 711
     
    
    712 712
     /* ----------------------------------------------------------------------------
    
    713 713
        C finalizer lists
    
    ... ... @@ -716,7 +716,7 @@ INFO_TABLE_CONSTR(stg_DEAD_WEAK,0,5,0,CONSTR,"DEAD_WEAK","DEAD_WEAK")
    716 716
        ------------------------------------------------------------------------- */
    
    717 717
     
    
    718 718
     INFO_TABLE_CONSTR(stg_C_FINALIZER_LIST,1,4,0,CONSTR,"C_FINALIZER_LIST","C_FINALIZER_LIST")
    
    719
    -{ foreign "C" barf("C_FINALIZER_LIST object (%p) entered!", R1) never returns; }
    
    719
    +{ ccall pbarf("C_FINALIZER_LIST object (%p) entered!", R1 "ptr") never returns; }
    
    720 720
     
    
    721 721
     /* ----------------------------------------------------------------------------
    
    722 722
        NO_FINALIZER
    
    ... ... @@ -726,7 +726,7 @@ INFO_TABLE_CONSTR(stg_C_FINALIZER_LIST,1,4,0,CONSTR,"C_FINALIZER_LIST","C_FINALI
    726 726
        ------------------------------------------------------------------------- */
    
    727 727
     
    
    728 728
     INFO_TABLE_CONSTR(stg_NO_FINALIZER,0,0,0,CONSTR_NOCAF,"NO_FINALIZER","NO_FINALIZER")
    
    729
    -{ foreign "C" barf("NO_FINALIZER object (%p) entered!", R1) never returns; }
    
    729
    +{ ccall pbarf("NO_FINALIZER object (%p) entered!", R1 "ptr") never returns; }
    
    730 730
     
    
    731 731
     CLOSURE(stg_NO_FINALIZER_closure,stg_NO_FINALIZER);
    
    732 732
     
    
    ... ... @@ -735,7 +735,7 @@ CLOSURE(stg_NO_FINALIZER_closure,stg_NO_FINALIZER);
    735 735
        ------------------------------------------------------------------------- */
    
    736 736
     
    
    737 737
     INFO_TABLE(stg_STABLE_NAME,0,1,PRIM,"STABLE_NAME","STABLE_NAME")
    
    738
    -{ foreign "C" barf("STABLE_NAME object (%p) entered!", R1) never returns; }
    
    738
    +{ ccall pbarf("STABLE_NAME object (%p) entered!", R1 "ptr") never returns; }
    
    739 739
     
    
    740 740
     /* ----------------------------------------------------------------------------
    
    741 741
        MVars
    
    ... ... @@ -745,38 +745,38 @@ INFO_TABLE(stg_STABLE_NAME,0,1,PRIM,"STABLE_NAME","STABLE_NAME")
    745 745
        ------------------------------------------------------------------------- */
    
    746 746
     
    
    747 747
     INFO_TABLE(stg_MVAR_CLEAN,3,0,MVAR_CLEAN,"MVAR","MVAR")
    
    748
    -{ foreign "C" barf("MVAR object (%p) entered!", R1) never returns; }
    
    748
    +{ ccall pbarf("MVAR object (%p) entered!", R1 "ptr") never returns; }
    
    749 749
     
    
    750 750
     INFO_TABLE(stg_MVAR_DIRTY,3,0,MVAR_DIRTY,"MVAR","MVAR")
    
    751
    -{ foreign "C" barf("MVAR object (%p) entered!", R1) never returns; }
    
    751
    +{ ccall pbarf("MVAR object (%p) entered!", R1 "ptr") never returns; }
    
    752 752
     
    
    753 753
     /* -----------------------------------------------------------------------------
    
    754 754
        STM
    
    755 755
        -------------------------------------------------------------------------- */
    
    756 756
     
    
    757 757
     INFO_TABLE(stg_TVAR_CLEAN, 2, 1, TVAR, "TVAR", "TVAR")
    
    758
    -{ foreign "C" barf("TVAR_CLEAN object (%p) entered!", R1) never returns; }
    
    758
    +{ ccall pbarf("TVAR_CLEAN object (%p) entered!", R1 "ptr") never returns; }
    
    759 759
     
    
    760 760
     INFO_TABLE(stg_TVAR_DIRTY, 2, 1, TVAR, "TVAR", "TVAR")
    
    761
    -{ foreign "C" barf("TVAR_DIRTY object (%p) entered!", R1) never returns; }
    
    761
    +{ ccall pbarf("TVAR_DIRTY object (%p) entered!", R1 "ptr") never returns; }
    
    762 762
     
    
    763 763
     INFO_TABLE(stg_TVAR_WATCH_QUEUE, 3, 0, MUT_PRIM, "TVAR_WATCH_QUEUE", "TVAR_WATCH_QUEUE")
    
    764
    -{ foreign "C" barf("TVAR_WATCH_QUEUE object (%p) entered!", R1) never returns; }
    
    764
    +{ ccall pbarf("TVAR_WATCH_QUEUE object (%p) entered!", R1 "ptr") never returns; }
    
    765 765
     
    
    766 766
     INFO_TABLE(stg_TREC_CHUNK, 0, 0, TREC_CHUNK, "TREC_CHUNK", "TREC_CHUNK")
    
    767
    -{ foreign "C" barf("TREC_CHUNK object (%p) entered!", R1) never returns; }
    
    767
    +{ ccall pbarf("TREC_CHUNK object (%p) entered!", R1 "ptr") never returns; }
    
    768 768
     
    
    769 769
     INFO_TABLE(stg_TREC_HEADER, 2, 1, MUT_PRIM, "TREC_HEADER", "TREC_HEADER")
    
    770
    -{ foreign "C" barf("TREC_HEADER object (%p) entered!", R1) never returns; }
    
    770
    +{ ccall pbarf("TREC_HEADER object (%p) entered!", R1 "ptr") never returns; }
    
    771 771
     
    
    772 772
     INFO_TABLE_CONSTR(stg_END_STM_WATCH_QUEUE,0,0,0,CONSTR_NOCAF,"END_STM_WATCH_QUEUE","END_STM_WATCH_QUEUE")
    
    773
    -{ foreign "C" barf("END_STM_WATCH_QUEUE object (%p) entered!", R1) never returns; }
    
    773
    +{ ccall pbarf("END_STM_WATCH_QUEUE object (%p) entered!", R1 "ptr") never returns; }
    
    774 774
     
    
    775 775
     INFO_TABLE_CONSTR(stg_END_STM_CHUNK_LIST,0,0,0,CONSTR_NOCAF,"END_STM_CHUNK_LIST","END_STM_CHUNK_LIST")
    
    776
    -{ foreign "C" barf("END_STM_CHUNK_LIST object (%p) entered!", R1) never returns; }
    
    776
    +{ ccall pbarf("END_STM_CHUNK_LIST object (%p) entered!", R1 "ptr") never returns; }
    
    777 777
     
    
    778 778
     INFO_TABLE_CONSTR(stg_NO_TREC,0,0,0,CONSTR_NOCAF,"NO_TREC","NO_TREC")
    
    779
    -{ foreign "C" barf("NO_TREC object (%p) entered!", R1) never returns; }
    
    779
    +{ ccall pbarf("NO_TREC object (%p) entered!", R1 "ptr") never returns; }
    
    780 780
     
    
    781 781
     CLOSURE(stg_END_STM_WATCH_QUEUE_closure,stg_END_STM_WATCH_QUEUE);
    
    782 782
     
    
    ... ... @@ -791,52 +791,52 @@ CLOSURE(stg_NO_TREC_closure,stg_NO_TREC);
    791 791
        ------------------------------------------------------------------------- */
    
    792 792
     
    
    793 793
     INFO_TABLE_CONSTR(stg_SRT_1, 1, 0, 0, CONSTR_1_0, "SRT_1", "SRT_1")
    
    794
    -{ foreign "C" barf("SRT_1 object (%p) entered!", R1) never returns; }
    
    794
    +{ ccall pbarf("SRT_1 object (%p) entered!", R1 "ptr") never returns; }
    
    795 795
     
    
    796 796
     INFO_TABLE_CONSTR(stg_SRT_2, 2, 0, 0, CONSTR_2_0, "SRT_2", "SRT_2")
    
    797
    -{ foreign "C" barf("SRT_2 object (%p) entered!", R1) never returns; }
    
    797
    +{ ccall pbarf("SRT_2 object (%p) entered!", R1 "ptr") never returns; }
    
    798 798
     
    
    799 799
     INFO_TABLE_CONSTR(stg_SRT_3, 3, 0, 0, CONSTR, "SRT_3", "SRT_3")
    
    800
    -{ foreign "C" barf("SRT_3 object (%p) entered!", R1) never returns; }
    
    800
    +{ ccall pbarf("SRT_3 object (%p) entered!", R1 "ptr") never returns; }
    
    801 801
     
    
    802 802
     INFO_TABLE_CONSTR(stg_SRT_4, 4, 0, 0, CONSTR, "SRT_4", "SRT_4")
    
    803
    -{ foreign "C" barf("SRT_4 object (%p) entered!", R1) never returns; }
    
    803
    +{ ccall pbarf("SRT_4 object (%p) entered!", R1 "ptr") never returns; }
    
    804 804
     
    
    805 805
     INFO_TABLE_CONSTR(stg_SRT_5, 5, 0, 0, CONSTR, "SRT_5", "SRT_5")
    
    806
    -{ foreign "C" barf("SRT_5 object (%p) entered!", R1) never returns; }
    
    806
    +{ ccall pbarf("SRT_5 object (%p) entered!", R1 "ptr") never returns; }
    
    807 807
     
    
    808 808
     INFO_TABLE_CONSTR(stg_SRT_6, 6, 0, 0, CONSTR, "SRT_6", "SRT_6")
    
    809
    -{ foreign "C" barf("SRT_6 object (%p) entered!", R1) never returns; }
    
    809
    +{ ccall pbarf("SRT_6 object (%p) entered!", R1 "ptr") never returns; }
    
    810 810
     
    
    811 811
     INFO_TABLE_CONSTR(stg_SRT_7, 7, 0, 0, CONSTR, "SRT_7", "SRT_7")
    
    812
    -{ foreign "C" barf("SRT_7 object (%p) entered!", R1) never returns; }
    
    812
    +{ ccall pbarf("SRT_7 object (%p) entered!", R1 "ptr") never returns; }
    
    813 813
     
    
    814 814
     INFO_TABLE_CONSTR(stg_SRT_8, 8, 0, 0, CONSTR, "SRT_8", "SRT_8")
    
    815
    -{ foreign "C" barf("SRT_8 object (%p) entered!", R1) never returns; }
    
    815
    +{ ccall pbarf("SRT_8 object (%p) entered!", R1 "ptr") never returns; }
    
    816 816
     
    
    817 817
     INFO_TABLE_CONSTR(stg_SRT_9, 9, 0, 0, CONSTR, "SRT_9", "SRT_9")
    
    818
    -{ foreign "C" barf("SRT_9 object (%p) entered!", R1) never returns; }
    
    818
    +{ ccall pbarf("SRT_9 object (%p) entered!", R1 "ptr") never returns; }
    
    819 819
     
    
    820 820
     INFO_TABLE_CONSTR(stg_SRT_10, 10, 0, 0, CONSTR, "SRT_10", "SRT_10")
    
    821
    -{ foreign "C" barf("SRT_10 object (%p) entered!", R1) never returns; }
    
    821
    +{ ccall pbarf("SRT_10 object (%p) entered!", R1 "ptr") never returns; }
    
    822 822
     
    
    823 823
     INFO_TABLE_CONSTR(stg_SRT_11, 11, 0, 0, CONSTR, "SRT_11", "SRT_11")
    
    824
    -{ foreign "C" barf("SRT_11 object (%p) entered!", R1) never returns; }
    
    824
    +{ ccall pbarf("SRT_11 object (%p) entered!", R1 "ptr") never returns; }
    
    825 825
     
    
    826 826
     INFO_TABLE_CONSTR(stg_SRT_12, 12, 0, 0, CONSTR, "SRT_12", "SRT_12")
    
    827
    -{ foreign "C" barf("SRT_12 object (%p) entered!", R1) never returns; }
    
    827
    +{ ccall pbarf("SRT_12 object (%p) entered!", R1 "ptr") never returns; }
    
    828 828
     
    
    829 829
     INFO_TABLE_CONSTR(stg_SRT_13, 13, 0, 0, CONSTR, "SRT_13", "SRT_13")
    
    830
    -{ foreign "C" barf("SRT_13 object (%p) entered!", R1) never returns; }
    
    830
    +{ ccall pbarf("SRT_13 object (%p) entered!", R1 "ptr") never returns; }
    
    831 831
     
    
    832 832
     INFO_TABLE_CONSTR(stg_SRT_14, 14, 0, 0, CONSTR, "SRT_14", "SRT_14")
    
    833
    -{ foreign "C" barf("SRT_14 object (%p) entered!", R1) never returns; }
    
    833
    +{ ccall pbarf("SRT_14 object (%p) entered!", R1 "ptr") never returns; }
    
    834 834
     
    
    835 835
     INFO_TABLE_CONSTR(stg_SRT_15, 15, 0, 0, CONSTR, "SRT_15", "SRT_15")
    
    836
    -{ foreign "C" barf("SRT_15 object (%p) entered!", R1) never returns; }
    
    836
    +{ ccall pbarf("SRT_15 object (%p) entered!", R1 "ptr") never returns; }
    
    837 837
     
    
    838 838
     INFO_TABLE_CONSTR(stg_SRT_16, 16, 0, 0, CONSTR, "SRT_16", "SRT_16")
    
    839
    -{ foreign "C" barf("SRT_16 object (%p) entered!", R1) never returns; }
    
    839
    +{ ccall pbarf("SRT_16 object (%p) entered!", R1 "ptr") never returns; }
    
    840 840
     
    
    841 841
     /* ---------------------------------------------------------------------------   Messages
    
    842 842
        ------------------------------------------------------------------------- */
    
    ... ... @@ -844,20 +844,20 @@ INFO_TABLE_CONSTR(stg_SRT_16, 16, 0, 0, CONSTR, "SRT_16", "SRT_16")
    844 844
     // PRIM rather than CONSTR, because PRIM objects cannot be duplicated by the GC.
    
    845 845
     
    
    846 846
     INFO_TABLE_CONSTR(stg_MSG_TRY_WAKEUP,2,0,0,PRIM,"MSG_TRY_WAKEUP","MSG_TRY_WAKEUP")
    
    847
    -{ foreign "C" barf("MSG_TRY_WAKEUP object (%p) entered!", R1) never returns; }
    
    847
    +{ ccall pbarf("MSG_TRY_WAKEUP object (%p) entered!", R1 "ptr") never returns; }
    
    848 848
     
    
    849 849
     INFO_TABLE_CONSTR(stg_MSG_THROWTO,4,0,0,PRIM,"MSG_THROWTO","MSG_THROWTO")
    
    850
    -{ foreign "C" barf("MSG_THROWTO object (%p) entered!", R1) never returns; }
    
    850
    +{ ccall pbarf("MSG_THROWTO object (%p) entered!", R1 "ptr") never returns; }
    
    851 851
     
    
    852 852
     INFO_TABLE_CONSTR(stg_MSG_BLACKHOLE,3,0,0,PRIM,"MSG_BLACKHOLE","MSG_BLACKHOLE")
    
    853
    -{ foreign "C" barf("MSG_BLACKHOLE object (%p) entered!", R1) never returns; }
    
    853
    +{ ccall pbarf("MSG_BLACKHOLE object (%p) entered!", R1 "ptr") never returns; }
    
    854 854
     
    
    855 855
     // used to overwrite a MSG_THROWTO when the message has been used/revoked
    
    856 856
     INFO_TABLE_CONSTR(stg_MSG_NULL,1,0,0,PRIM,"MSG_NULL","MSG_NULL")
    
    857
    -{ foreign "C" barf("MSG_NULL object (%p) entered!", R1) never returns; }
    
    857
    +{ ccall pbarf("MSG_NULL object (%p) entered!", R1 "ptr") never returns; }
    
    858 858
     
    
    859 859
     INFO_TABLE_CONSTR(stg_MSG_CLONE_STACK,3,0,0,PRIM,"MSG_CLONE_STACK","MSG_CLONE_STACK")
    
    860
    -{ foreign "C" barf("stg_MSG_CLONE_STACK object (%p) entered!", R1) never returns; }
    
    860
    +{ ccall pbarf("stg_MSG_CLONE_STACK object (%p) entered!", R1 "ptr") never returns; }
    
    861 861
     
    
    862 862
     /* ----------------------------------------------------------------------------
    
    863 863
        END_TSO_QUEUE
    
    ... ... @@ -867,7 +867,7 @@ INFO_TABLE_CONSTR(stg_MSG_CLONE_STACK,3,0,0,PRIM,"MSG_CLONE_STACK","MSG_CLONE_ST
    867 867
        ------------------------------------------------------------------------- */
    
    868 868
     
    
    869 869
     INFO_TABLE_CONSTR(stg_END_TSO_QUEUE,0,0,0,CONSTR_NOCAF,"END_TSO_QUEUE","END_TSO_QUEUE")
    
    870
    -{ foreign "C" barf("END_TSO_QUEUE object (%p) entered!", R1) never returns; }
    
    870
    +{ ccall pbarf("END_TSO_QUEUE object (%p) entered!", R1 "ptr") never returns; }
    
    871 871
     
    
    872 872
     CLOSURE(stg_END_TSO_QUEUE_closure,stg_END_TSO_QUEUE);
    
    873 873
     
    
    ... ... @@ -876,7 +876,7 @@ CLOSURE(stg_END_TSO_QUEUE_closure,stg_END_TSO_QUEUE);
    876 876
        ------------------------------------------------------------------------- */
    
    877 877
     
    
    878 878
     INFO_TABLE_CONSTR(stg_GCD_CAF,0,0,0,CONSTR_NOCAF,"GCD_CAF","GCD_CAF")
    
    879
    -{ foreign "C" barf("Evaluated a CAF (%p) that was GC'd!", R1) never returns; }
    
    879
    +{ ccall pbarf("Evaluated a CAF (%p) that was GC'd!", R1 "ptr") never returns; }
    
    880 880
     
    
    881 881
     /* ----------------------------------------------------------------------------
    
    882 882
        STM_AWOKEN
    
    ... ... @@ -886,7 +886,7 @@ INFO_TABLE_CONSTR(stg_GCD_CAF,0,0,0,CONSTR_NOCAF,"GCD_CAF","GCD_CAF")
    886 886
        ------------------------------------------------------------------------- */
    
    887 887
     
    
    888 888
     INFO_TABLE_CONSTR(stg_STM_AWOKEN,0,0,0,CONSTR_NOCAF,"STM_AWOKEN","STM_AWOKEN")
    
    889
    -{ foreign "C" barf("STM_AWOKEN object (%p) entered!", R1) never returns; }
    
    889
    +{ ccall pbarf("STM_AWOKEN object (%p) entered!", R1 "ptr") never returns; }
    
    890 890
     
    
    891 891
     CLOSURE(stg_STM_AWOKEN_closure,stg_STM_AWOKEN);
    
    892 892
     
    
    ... ... @@ -906,40 +906,40 @@ CLOSURE(stg_STM_AWOKEN_closure,stg_STM_AWOKEN);
    906 906
        ------------------------------------------------------------------------- */
    
    907 907
     
    
    908 908
     INFO_TABLE(stg_ARR_WORDS, 0, 0, ARR_WORDS, "ARR_WORDS", "ARR_WORDS")
    
    909
    -{ foreign "C" barf("ARR_WORDS object (%p) entered!", R1) never returns; }
    
    909
    +{ ccall pbarf("ARR_WORDS object (%p) entered!", R1 "ptr") never returns; }
    
    910 910
     
    
    911 911
     INFO_TABLE(stg_MUT_ARR_PTRS_CLEAN, 0, 0, MUT_ARR_PTRS_CLEAN, "MUT_ARR_PTRS_CLEAN", "MUT_ARR_PTRS_CLEAN")
    
    912
    -{ foreign "C" barf("MUT_ARR_PTRS_CLEAN object (%p) entered!", R1) never returns; }
    
    912
    +{ ccall pbarf("MUT_ARR_PTRS_CLEAN object (%p) entered!", R1 "ptr") never returns; }
    
    913 913
     
    
    914 914
     INFO_TABLE(stg_MUT_ARR_PTRS_DIRTY, 0, 0, MUT_ARR_PTRS_DIRTY, "MUT_ARR_PTRS_DIRTY", "MUT_ARR_PTRS_DIRTY")
    
    915
    -{ foreign "C" barf("MUT_ARR_PTRS_DIRTY object (%p) entered!", R1) never returns; }
    
    915
    +{ ccall pbarf("MUT_ARR_PTRS_DIRTY object (%p) entered!", R1 "ptr") never returns; }
    
    916 916
     
    
    917 917
     INFO_TABLE(stg_MUT_ARR_PTRS_FROZEN_CLEAN, 0, 0, MUT_ARR_PTRS_FROZEN_CLEAN, "MUT_ARR_PTRS_FROZEN_CLEAN", "MUT_ARR_PTRS_FROZEN_CLEAN")
    
    918
    -{ foreign "C" barf("MUT_ARR_PTRS_FROZEN_CLEAN object (%p) entered!", R1) never returns; }
    
    918
    +{ ccall pbarf("MUT_ARR_PTRS_FROZEN_CLEAN object (%p) entered!", R1 "ptr") never returns; }
    
    919 919
     
    
    920 920
     INFO_TABLE(stg_MUT_ARR_PTRS_FROZEN_DIRTY, 0, 0, MUT_ARR_PTRS_FROZEN_DIRTY, "MUT_ARR_PTRS_FROZEN_DIRTY", "MUT_ARR_PTRS_FROZEN_DIRTY")
    
    921
    -{ foreign "C" barf("MUT_ARR_PTRS_FROZEN_DIRTY object (%p) entered!", R1) never returns; }
    
    921
    +{ ccall pbarf("MUT_ARR_PTRS_FROZEN_DIRTY object (%p) entered!", R1 "ptr") never returns; }
    
    922 922
     
    
    923 923
     INFO_TABLE(stg_SMALL_MUT_ARR_PTRS_CLEAN, 0, 0, SMALL_MUT_ARR_PTRS_CLEAN, "SMALL_MUT_ARR_PTRS_CLEAN", "SMALL_MUT_ARR_PTRS_CLEAN")
    
    924
    -{ foreign "C" barf("SMALL_MUT_ARR_PTRS_CLEAN object (%p) entered!", R1) never returns; }
    
    924
    +{ ccall pbarf("SMALL_MUT_ARR_PTRS_CLEAN object (%p) entered!", R1 "ptr") never returns; }
    
    925 925
     
    
    926 926
     INFO_TABLE(stg_SMALL_MUT_ARR_PTRS_DIRTY, 0, 0, SMALL_MUT_ARR_PTRS_DIRTY, "SMALL_MUT_ARR_PTRS_DIRTY", "SMALL_MUT_ARR_PTRS_DIRTY")
    
    927
    -{ foreign "C" barf("SMALL_MUT_ARR_PTRS_DIRTY object (%p) entered!", R1) never returns; }
    
    927
    +{ ccall pbarf("SMALL_MUT_ARR_PTRS_DIRTY object (%p) entered!", R1 "ptr") never returns; }
    
    928 928
     
    
    929 929
     INFO_TABLE(stg_SMALL_MUT_ARR_PTRS_FROZEN_CLEAN, 0, 0, SMALL_MUT_ARR_PTRS_FROZEN_CLEAN, "SMALL_MUT_ARR_PTRS_FROZEN_CLEAN", "SMALL_MUT_ARR_PTRS_FROZEN_CLEAN")
    
    930
    -{ foreign "C" barf("SMALL_MUT_ARR_PTRS_FROZEN_CLEAN object (%p) entered!", R1) never returns; }
    
    930
    +{ ccall pbarf("SMALL_MUT_ARR_PTRS_FROZEN_CLEAN object (%p) entered!", R1 "ptr") never returns; }
    
    931 931
     
    
    932 932
     INFO_TABLE(stg_SMALL_MUT_ARR_PTRS_FROZEN_DIRTY, 0, 0, SMALL_MUT_ARR_PTRS_FROZEN_DIRTY, "SMALL_MUT_ARR_PTRS_FROZEN_DIRTY", "SMALL_MUT_ARR_PTRS_FROZEN_DIRTY")
    
    933
    -{ foreign "C" barf("SMALL_MUT_ARR_PTRS_FROZEN_DIRTY object (%p) entered!", R1) never returns; }
    
    933
    +{ ccall pbarf("SMALL_MUT_ARR_PTRS_FROZEN_DIRTY object (%p) entered!", R1 "ptr") never returns; }
    
    934 934
     
    
    935 935
     /* ----------------------------------------------------------------------------
    
    936 936
        Mutable Variables
    
    937 937
        ------------------------------------------------------------------------- */
    
    938 938
     
    
    939 939
     INFO_TABLE(stg_MUT_VAR_CLEAN, 1, 0, MUT_VAR_CLEAN, "MUT_VAR_CLEAN", "MUT_VAR_CLEAN")
    
    940
    -{ foreign "C" barf("MUT_VAR_CLEAN object (%p) entered!", R1) never returns; }
    
    940
    +{ ccall pbarf("MUT_VAR_CLEAN object (%p) entered!", R1 "ptr") never returns; }
    
    941 941
     INFO_TABLE(stg_MUT_VAR_DIRTY, 1, 0, MUT_VAR_DIRTY, "MUT_VAR_DIRTY", "MUT_VAR_DIRTY")
    
    942
    -{ foreign "C" barf("MUT_VAR_DIRTY object (%p) entered!", R1) never returns; }
    
    942
    +{ ccall pbarf("MUT_VAR_DIRTY object (%p) entered!", R1 "ptr") never returns; }
    
    943 943
     
    
    944 944
     /* ----------------------------------------------------------------------------
    
    945 945
        Dummy return closure
    
    ... ... @@ -961,7 +961,7 @@ CLOSURE(stg_dummy_ret_closure,stg_dummy_ret);
    961 961
        ------------------------------------------------------------------------- */
    
    962 962
     
    
    963 963
     INFO_TABLE_CONSTR(stg_MVAR_TSO_QUEUE,2,0,0,PRIM,"MVAR_TSO_QUEUE","MVAR_TSO_QUEUE")
    
    964
    -{ foreign "C" barf("MVAR_TSO_QUEUE object (%p) entered!", R1) never returns; }
    
    964
    +{ ccall pbarf("MVAR_TSO_QUEUE object (%p) entered!", R1 "ptr") never returns; }
    
    965 965
     
    
    966 966
     /* ----------------------------------------------------------------------------
    
    967 967
        COMPACT_NFDATA (a blob of data in NF with no outgoing pointers)
    
    ... ... @@ -974,11 +974,11 @@ INFO_TABLE_CONSTR(stg_MVAR_TSO_QUEUE,2,0,0,PRIM,"MVAR_TSO_QUEUE","MVAR_TSO_QUEUE
    974 974
     
    
    975 975
     INFO_TABLE( stg_COMPACT_NFDATA_CLEAN, 0, 9, COMPACT_NFDATA, "COMPACT_NFDATA", "COMPACT_NFDATA")
    
    976 976
         ()
    
    977
    -{ foreign "C" barf("COMPACT_NFDATA_CLEAN object (%p) entered!", R1) never returns; }
    
    977
    +{ ccall pbarf("COMPACT_NFDATA_CLEAN object (%p) entered!", R1 "ptr") never returns; }
    
    978 978
     
    
    979 979
     INFO_TABLE( stg_COMPACT_NFDATA_DIRTY, 0, 9, COMPACT_NFDATA, "COMPACT_NFDATA", "COMPACT_NFDATA")
    
    980 980
         ()
    
    981
    -{ foreign "C" barf("COMPACT_NFDATA_DIRTY object (%p) entered!", R1) never returns; }
    
    981
    +{ ccall pbarf("COMPACT_NFDATA_DIRTY object (%p) entered!", R1 "ptr") never returns; }
    
    982 982
     
    
    983 983
     /* ----------------------------------------------------------------------------
    
    984 984
        ClosureTable element null value
    
    ... ... @@ -988,7 +988,7 @@ INFO_TABLE( stg_COMPACT_NFDATA_DIRTY, 0, 9, COMPACT_NFDATA, "COMPACT_NFDATA", "C
    988 988
        ------------------------------------------------------------------------- */
    
    989 989
     
    
    990 990
     INFO_TABLE_CONSTR(stg_CLOSURE_TABLE_NULL,0,0,0,CONSTR_NOCAF,"CLOSURE_TABLE_NULL","CLOSURE_TABLE_NULL")
    
    991
    -{ foreign "C" barf("CLOSURE_TABLE_NULL object (%p) entered!", R1) never returns; }
    
    991
    +{ ccall pbarf("CLOSURE_TABLE_NULL object (%p) entered!", R1 "ptr") never returns; }
    
    992 992
     
    
    993 993
     CLOSURE(stg_CLOSURE_TABLE_NULL_closure,stg_CLOSURE_TABLE_NULL);
    
    994 994
     
    
    ... ... @@ -1003,10 +1003,10 @@ INFO_TABLE_CONSTR(stg_TIMEOUT_QUEUE,
    1003 1003
                       stg_TIMEOUT_QUEUE_NUM_PTRS,
    
    1004 1004
                       stg_TIMEOUT_QUEUE_NUM_NONPTRS,
    
    1005 1005
                       0,MUT_PRIM,"TIMEOUT_QUEUE","TIMEOUT_QUEUE")
    
    1006
    -{ foreign "C" barf("TIMEOUT_QUEUE object (%p) entered!", R1) never returns; }
    
    1006
    +{ ccall pbarf("TIMEOUT_QUEUE object (%p) entered!", R1 "ptr") never returns; }
    
    1007 1007
     
    
    1008 1008
     INFO_TABLE_CONSTR(stg_TIMEOUT_QUEUE_EMPTY,0,0,0,CONSTR_NOCAF,"TIMEOUT_QUEUE_EMPTY","TIMEOUT_QUEUE_EMPTY")
    
    1009
    -{ foreign "C" barf("TIMEOUT_QUEUE_EMPTY object (%p) entered!", R1) never returns; }
    
    1009
    +{ ccall pbarf("TIMEOUT_QUEUE_EMPTY object (%p) entered!", R1 "ptr") never returns; }
    
    1010 1010
     
    
    1011 1011
     CLOSURE(stg_TIMEOUT_QUEUE_EMPTY_closure,stg_TIMEOUT_QUEUE_EMPTY);
    
    1012 1012
     
    
    ... ... @@ -1022,9 +1022,9 @@ INFO_TABLE_CONSTR(stg_ASYNCIOOP,
    1022 1022
                       stg_ASYNCIOOP_NUM_PTRS,
    
    1023 1023
                       stg_ASYNCIOOP_NUM_NONPTRS,
    
    1024 1024
                       0,PRIM,"ASYNCIOOP","ASYNCIOOP")
    
    1025
    -{ foreign "C" barf("ASYNCIOOP object (%p) entered!", R1) never returns; }
    
    1025
    +{ ccall pbarf("ASYNCIOOP object (%p) entered!", R1 "ptr") never returns; }
    
    1026 1026
     
    
    1027 1027
     INFO_TABLE_CONSTR(stg_ASYNCIO_LIVE0,0,0,0,CONSTR_NOCAF,"ASYNCIO_LIVE0","ASYNCIO_LIVE0")
    
    1028
    -{ foreign "C" barf("ASYNCIO_LIVE0 object (%p) entered!", R1) never returns; }
    
    1028
    +{ ccall pbarf("ASYNCIO_LIVE0 object (%p) entered!", R1 "ptr") never returns; }
    
    1029 1029
     
    
    1030 1030
     CLOSURE(stg_ASYNCIO_LIVE0_closure,stg_ASYNCIO_LIVE0);

  • rts/StgStartup.cmm
    ... ... @@ -178,5 +178,5 @@ INFO_TABLE_RET(stg_forceIO, RET_SMALL, P_ info_ptr)
    178 178
     /* Called when compiled with -falignment-sanitisation on alignment failure */
    
    179 179
     stg_badAlignment_entry
    
    180 180
     {
    
    181
    -  foreign "C" barf("stg_badAlignment_entry", NULL);
    
    181
    +  ccall sbarf("stg_badAlignment_entry") never returns;
    
    182 182
     }

  • rts/include/rts/Messages.h
    ... ... @@ -37,6 +37,18 @@ void barf(const char *s, ...)
    37 37
     void vbarf(const char *s, va_list ap)
    
    38 38
        STG_NORETURN;
    
    39 39
     
    
    40
    +/* Non-variadic wrapper around barf(), used by the code generator. */
    
    41
    +void sbarf(const char *s)
    
    42
    +   STG_NORETURN;
    
    43
    +
    
    44
    +/* Non-variadic wrapper around barf() for a format string and one pointer. */
    
    45
    +void pbarf(const char *fmt, void *p)
    
    46
    +   STG_NORETURN;
    
    47
    +
    
    48
    +/* Non-variadic wrapper around barf() for a format string and one string. */
    
    49
    +void ssbarf(const char *fmt, const char *s)
    
    50
    +   STG_NORETURN;
    
    51
    +
    
    40 52
     // declared in Rts.h:
    
    41 53
     // extern void _assertFail(const char *filename, unsigned int linenum)
    
    42 54
     //    STG_NORETURN;
    

  • testsuite/tests/simplStg/should_compile/all.T
    ... ... @@ -19,8 +19,6 @@ test('T22840', [extra_files(
    19 19
             [ 'T22840A.hs'
    
    20 20
             , 'T22840B.hs'
    
    21 21
             ]),
    
    22
    -        # barf signature mismatch on wasm32 due to -dtag-inference-checks
    
    23
    -        when(arch('wasm32'), skip),
    
    24 22
             when(not(have_dynamic()),skip)], multimod_compile, ['T22840', '-dynamic-too -dtag-inference-checks'])
    
    25 23
     test('inferTags003', [ only_ways(['optasm']),
    
    26 24
                            grep_errmsg(r'(call stg\_ap\_0)', [1])
    

  • utils/genapply/Main.hs
    ... ... @@ -79,7 +79,7 @@ in a conditional. For example, stg_stk_save_v32 looks like:
    79 79
             V32_[Sp+WDS(3)] = YMM1;
    
    80 80
             ...
    
    81 81
             #else
    
    82
    -        foreign "C" barf("stg_stk_save_v32: unsupported vector register", NULL) never returns;
    
    82
    +        ccall sbarf("stg_stk_save_v32: unsupported vector register") never returns;
    
    83 83
             #endif
    
    84 84
         }
    
    85 85
     
    
    ... ... @@ -344,7 +344,7 @@ vecsCpp fun regs code =
    344 344
              , text "#if" <+> cond ]
    
    345 345
              ++ code
    
    346 346
              ++ [ text "#else //" <+> cond
    
    347
    -            , text "foreign \"C\" barf(\"" <> fun <> text ": unsupported vector register\", NULL) never returns;"
    
    347
    +            , text "ccall sbarf(\"" <> fun <> text ": unsupported vector register\") never returns;"
    
    348 348
                 , text "#endif //" <+> cond
    
    349 349
                 ]
    
    350 350
     
    
    ... ... @@ -1049,7 +1049,7 @@ genApply targetInfo args =
    1049 1049
     
    
    1050 1050
            text "default: {",
    
    1051 1051
            nest 4 (
    
    1052
    -         text "foreign \"C\" barf(\"" <> fun_ret_label <> text "\", NULL) never returns;"
    
    1052
    +         text "ccall sbarf(\"" <> fun_ret_label <> text "\") never returns;"
    
    1053 1053
            ),
    
    1054 1054
            text "}"
    
    1055 1055