From e06548f106b09ee243ce80f39e06ef0c95c7e93e Mon Sep 17 00:00:00 2001 From: Christian Gram Kalhauge <chrg@dtu.dk> Date: Thu, 22 Feb 2024 09:38:12 +0100 Subject: [PATCH] Work in progress --- rtree-c/src/ReduceC.hs | 78 +++++++++++++++---- rtree-c/test/cases/constant.c | 6 ++ rtree-c/test/expected/constant/main.c | 6 ++ .../test/expected/constant/reduction/r000.c | 6 ++ .../expected/constant/reduction/r000.choices | 3 + .../test/expected/constant/reduction/r001.c | 5 ++ .../expected/constant/reduction/r001.choices | 3 + .../test/expected/constant/reduction/r010.c | 5 ++ .../expected/constant/reduction/r010.choices | 3 + .../r1.c => constant/reduction/r011.c} | 2 +- .../expected/constant/reduction/r011.choices | 3 + .../test/expected/constant/reduction/r100.c | 5 ++ .../expected/constant/reduction/r100.choices | 3 + .../test/expected/constant/reduction/r101.c | 4 + .../expected/constant/reduction/r101.choices | 3 + .../test/expected/constant/reduction/r110.c | 4 + .../expected/constant/reduction/r110.choices | 3 + .../test/expected/constant/reduction/r111.c | 3 + .../expected/constant/reduction/r111.choices | 3 + .../typedef/reduction/{r000.c => r0000.c} | 0 .../reduction/{r000.choices => r0000.choices} | 1 + .../typedef/reduction/{r001.c => r0001.c} | 0 .../reduction/{r001.choices => r0001.choices} | 1 + .../test/expected/typedef/reduction/r0010.c | 8 ++ .../expected/typedef/reduction/r0010.choices | 4 + .../test/expected/typedef/reduction/r0011.c | 7 ++ .../expected/typedef/reduction/r0011.choices | 4 + .../typedef/reduction/{r010.c => r0100.c} | 0 .../reduction/{r010.choices => r0100.choices} | 1 + .../typedef/reduction/{r011.c => r0101.c} | 0 .../reduction/{r011.choices => r0101.choices} | 1 + .../test/expected/typedef/reduction/r0110.c | 5 ++ .../expected/typedef/reduction/r0110.choices | 4 + .../test/expected/typedef/reduction/r0111.c | 4 + .../expected/typedef/reduction/r0111.choices | 4 + .../typedef/reduction/{r100.c => r1000.c} | 0 .../reduction/{r100.choices => r1000.choices} | 1 + .../typedef/reduction/{r101.c => r1001.c} | 0 .../reduction/{r101.choices => r1001.choices} | 1 + .../test/expected/typedef/reduction/r1010.c | 7 ++ .../expected/typedef/reduction/r1010.choices | 4 + .../test/expected/typedef/reduction/r1011.c | 6 ++ .../expected/typedef/reduction/r1011.choices | 4 + .../typedef/reduction/{r110.c => r1100.c} | 0 .../reduction/{r110.choices => r1100.choices} | 1 + .../typedef/reduction/{r111.c => r1101.c} | 0 .../reduction/{r111.choices => r1101.choices} | 1 + .../test/expected/typedef/reduction/r1110.c | 4 + .../expected/typedef/reduction/r1110.choices | 4 + .../test/expected/typedef/reduction/r1111.c | 3 + .../expected/typedef/reduction/r1111.choices | 4 + .../while-loops/reduction/{r00.c => r000.c} | 0 .../reduction/{r00.choices => r000.choices} | 1 + .../expected/while-loops/reduction/r001.c | 7 ++ .../while-loops/reduction/r001.choices | 3 + .../test/expected/while-loops/reduction/r01.c | 3 - .../while-loops/reduction/r01.choices | 4 +- .../expected/while-loops/reduction/r1.choices | 1 - .../expected/while-loops/reduction/r100.c | 7 ++ .../while-loops/reduction/r100.choices | 3 + .../expected/while-loops/reduction/r101.c | 6 ++ .../while-loops/reduction/r101.choices | 3 + .../test/expected/while-loops/reduction/r11.c | 3 + .../while-loops/reduction/r11.choices | 2 + 64 files changed, 253 insertions(+), 22 deletions(-) create mode 100644 rtree-c/test/cases/constant.c create mode 100644 rtree-c/test/expected/constant/main.c create mode 100644 rtree-c/test/expected/constant/reduction/r000.c create mode 100644 rtree-c/test/expected/constant/reduction/r000.choices create mode 100644 rtree-c/test/expected/constant/reduction/r001.c create mode 100644 rtree-c/test/expected/constant/reduction/r001.choices create mode 100644 rtree-c/test/expected/constant/reduction/r010.c create mode 100644 rtree-c/test/expected/constant/reduction/r010.choices rename rtree-c/test/expected/{while-loops/reduction/r1.c => constant/reduction/r011.c} (50%) create mode 100644 rtree-c/test/expected/constant/reduction/r011.choices create mode 100644 rtree-c/test/expected/constant/reduction/r100.c create mode 100644 rtree-c/test/expected/constant/reduction/r100.choices create mode 100644 rtree-c/test/expected/constant/reduction/r101.c create mode 100644 rtree-c/test/expected/constant/reduction/r101.choices create mode 100644 rtree-c/test/expected/constant/reduction/r110.c create mode 100644 rtree-c/test/expected/constant/reduction/r110.choices create mode 100644 rtree-c/test/expected/constant/reduction/r111.c create mode 100644 rtree-c/test/expected/constant/reduction/r111.choices rename rtree-c/test/expected/typedef/reduction/{r000.c => r0000.c} (100%) rename rtree-c/test/expected/typedef/reduction/{r000.choices => r0000.choices} (75%) rename rtree-c/test/expected/typedef/reduction/{r001.c => r0001.c} (100%) rename rtree-c/test/expected/typedef/reduction/{r001.choices => r0001.choices} (75%) create mode 100644 rtree-c/test/expected/typedef/reduction/r0010.c create mode 100644 rtree-c/test/expected/typedef/reduction/r0010.choices create mode 100644 rtree-c/test/expected/typedef/reduction/r0011.c create mode 100644 rtree-c/test/expected/typedef/reduction/r0011.choices rename rtree-c/test/expected/typedef/reduction/{r010.c => r0100.c} (100%) rename rtree-c/test/expected/typedef/reduction/{r010.choices => r0100.choices} (75%) rename rtree-c/test/expected/typedef/reduction/{r011.c => r0101.c} (100%) rename rtree-c/test/expected/typedef/reduction/{r011.choices => r0101.choices} (75%) create mode 100644 rtree-c/test/expected/typedef/reduction/r0110.c create mode 100644 rtree-c/test/expected/typedef/reduction/r0110.choices create mode 100644 rtree-c/test/expected/typedef/reduction/r0111.c create mode 100644 rtree-c/test/expected/typedef/reduction/r0111.choices rename rtree-c/test/expected/typedef/reduction/{r100.c => r1000.c} (100%) rename rtree-c/test/expected/typedef/reduction/{r100.choices => r1000.choices} (75%) rename rtree-c/test/expected/typedef/reduction/{r101.c => r1001.c} (100%) rename rtree-c/test/expected/typedef/reduction/{r101.choices => r1001.choices} (75%) create mode 100644 rtree-c/test/expected/typedef/reduction/r1010.c create mode 100644 rtree-c/test/expected/typedef/reduction/r1010.choices create mode 100644 rtree-c/test/expected/typedef/reduction/r1011.c create mode 100644 rtree-c/test/expected/typedef/reduction/r1011.choices rename rtree-c/test/expected/typedef/reduction/{r110.c => r1100.c} (100%) rename rtree-c/test/expected/typedef/reduction/{r110.choices => r1100.choices} (75%) rename rtree-c/test/expected/typedef/reduction/{r111.c => r1101.c} (100%) rename rtree-c/test/expected/typedef/reduction/{r111.choices => r1101.choices} (75%) create mode 100644 rtree-c/test/expected/typedef/reduction/r1110.c create mode 100644 rtree-c/test/expected/typedef/reduction/r1110.choices create mode 100644 rtree-c/test/expected/typedef/reduction/r1111.c create mode 100644 rtree-c/test/expected/typedef/reduction/r1111.choices rename rtree-c/test/expected/while-loops/reduction/{r00.c => r000.c} (100%) rename rtree-c/test/expected/while-loops/reduction/{r00.choices => r000.choices} (66%) create mode 100644 rtree-c/test/expected/while-loops/reduction/r001.c create mode 100644 rtree-c/test/expected/while-loops/reduction/r001.choices delete mode 100644 rtree-c/test/expected/while-loops/reduction/r1.choices create mode 100644 rtree-c/test/expected/while-loops/reduction/r100.c create mode 100644 rtree-c/test/expected/while-loops/reduction/r100.choices create mode 100644 rtree-c/test/expected/while-loops/reduction/r101.c create mode 100644 rtree-c/test/expected/while-loops/reduction/r101.choices create mode 100644 rtree-c/test/expected/while-loops/reduction/r11.c create mode 100644 rtree-c/test/expected/while-loops/reduction/r11.choices diff --git a/rtree-c/src/ReduceC.hs b/rtree-c/src/ReduceC.hs index 1190e21..b6c5c38 100644 --- a/rtree-c/src/ReduceC.hs +++ b/rtree-c/src/ReduceC.hs @@ -28,12 +28,14 @@ import qualified Language.C.Data.Ident as C data Context = Context { keywords :: !(Set.Set Keyword) , typeDefs :: !(Map.Map C.Ident [C.CDeclarationSpecifier C.NodeInfo]) + , inlineExprs :: !(Map.Map C.Ident C.CExpr) } data Keyword = KeepMain | DoNoops | NoSemantics + | AllowEmptyDeclarations deriving (Show, Read, Enum, Eq, Ord) type CM m = (MonadReduce (String, C.Position) m, MonadReader Context m, MonadFail m) @@ -49,11 +51,19 @@ addTypeDefs ids cs Context{..} = , .. } +addInlineExpr :: C.Ident -> C.CExpr -> Context -> Context +addInlineExpr i e Context{..} = + Context + { inlineExprs = Map.insert i e inlineExprs + , .. + } + defaultContext :: Context defaultContext = Context { keywords = Set.fromList [KeepMain] , typeDefs = Map.empty + , inlineExprs = Map.empty } keyword :: (MonadReader Context m) => Keyword -> m Bool @@ -87,9 +97,37 @@ instance CReducible C.CTranslUnit where ("inline typedef " <> C.identToString ids, C.posOf r) (local (addTypeDefs [ids] rst) cont) ((r :) <$> local (addTypeDefs [ids] [C.CTypeSpec (C.CTypeDef ids n)]) cont) + -- A const + C.CDecl rec decl ni' -> do + (decl', cont') <- foldr reduceCDeclarationItem (pure ([], cont)) decl + allow <- keyword AllowEmptyDeclarations + case decl' of + [] + | allow -> + split ("remove empty declaration", C.posOf r) cont' do + (C.CDeclExt (C.CDecl rec decl' ni') :) <$> cont' + | otherwise -> cont' + _ow -> (C.CDeclExt (C.CDecl rec decl' ni') :) <$> cont' a -> don'tHandle a _r -> don'tHandle r +reduceCDeclarationItem + :: (CM m) + => C.CDeclarationItem C.NodeInfo + -> m ([C.CDeclarationItem C.NodeInfo], m a) + -> m ([C.CDeclarationItem C.NodeInfo], m a) +reduceCDeclarationItem d ma = case d of + C.CDeclarationItem + (C.CDeclr (Just i) [] Nothing [] ni) + (Just (C.CInitExpr c _)) + Nothing -> do + (ds, cont) <- ma + split + ("inline variable " <> C.identToString i, C.posOf ni) + (pure (ds, local (addInlineExpr i c) cont)) + (pure (d : ds, local (addInlineExpr i (C.CVar i ni)) cont)) + a -> don'tHandle a + prettyIdent :: C.Identifier C.NodeInfo -> [Char] prettyIdent (C.Ident s _ a) = s ++ " at " ++ show (C.posOfNode a) @@ -109,10 +147,18 @@ reduceCCompoundBlockItem r cont = case r of split ("remove statement", C.posOf r) cont do smt' <- reduceC smt (C.CBlockStmt smt' :) <$> cont - C.CBlockDecl decl -> do - case decl of - C.CDecl{} -> do - (r :) <$> cont + C.CBlockDecl declr -> do + case declr of + C.CDecl rec decl ni' -> do + (decl', cont') <- foldr reduceCDeclarationItem (pure ([], cont)) decl + allow <- keyword AllowEmptyDeclarations + case decl' of + [] + | allow -> + split ("remove empty declaration", C.posOf r) cont' do + (C.CBlockDecl (C.CDecl rec decl' ni') :) <$> cont' + | otherwise -> cont' + _ow -> (C.CBlockDecl (C.CDecl rec decl' ni') :) <$> cont' d -> don'tHandle d a -> don'tHandle a @@ -142,15 +188,6 @@ instance CReducible (C.CStatement C.NodeInfo) where pure $ C.CReturn Nothing ni a -> don'tHandle a -splitIf :: (MonadReduce l m) => Bool -> l -> m a -> m a -> m a -splitIf True s a b = split s a b -splitIf False _ _ b = b - -splitOn :: (MonadReduce l m, MonadReader Context m) => Keyword -> l -> m a -> m a -> m a -splitOn k s a b = do - con <- keyword k - splitIf con s a b - -- C.CCompound is cbi ni -> do -- cbi' <- collect (reduce @C.CCompoundBlockItem) cbi -- pure $ C.CCompound is cbi' ni @@ -214,8 +251,10 @@ instance CReducible C.CExpr where elhs' <- reduceC elhs erhs' <- reduceC erhs pure $ C.CBinary o elhs' erhs' ni - C.CVar i ni -> do - pure $ C.CVar i ni + C.CVar i _ -> do + asks (Map.lookup i . inlineExprs) >>= \case + Just mx -> pure mx + Nothing -> fail ("Could not find " <> show i) C.CConst x -> do pure $ C.CConst x C.CUnary o elhs ni -> do @@ -264,6 +303,15 @@ instance CReducible C.CExpr where -- where -- onBothExpr elhs erhs = onBoth (reduce elhs) (reduce erhs) +splitIf :: (MonadReduce l m) => Bool -> l -> m a -> m a -> m a +splitIf True s a b = split s a b +splitIf False _ _ b = b + +splitOn :: (MonadReduce l m, MonadReader Context m) => Keyword -> l -> m a -> m a -> m a +splitOn k s a b = do + con <- keyword k + splitIf con s a b + inlineTypeDefs :: forall d m. (Data d, MonadFail m, MonadReader Context m) => d -> m d inlineTypeDefs r = do case eqT @d @[C.CDeclarationSpecifier C.NodeInfo] of diff --git a/rtree-c/test/cases/constant.c b/rtree-c/test/cases/constant.c new file mode 100644 index 0000000..1c591ba --- /dev/null +++ b/rtree-c/test/cases/constant.c @@ -0,0 +1,6 @@ +int x = 10; + +int main () { + int y = 25; + return x + y; +} diff --git a/rtree-c/test/expected/constant/main.c b/rtree-c/test/expected/constant/main.c new file mode 100644 index 0000000..2d97bcf --- /dev/null +++ b/rtree-c/test/expected/constant/main.c @@ -0,0 +1,6 @@ +int x = 10; +int main() +{ + int y = 25; + return x + y; +} diff --git a/rtree-c/test/expected/constant/reduction/r000.c b/rtree-c/test/expected/constant/reduction/r000.c new file mode 100644 index 0000000..2d97bcf --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r000.c @@ -0,0 +1,6 @@ +int x = 10; +int main() +{ + int y = 25; + return x + y; +} diff --git a/rtree-c/test/expected/constant/reduction/r000.choices b/rtree-c/test/expected/constant/reduction/r000.choices new file mode 100644 index 0000000..805d1e4 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r000.choices @@ -0,0 +1,3 @@ +0 remove statement at ("test/cases/constant.c": line 5) +0 inline variable y at ("test/cases/constant.c": line 4) +0 inline variable x at ("test/cases/constant.c": line 1) diff --git a/rtree-c/test/expected/constant/reduction/r001.c b/rtree-c/test/expected/constant/reduction/r001.c new file mode 100644 index 0000000..ce017c7 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r001.c @@ -0,0 +1,5 @@ +int x = 10; +int main() +{ + int y = 25; +} diff --git a/rtree-c/test/expected/constant/reduction/r001.choices b/rtree-c/test/expected/constant/reduction/r001.choices new file mode 100644 index 0000000..ac41d35 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r001.choices @@ -0,0 +1,3 @@ +1 remove statement at ("test/cases/constant.c": line 5) +0 inline variable y at ("test/cases/constant.c": line 4) +0 inline variable x at ("test/cases/constant.c": line 1) diff --git a/rtree-c/test/expected/constant/reduction/r010.c b/rtree-c/test/expected/constant/reduction/r010.c new file mode 100644 index 0000000..c9d30b9 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r010.c @@ -0,0 +1,5 @@ +int x = 10; +int main() +{ + return x + 25; +} diff --git a/rtree-c/test/expected/constant/reduction/r010.choices b/rtree-c/test/expected/constant/reduction/r010.choices new file mode 100644 index 0000000..f19a549 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r010.choices @@ -0,0 +1,3 @@ +0 remove statement at ("test/cases/constant.c": line 5) +1 inline variable y at ("test/cases/constant.c": line 4) +0 inline variable x at ("test/cases/constant.c": line 1) diff --git a/rtree-c/test/expected/while-loops/reduction/r1.c b/rtree-c/test/expected/constant/reduction/r011.c similarity index 50% rename from rtree-c/test/expected/while-loops/reduction/r1.c rename to rtree-c/test/expected/constant/reduction/r011.c index 28c5719..78bfe21 100644 --- a/rtree-c/test/expected/while-loops/reduction/r1.c +++ b/rtree-c/test/expected/constant/reduction/r011.c @@ -1,4 +1,4 @@ +int x = 10; int main() { - int i = 0; } diff --git a/rtree-c/test/expected/constant/reduction/r011.choices b/rtree-c/test/expected/constant/reduction/r011.choices new file mode 100644 index 0000000..22358a3 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r011.choices @@ -0,0 +1,3 @@ +1 remove statement at ("test/cases/constant.c": line 5) +1 inline variable y at ("test/cases/constant.c": line 4) +0 inline variable x at ("test/cases/constant.c": line 1) diff --git a/rtree-c/test/expected/constant/reduction/r100.c b/rtree-c/test/expected/constant/reduction/r100.c new file mode 100644 index 0000000..1c93710 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r100.c @@ -0,0 +1,5 @@ +int main() +{ + int y = 25; + return 10 + y; +} diff --git a/rtree-c/test/expected/constant/reduction/r100.choices b/rtree-c/test/expected/constant/reduction/r100.choices new file mode 100644 index 0000000..2bc5629 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r100.choices @@ -0,0 +1,3 @@ +0 remove statement at ("test/cases/constant.c": line 5) +0 inline variable y at ("test/cases/constant.c": line 4) +1 inline variable x at ("test/cases/constant.c": line 1) diff --git a/rtree-c/test/expected/constant/reduction/r101.c b/rtree-c/test/expected/constant/reduction/r101.c new file mode 100644 index 0000000..b673765 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r101.c @@ -0,0 +1,4 @@ +int main() +{ + int y = 25; +} diff --git a/rtree-c/test/expected/constant/reduction/r101.choices b/rtree-c/test/expected/constant/reduction/r101.choices new file mode 100644 index 0000000..e49e1e4 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r101.choices @@ -0,0 +1,3 @@ +1 remove statement at ("test/cases/constant.c": line 5) +0 inline variable y at ("test/cases/constant.c": line 4) +1 inline variable x at ("test/cases/constant.c": line 1) diff --git a/rtree-c/test/expected/constant/reduction/r110.c b/rtree-c/test/expected/constant/reduction/r110.c new file mode 100644 index 0000000..fd039c7 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r110.c @@ -0,0 +1,4 @@ +int main() +{ + return 10 + 25; +} diff --git a/rtree-c/test/expected/constant/reduction/r110.choices b/rtree-c/test/expected/constant/reduction/r110.choices new file mode 100644 index 0000000..f84f675 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r110.choices @@ -0,0 +1,3 @@ +0 remove statement at ("test/cases/constant.c": line 5) +1 inline variable y at ("test/cases/constant.c": line 4) +1 inline variable x at ("test/cases/constant.c": line 1) diff --git a/rtree-c/test/expected/constant/reduction/r111.c b/rtree-c/test/expected/constant/reduction/r111.c new file mode 100644 index 0000000..5047a34 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r111.c @@ -0,0 +1,3 @@ +int main() +{ +} diff --git a/rtree-c/test/expected/constant/reduction/r111.choices b/rtree-c/test/expected/constant/reduction/r111.choices new file mode 100644 index 0000000..e0fb7c2 --- /dev/null +++ b/rtree-c/test/expected/constant/reduction/r111.choices @@ -0,0 +1,3 @@ +1 remove statement at ("test/cases/constant.c": line 5) +1 inline variable y at ("test/cases/constant.c": line 4) +1 inline variable x at ("test/cases/constant.c": line 1) diff --git a/rtree-c/test/expected/typedef/reduction/r000.c b/rtree-c/test/expected/typedef/reduction/r0000.c similarity index 100% rename from rtree-c/test/expected/typedef/reduction/r000.c rename to rtree-c/test/expected/typedef/reduction/r0000.c diff --git a/rtree-c/test/expected/typedef/reduction/r000.choices b/rtree-c/test/expected/typedef/reduction/r0000.choices similarity index 75% rename from rtree-c/test/expected/typedef/reduction/r000.choices rename to rtree-c/test/expected/typedef/reduction/r0000.choices index b281d1c..fa1b06c 100644 --- a/rtree-c/test/expected/typedef/reduction/r000.choices +++ b/rtree-c/test/expected/typedef/reduction/r0000.choices @@ -1,3 +1,4 @@ 0 remove statement at ("test/cases/typedef.c": line 9) +0 inline variable x at ("test/cases/typedef.c": line 8) 0 remove function f at ("test/cases/typedef.c": line 4) 0 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r001.c b/rtree-c/test/expected/typedef/reduction/r0001.c similarity index 100% rename from rtree-c/test/expected/typedef/reduction/r001.c rename to rtree-c/test/expected/typedef/reduction/r0001.c diff --git a/rtree-c/test/expected/typedef/reduction/r001.choices b/rtree-c/test/expected/typedef/reduction/r0001.choices similarity index 75% rename from rtree-c/test/expected/typedef/reduction/r001.choices rename to rtree-c/test/expected/typedef/reduction/r0001.choices index a44e5d5..9c6d7a2 100644 --- a/rtree-c/test/expected/typedef/reduction/r001.choices +++ b/rtree-c/test/expected/typedef/reduction/r0001.choices @@ -1,3 +1,4 @@ 1 remove statement at ("test/cases/typedef.c": line 9) +0 inline variable x at ("test/cases/typedef.c": line 8) 0 remove function f at ("test/cases/typedef.c": line 4) 0 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r0010.c b/rtree-c/test/expected/typedef/reduction/r0010.c new file mode 100644 index 0000000..d13fa76 --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r0010.c @@ -0,0 +1,8 @@ +typedef int uint64; +void f(uint64 a) +{ +} +int main() +{ + return 1; +} diff --git a/rtree-c/test/expected/typedef/reduction/r0010.choices b/rtree-c/test/expected/typedef/reduction/r0010.choices new file mode 100644 index 0000000..986dac1 --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r0010.choices @@ -0,0 +1,4 @@ +0 remove statement at ("test/cases/typedef.c": line 9) +1 inline variable x at ("test/cases/typedef.c": line 8) +0 remove function f at ("test/cases/typedef.c": line 4) +0 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r0011.c b/rtree-c/test/expected/typedef/reduction/r0011.c new file mode 100644 index 0000000..1ce0a1b --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r0011.c @@ -0,0 +1,7 @@ +typedef int uint64; +void f(uint64 a) +{ +} +int main() +{ +} diff --git a/rtree-c/test/expected/typedef/reduction/r0011.choices b/rtree-c/test/expected/typedef/reduction/r0011.choices new file mode 100644 index 0000000..81989ef --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r0011.choices @@ -0,0 +1,4 @@ +1 remove statement at ("test/cases/typedef.c": line 9) +1 inline variable x at ("test/cases/typedef.c": line 8) +0 remove function f at ("test/cases/typedef.c": line 4) +0 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r010.c b/rtree-c/test/expected/typedef/reduction/r0100.c similarity index 100% rename from rtree-c/test/expected/typedef/reduction/r010.c rename to rtree-c/test/expected/typedef/reduction/r0100.c diff --git a/rtree-c/test/expected/typedef/reduction/r010.choices b/rtree-c/test/expected/typedef/reduction/r0100.choices similarity index 75% rename from rtree-c/test/expected/typedef/reduction/r010.choices rename to rtree-c/test/expected/typedef/reduction/r0100.choices index dbaeb2c..145e4f8 100644 --- a/rtree-c/test/expected/typedef/reduction/r010.choices +++ b/rtree-c/test/expected/typedef/reduction/r0100.choices @@ -1,3 +1,4 @@ 0 remove statement at ("test/cases/typedef.c": line 9) +0 inline variable x at ("test/cases/typedef.c": line 8) 1 remove function f at ("test/cases/typedef.c": line 4) 0 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r011.c b/rtree-c/test/expected/typedef/reduction/r0101.c similarity index 100% rename from rtree-c/test/expected/typedef/reduction/r011.c rename to rtree-c/test/expected/typedef/reduction/r0101.c diff --git a/rtree-c/test/expected/typedef/reduction/r011.choices b/rtree-c/test/expected/typedef/reduction/r0101.choices similarity index 75% rename from rtree-c/test/expected/typedef/reduction/r011.choices rename to rtree-c/test/expected/typedef/reduction/r0101.choices index 92fc7ae..0bda8fb 100644 --- a/rtree-c/test/expected/typedef/reduction/r011.choices +++ b/rtree-c/test/expected/typedef/reduction/r0101.choices @@ -1,3 +1,4 @@ 1 remove statement at ("test/cases/typedef.c": line 9) +0 inline variable x at ("test/cases/typedef.c": line 8) 1 remove function f at ("test/cases/typedef.c": line 4) 0 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r0110.c b/rtree-c/test/expected/typedef/reduction/r0110.c new file mode 100644 index 0000000..239f38d --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r0110.c @@ -0,0 +1,5 @@ +typedef int uint64; +int main() +{ + return 1; +} diff --git a/rtree-c/test/expected/typedef/reduction/r0110.choices b/rtree-c/test/expected/typedef/reduction/r0110.choices new file mode 100644 index 0000000..8f09241 --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r0110.choices @@ -0,0 +1,4 @@ +0 remove statement at ("test/cases/typedef.c": line 9) +1 inline variable x at ("test/cases/typedef.c": line 8) +1 remove function f at ("test/cases/typedef.c": line 4) +0 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r0111.c b/rtree-c/test/expected/typedef/reduction/r0111.c new file mode 100644 index 0000000..17825b9 --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r0111.c @@ -0,0 +1,4 @@ +typedef int uint64; +int main() +{ +} diff --git a/rtree-c/test/expected/typedef/reduction/r0111.choices b/rtree-c/test/expected/typedef/reduction/r0111.choices new file mode 100644 index 0000000..291f387 --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r0111.choices @@ -0,0 +1,4 @@ +1 remove statement at ("test/cases/typedef.c": line 9) +1 inline variable x at ("test/cases/typedef.c": line 8) +1 remove function f at ("test/cases/typedef.c": line 4) +0 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r100.c b/rtree-c/test/expected/typedef/reduction/r1000.c similarity index 100% rename from rtree-c/test/expected/typedef/reduction/r100.c rename to rtree-c/test/expected/typedef/reduction/r1000.c diff --git a/rtree-c/test/expected/typedef/reduction/r100.choices b/rtree-c/test/expected/typedef/reduction/r1000.choices similarity index 75% rename from rtree-c/test/expected/typedef/reduction/r100.choices rename to rtree-c/test/expected/typedef/reduction/r1000.choices index 48c32e1..a7a7a50 100644 --- a/rtree-c/test/expected/typedef/reduction/r100.choices +++ b/rtree-c/test/expected/typedef/reduction/r1000.choices @@ -1,3 +1,4 @@ 0 remove statement at ("test/cases/typedef.c": line 9) +0 inline variable x at ("test/cases/typedef.c": line 8) 0 remove function f at ("test/cases/typedef.c": line 4) 1 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r101.c b/rtree-c/test/expected/typedef/reduction/r1001.c similarity index 100% rename from rtree-c/test/expected/typedef/reduction/r101.c rename to rtree-c/test/expected/typedef/reduction/r1001.c diff --git a/rtree-c/test/expected/typedef/reduction/r101.choices b/rtree-c/test/expected/typedef/reduction/r1001.choices similarity index 75% rename from rtree-c/test/expected/typedef/reduction/r101.choices rename to rtree-c/test/expected/typedef/reduction/r1001.choices index 76ba083..d8280cc 100644 --- a/rtree-c/test/expected/typedef/reduction/r101.choices +++ b/rtree-c/test/expected/typedef/reduction/r1001.choices @@ -1,3 +1,4 @@ 1 remove statement at ("test/cases/typedef.c": line 9) +0 inline variable x at ("test/cases/typedef.c": line 8) 0 remove function f at ("test/cases/typedef.c": line 4) 1 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r1010.c b/rtree-c/test/expected/typedef/reduction/r1010.c new file mode 100644 index 0000000..e11fc7d --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r1010.c @@ -0,0 +1,7 @@ +void f(int a) +{ +} +int main() +{ + return 1; +} diff --git a/rtree-c/test/expected/typedef/reduction/r1010.choices b/rtree-c/test/expected/typedef/reduction/r1010.choices new file mode 100644 index 0000000..4b158a3 --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r1010.choices @@ -0,0 +1,4 @@ +0 remove statement at ("test/cases/typedef.c": line 9) +1 inline variable x at ("test/cases/typedef.c": line 8) +0 remove function f at ("test/cases/typedef.c": line 4) +1 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r1011.c b/rtree-c/test/expected/typedef/reduction/r1011.c new file mode 100644 index 0000000..3fa6be1 --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r1011.c @@ -0,0 +1,6 @@ +void f(int a) +{ +} +int main() +{ +} diff --git a/rtree-c/test/expected/typedef/reduction/r1011.choices b/rtree-c/test/expected/typedef/reduction/r1011.choices new file mode 100644 index 0000000..76cb6f2 --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r1011.choices @@ -0,0 +1,4 @@ +1 remove statement at ("test/cases/typedef.c": line 9) +1 inline variable x at ("test/cases/typedef.c": line 8) +0 remove function f at ("test/cases/typedef.c": line 4) +1 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r110.c b/rtree-c/test/expected/typedef/reduction/r1100.c similarity index 100% rename from rtree-c/test/expected/typedef/reduction/r110.c rename to rtree-c/test/expected/typedef/reduction/r1100.c diff --git a/rtree-c/test/expected/typedef/reduction/r110.choices b/rtree-c/test/expected/typedef/reduction/r1100.choices similarity index 75% rename from rtree-c/test/expected/typedef/reduction/r110.choices rename to rtree-c/test/expected/typedef/reduction/r1100.choices index e70ee97..9ee0fbd 100644 --- a/rtree-c/test/expected/typedef/reduction/r110.choices +++ b/rtree-c/test/expected/typedef/reduction/r1100.choices @@ -1,3 +1,4 @@ 0 remove statement at ("test/cases/typedef.c": line 9) +0 inline variable x at ("test/cases/typedef.c": line 8) 1 remove function f at ("test/cases/typedef.c": line 4) 1 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r111.c b/rtree-c/test/expected/typedef/reduction/r1101.c similarity index 100% rename from rtree-c/test/expected/typedef/reduction/r111.c rename to rtree-c/test/expected/typedef/reduction/r1101.c diff --git a/rtree-c/test/expected/typedef/reduction/r111.choices b/rtree-c/test/expected/typedef/reduction/r1101.choices similarity index 75% rename from rtree-c/test/expected/typedef/reduction/r111.choices rename to rtree-c/test/expected/typedef/reduction/r1101.choices index bceac89..1e5ebac 100644 --- a/rtree-c/test/expected/typedef/reduction/r111.choices +++ b/rtree-c/test/expected/typedef/reduction/r1101.choices @@ -1,3 +1,4 @@ 1 remove statement at ("test/cases/typedef.c": line 9) +0 inline variable x at ("test/cases/typedef.c": line 8) 1 remove function f at ("test/cases/typedef.c": line 4) 1 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r1110.c b/rtree-c/test/expected/typedef/reduction/r1110.c new file mode 100644 index 0000000..2227c3a --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r1110.c @@ -0,0 +1,4 @@ +int main() +{ + return 1; +} diff --git a/rtree-c/test/expected/typedef/reduction/r1110.choices b/rtree-c/test/expected/typedef/reduction/r1110.choices new file mode 100644 index 0000000..2b83126 --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r1110.choices @@ -0,0 +1,4 @@ +0 remove statement at ("test/cases/typedef.c": line 9) +1 inline variable x at ("test/cases/typedef.c": line 8) +1 remove function f at ("test/cases/typedef.c": line 4) +1 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/typedef/reduction/r1111.c b/rtree-c/test/expected/typedef/reduction/r1111.c new file mode 100644 index 0000000..5047a34 --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r1111.c @@ -0,0 +1,3 @@ +int main() +{ +} diff --git a/rtree-c/test/expected/typedef/reduction/r1111.choices b/rtree-c/test/expected/typedef/reduction/r1111.choices new file mode 100644 index 0000000..6c02b12 --- /dev/null +++ b/rtree-c/test/expected/typedef/reduction/r1111.choices @@ -0,0 +1,4 @@ +1 remove statement at ("test/cases/typedef.c": line 9) +1 inline variable x at ("test/cases/typedef.c": line 8) +1 remove function f at ("test/cases/typedef.c": line 4) +1 inline typedef uint64 at ("test/cases/typedef.c": line 2) diff --git a/rtree-c/test/expected/while-loops/reduction/r00.c b/rtree-c/test/expected/while-loops/reduction/r000.c similarity index 100% rename from rtree-c/test/expected/while-loops/reduction/r00.c rename to rtree-c/test/expected/while-loops/reduction/r000.c diff --git a/rtree-c/test/expected/while-loops/reduction/r00.choices b/rtree-c/test/expected/while-loops/reduction/r000.choices similarity index 66% rename from rtree-c/test/expected/while-loops/reduction/r00.choices rename to rtree-c/test/expected/while-loops/reduction/r000.choices index 4fee46c..7712d43 100644 --- a/rtree-c/test/expected/while-loops/reduction/r00.choices +++ b/rtree-c/test/expected/while-loops/reduction/r000.choices @@ -1,2 +1,3 @@ 0 remove statement at ("test/cases/while-loops.c": line 4) 0 remove statement at ("test/cases/while-loops.c": line 3) +0 inline variable i at ("test/cases/while-loops.c": line 2) diff --git a/rtree-c/test/expected/while-loops/reduction/r001.c b/rtree-c/test/expected/while-loops/reduction/r001.c new file mode 100644 index 0000000..714143b --- /dev/null +++ b/rtree-c/test/expected/while-loops/reduction/r001.c @@ -0,0 +1,7 @@ +int main() +{ + int i = 0; + while (i < 10) + { + } +} diff --git a/rtree-c/test/expected/while-loops/reduction/r001.choices b/rtree-c/test/expected/while-loops/reduction/r001.choices new file mode 100644 index 0000000..f04eb97 --- /dev/null +++ b/rtree-c/test/expected/while-loops/reduction/r001.choices @@ -0,0 +1,3 @@ +1 remove statement at ("test/cases/while-loops.c": line 4) +0 remove statement at ("test/cases/while-loops.c": line 3) +0 inline variable i at ("test/cases/while-loops.c": line 2) diff --git a/rtree-c/test/expected/while-loops/reduction/r01.c b/rtree-c/test/expected/while-loops/reduction/r01.c index 714143b..28c5719 100644 --- a/rtree-c/test/expected/while-loops/reduction/r01.c +++ b/rtree-c/test/expected/while-loops/reduction/r01.c @@ -1,7 +1,4 @@ int main() { int i = 0; - while (i < 10) - { - } } diff --git a/rtree-c/test/expected/while-loops/reduction/r01.choices b/rtree-c/test/expected/while-loops/reduction/r01.choices index 69ec6af..a891b77 100644 --- a/rtree-c/test/expected/while-loops/reduction/r01.choices +++ b/rtree-c/test/expected/while-loops/reduction/r01.choices @@ -1,2 +1,2 @@ -1 remove statement at ("test/cases/while-loops.c": line 4) -0 remove statement at ("test/cases/while-loops.c": line 3) +1 remove statement at ("test/cases/while-loops.c": line 3) +0 inline variable i at ("test/cases/while-loops.c": line 2) diff --git a/rtree-c/test/expected/while-loops/reduction/r1.choices b/rtree-c/test/expected/while-loops/reduction/r1.choices deleted file mode 100644 index efbb594..0000000 --- a/rtree-c/test/expected/while-loops/reduction/r1.choices +++ /dev/null @@ -1 +0,0 @@ -1 remove statement at ("test/cases/while-loops.c": line 3) diff --git a/rtree-c/test/expected/while-loops/reduction/r100.c b/rtree-c/test/expected/while-loops/reduction/r100.c new file mode 100644 index 0000000..45b4b7d --- /dev/null +++ b/rtree-c/test/expected/while-loops/reduction/r100.c @@ -0,0 +1,7 @@ +int main() +{ + while (0 < 10) + { + 0++; + } +} diff --git a/rtree-c/test/expected/while-loops/reduction/r100.choices b/rtree-c/test/expected/while-loops/reduction/r100.choices new file mode 100644 index 0000000..cdd24cf --- /dev/null +++ b/rtree-c/test/expected/while-loops/reduction/r100.choices @@ -0,0 +1,3 @@ +0 remove statement at ("test/cases/while-loops.c": line 4) +0 remove statement at ("test/cases/while-loops.c": line 3) +1 inline variable i at ("test/cases/while-loops.c": line 2) diff --git a/rtree-c/test/expected/while-loops/reduction/r101.c b/rtree-c/test/expected/while-loops/reduction/r101.c new file mode 100644 index 0000000..db783f8 --- /dev/null +++ b/rtree-c/test/expected/while-loops/reduction/r101.c @@ -0,0 +1,6 @@ +int main() +{ + while (0 < 10) + { + } +} diff --git a/rtree-c/test/expected/while-loops/reduction/r101.choices b/rtree-c/test/expected/while-loops/reduction/r101.choices new file mode 100644 index 0000000..c054f9b --- /dev/null +++ b/rtree-c/test/expected/while-loops/reduction/r101.choices @@ -0,0 +1,3 @@ +1 remove statement at ("test/cases/while-loops.c": line 4) +0 remove statement at ("test/cases/while-loops.c": line 3) +1 inline variable i at ("test/cases/while-loops.c": line 2) diff --git a/rtree-c/test/expected/while-loops/reduction/r11.c b/rtree-c/test/expected/while-loops/reduction/r11.c new file mode 100644 index 0000000..5047a34 --- /dev/null +++ b/rtree-c/test/expected/while-loops/reduction/r11.c @@ -0,0 +1,3 @@ +int main() +{ +} diff --git a/rtree-c/test/expected/while-loops/reduction/r11.choices b/rtree-c/test/expected/while-loops/reduction/r11.choices new file mode 100644 index 0000000..7ad5e3f --- /dev/null +++ b/rtree-c/test/expected/while-loops/reduction/r11.choices @@ -0,0 +1,2 @@ +1 remove statement at ("test/cases/while-loops.c": line 3) +1 inline variable i at ("test/cases/while-loops.c": line 2) -- GitLab