File tree Expand file tree Collapse file tree 6 files changed +298
-321
lines changed Expand file tree Collapse file tree 6 files changed +298
-321
lines changed Original file line number Diff line number Diff line change 1- (Layout1tmp (Content (Plain (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 (Emph (Cons_v_1062 ->i (Str Vector) (Nil_v_1062))) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) ->r (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 (Emph (Cons_v_1062 ->i (Str Vector) (Nil_v_1062))) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Nil_v_1062))))))))))))))))))))))))))))))))))))))))))))))))))))) (Layout1tmp (Content (Plain (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 (Emph (Cons_v_1062 ->i (Str Vector) (Nil_v_1062))) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Nil_v_1062))))))))))))))))))))))))))))))))))))))))))))))))))))) (End) ->i (Header Vector) ->i (ID 9) ->i (Author Vector) ->i (Date Vector) ->i (TagList (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Nil_v_1063))))))))))))) ->i (Header Vector) ->i (ID 8) ->i (Author Vector) ->i (Date Vector) ->i (TagList (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Nil_v_1063)))))))))))))'#()
1+ (Layout1 ->i (Header Vector) ->i (ID 8) ->i (Author Vector) ->i (Date Vector) (Content (Plain (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 (Emph (Cons_v_1062 ->i (Str Vector) (Nil_v_1062))) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->r ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 (Emph (Cons_v_1062 ->i (Str Vector) (Nil_v_1062))) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Nil_v_1062))))))))))))))))))))))))))))))))))))))))))))))))))))) ->i (TagList (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Nil_v_1063)))))))))))) (Layout1 ->i (Header Vector) ->i (ID 9) ->i (Author Vector) ->i (Date Vector) (Content (Plain (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 (Emph (Cons_v_1062 ->i (Str Vector) (Nil_v_1062))) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Cons_v_1062 ->i (Str Vector) (Nil_v_1062))))))))))))))))))))))))))))))))))))))))))))))))))))) ->i (TagList (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Cons_v_1063 Vector (Nil_v_1063)))))))))))) (End)))'#()
Original file line number Diff line number Diff line change @@ -4,7 +4,6 @@ import GenerateLayout1
44type Text = Vector Char
55
66emphKeywordInContent :: Text -> Blog -> Blog
7- {-# ANN emphKeywordInContent Layout1 #-}
87emphKeywordInContent keyword blogs =
98 case blogs of
109 End -> End
Original file line number Diff line number Diff line change @@ -92,7 +92,7 @@ import Gibbon.Passes.Codegen (codegenProg)
9292import Gibbon.Passes.Fusion2 (fusion2 )
9393import Gibbon.Passes.CalculateBounds (inferRegSize )
9494import Gibbon.Pretty
95- import Gibbon.Passes.OptimizeADTLayout (shuffleDataCon )
95+ import Gibbon.Passes.OptimizeADTLayout (optimizeADTLayout )
9696
9797
9898
@@ -599,6 +599,7 @@ passes config@Config{dynflags} l0 = do
599599 no_rcopies = gopt Opt_No_RemoveCopies dynflags
600600 parallel = gopt Opt_Parallel dynflags
601601 should_fuse = gopt Opt_Fusion dynflags
602+ opt_layout = gopt Opt_Layout dynflags
602603 tcProg3 = L3. tcProg isPacked
603604 l0 <- go " freshen" freshNames l0
604605 l0 <- goE0 " typecheck" L0. tcProg l0
@@ -640,7 +641,9 @@ passes config@Config{dynflags} l0 = do
640641 -- branches before InferLocations.
641642
642643 -- Note: L1 -> L2
643- l1 <- goE1 " optimizeADTLayout" shuffleDataCon l1
644+ l1 <- if opt_layout
645+ then goE1 " optimizeADTLayout" optimizeADTLayout l1
646+ else return l1
644647 l1 <- goE1 " copyOutOfOrderPacked" copyOutOfOrderPacked l1
645648 l1 <- goE1 " simplify_2" simplifyL1 l1
646649 l1 <- go " L1.typecheck" L1. tcProg l1
Original file line number Diff line number Diff line change @@ -39,6 +39,7 @@ data GeneralFlag
3939 | Opt_GenGc -- ^ Use the new non-generational GC.
4040 | Opt_NoEagerPromote -- ^ Disable eager promotion.
4141 | Opt_SimpleWriteBarrier -- ^ Disables eliminate-indirection-chains optimization.
42+ | Opt_Layout -- ^ Optimize the layout of Algebraic data types
4243 deriving (Show ,Read ,Eq ,Ord )
4344
4445-- | Exactly like GHC's ddump flags.
@@ -114,7 +115,8 @@ dynflagsParser = DynFlags <$> (S.fromList <$> many gflagsParser) <*> (S.fromList
114115 flag' Opt_PrintGcStats (long " print-gc-stats" <> short ' S' <> help " Record and print GC statistics." ) <|>
115116 flag' Opt_GenGc (long " gen-gc" <> help " Use the new generational GC." ) <|>
116117 flag' Opt_NoEagerPromote (long " no-eager-promote" <> help " Disable eager promotion." ) <|>
117- flag' Opt_SimpleWriteBarrier (long " simple-write-barrier" <> help " Disables eliminate-indirection-chains optimization." )
118+ flag' Opt_SimpleWriteBarrier (long " simple-write-barrier" <> help " Disables eliminate-indirection-chains optimization." ) <|>
119+ flag' Opt_Layout (long " opt-layout" <> help " Optimizes the Layout of Algebraic data types" )
118120
119121
120122 dflagsParser :: Parser DebugFlag
You can’t perform that action at this time.
0 commit comments