WIP: DON'T PUSH, misc local changes wip/T13861
authorGabor Greif <ggreif@gmail.com>
Wed, 3 Jan 2018 14:57:17 +0000 (15:57 +0100)
committerGabor Greif <ggreif@gmail.com>
Fri, 23 Aug 2019 18:00:25 +0000 (20:00 +0200)
compiler/codeGen/StgCmmClosure.hs
compiler/codeGen/StgCmmExpr.hs
libffi/ghc.mk
testsuite/tests/codeGen/should_compile/all.T

index 9469368..1112576 100644 (file)
@@ -60,6 +60,7 @@ module StgCmmClosure (
         cafBlackHoleInfoTable,
         indStaticInfoTable,
         staticClosureNeedsLink,
+        LambdaFormInfo(LFThunk)
     ) where
 
 #include "../includes/MachDeps.h"
@@ -599,6 +600,12 @@ getCallMethod _ _name _ (LFCon _) n_args _v_args _cg_loc _self_loop_info
     -- n_args=0 because it'd be ill-typed to apply a saturated
     --          constructor application to anything
 
+getCallMethod _ _name id lf 0 _v_args _cg_loc _self_loop_info
+  | isEvaldUnfolding (idUnfolding id) && trace lf "getCallMethod##" (ppr id $$ (text . show $ lf) $$ ppr (idUnfolding id)) False
+  = undefined
+  where trace LFLetNoEscape _ _ = GhcPrelude.id
+        trace _ s d = pprTrace s d
+
 getCallMethod dflags name id (LFThunk _ _ updatable std_form_info is_fun)
               n_args _v_args _cg_loc _self_loop_info
   | is_fun      -- it *might* be a function, so we must "call" it (which is always safe)
index 53ac40f..774c87f 100644 (file)
@@ -872,8 +872,8 @@ cgIdApp fun_id args = do
           -- ToDo: does ReturnIt guarantee tagged?
 
         EnterIt -> ASSERT( null args )  -- Discarding arguments
-                   ASSERT2( not (isEvaldUnfolding (idUnfolding fun_id)), ppr fun_id <+> ppr (idUnfolding fun_id) $$ ppr cg_fun_id <+> ppr (idUnfolding cg_fun_id))
-                   if isEvaldUnfolding (idUnfolding fun_id) then pprPanic "cgIdApp" (ppr fun_id <+> ppr (idUnfolding fun_id) $$ ppr cg_fun_id <+> ppr (idUnfolding cg_fun_id)) else emitEnter fun
+                   --ASSERT2( okay lf_info || not (isEvaldUnfolding (idUnfolding fun_id)), ppr fun_id <+> ppr (idUnfolding fun_id) $$ ppr cg_fun_id <+> ppr (idUnfolding cg_fun_id))
+                   if isEvaldUnfolding (idUnfolding fun_id) then pprTrace "cgIdApp" (ppr fun_id <+> ppr (idUnfolding fun_id) $$ ppr cg_fun_id <+> ppr (idUnfolding cg_fun_id)) $ emitEnter fun else emitEnter fun
 
         SlowCall -> do      -- A slow function call via the RTS apply routines
                 { tickySlowCall lf_info args
index a127612..523250c 100644 (file)
@@ -89,7 +89,9 @@ $(libffi_STAMP_CONFIGURE): $(TOUCH_DEP)
        cd libffi && \
            cd build && \
            CC=$(CC_STAGE1) \
+           CPP="$(CC_STAGE1) -E" \
            CXX=$(CC_STAGE1) \
+           CXXCPP="$(CC_STAGE1:gcc=g++) -E" \
            LD=$(LD) \
            AR=$(AR_STAGE1) \
            NM=$(NM) \
index 053fa10..b10aaf6 100644 (file)
@@ -69,7 +69,8 @@ test('T14373', [],
 test('T14373a', [],
      multimod_compile, ['T14373a', '-fasm -O2 -ddump-cmm-from-stg -dsuppress-uniques'])
 test('T14373b', [],
-     multimod_compile, ['T14373b', '-fasm -O2 -ddump-cmm-from-stg -dsuppress-uniques'])
+     multimod_compile, ['T14373b', '-v -O2 -dsuppress-uniques'])
+#     multimod_compile, ['T14373b', '-fasm -O2 -ddump-cmm-from-stg -dsuppress-uniques'])
 test('T14626',
      normal,
      run_command, ['$MAKE -s --no-print-directory T14626'])