Skip to content
Snippets Groups Projects
Commit 88d428ae authored by chrg's avatar chrg
Browse files

Try to remove functions first.

parent b1e72cbd
No related branches found
No related tags found
No related merge requests found
Showing
with 179 additions and 163 deletions
...@@ -150,22 +150,22 @@ reduceCTranslUnit ...@@ -150,22 +150,22 @@ reduceCTranslUnit
-> Context -> Context
-> m (C.CTranslationUnit C.NodeInfo) -> m (C.CTranslationUnit C.NodeInfo)
reduceCTranslUnit (C.CTranslUnit es ni) ctx = do reduceCTranslUnit (C.CTranslUnit es ni) ctx = do
es' <- foldr reduceCExternalDeclaration (\_ -> pure []) es ctx res' <- foldr reduceCExternalDeclaration (\_ -> pure []) es ctx
es' <- sequence res'
pure $ C.CTranslUnit es' ni pure $ C.CTranslUnit es' ni
reduceCExternalDeclaration reduceCExternalDeclaration
:: (MonadReduce Lab m) :: (MonadReduce Lab m)
=> C.CExternalDeclaration C.NodeInfo => C.CExternalDeclaration C.NodeInfo
-> (Context -> m [C.CExternalDeclaration C.NodeInfo]) -> (Context -> m [m (C.CExternalDeclaration C.NodeInfo)])
-> Context -> Context
-> m [C.CExternalDeclaration C.NodeInfo] -> m [m (C.CExternalDeclaration C.NodeInfo)]
reduceCExternalDeclaration r cont ctx = do reduceCExternalDeclaration r cont ctx = do
-- TODO This is slow -- TODO This is slow
case r of case r of
C.CFDefExt fun C.CFDefExt fun
| KeepMain `isIn` ctx && maybe False (("main" ==) . C.identToString) (functionName fun) -> do | KeepMain `isIn` ctx && maybe False (("main" ==) . C.identToString) (functionName fun) -> do
r' <- C.CFDefExt <$> reduceCFunDef fun ctx ((C.CFDefExt <$> reduceCFunDef fun ctx) :) <$> cont ctx
(r' :) <$> cont ctx
| otherwise -> | otherwise ->
case functionName fun of case functionName fun of
Just fid -> do Just fid -> do
...@@ -173,20 +173,17 @@ reduceCExternalDeclaration r cont ctx = do ...@@ -173,20 +173,17 @@ reduceCExternalDeclaration r cont ctx = do
("remove function " <> C.identToString fid, C.posOf r) ("remove function " <> C.identToString fid, C.posOf r)
(cont (addInlineExpr fid IEDelete ctx)) (cont (addInlineExpr fid IEDelete ctx))
do do
r' <- C.CFDefExt <$> reduceCFunDef fun ctx ((C.CFDefExt <$> reduceCFunDef fun ctx) :) <$> cont (addInlineExpr fid IEKeep ctx)
(r' :) <$> cont (addInlineExpr fid IEKeep ctx)
Nothing -> do Nothing -> do
split split
("remove function", C.posOf r) ("remove function", C.posOf r)
(cont ctx) (cont ctx)
do (((C.CFDefExt <$> reduceCFunDef fun ctx) :) <$> cont ctx)
r' <- C.CFDefExt <$> reduceCFunDef fun ctx
(r' :) <$> cont ctx
C.CDeclExt decl -> do C.CDeclExt decl -> do
(decl', ctx') <- handleDecl decl ctx (decl', ctx') <- handleDecl decl ctx
cont ctx' <&> \a -> case decl' of case decl' of
Just d -> C.CDeclExt d : a Just d -> (pure (C.CDeclExt d) :) <$> cont ctx'
Nothing -> a Nothing -> cont ctx'
_r -> don'tHandle r _r -> don'tHandle r
data StructDef = StructDef data StructDef = StructDef
......
int f(int a) { int f(int a) {
a;
} }
static int g(int a) { int g(int a) {
} }
int main() { int main() {
......
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 0 replace by zero at ("test/cases/small/functions.c": line 8) // 0 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 1 replace by zero at ("test/cases/small/functions.c": line 8) // 1 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 1 do without pram at ("test/cases/small/functions.c": line 8) // 1 do without pram at ("test/cases/small/functions.c": line 9)
// 0 replace by zero at ("test/cases/small/functions.c": line 8) // 0 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 1 do without pram at ("test/cases/small/functions.c": line 8) // 1 do without pram at ("test/cases/small/functions.c": line 9)
// 1 replace by zero at ("test/cases/small/functions.c": line 8) // 1 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 0 replace by zero at ("test/cases/small/functions.c": line 8) // 0 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 1 replace by zero at ("test/cases/small/functions.c": line 8) // 1 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 1 do without pram at ("test/cases/small/functions.c": line 8) // 1 do without pram at ("test/cases/small/functions.c": line 9)
// 0 replace by zero at ("test/cases/small/functions.c": line 8) // 0 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 1 do without pram at ("test/cases/small/functions.c": line 8) // 1 do without pram at ("test/cases/small/functions.c": line 9)
// 1 replace by zero at ("test/cases/small/functions.c": line 8) // 1 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 1 do without pram at ("test/cases/small/functions.c": line 8) // 1 do without pram at ("test/cases/small/functions.c": line 9)
// 0 replace by zero at ("test/cases/small/functions.c": line 8) // 0 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 1 do without pram at ("test/cases/small/functions.c": line 8) // 1 do without pram at ("test/cases/small/functions.c": line 9)
// 1 replace by zero at ("test/cases/small/functions.c": line 8) // 1 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 0 replace by zero at ("test/cases/small/functions.c": line 8) // 0 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 1 replace by zero at ("test/cases/small/functions.c": line 8) // 1 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 1 do without pram at ("test/cases/small/functions.c": line 8) // 1 do without pram at ("test/cases/small/functions.c": line 9)
// 0 replace by zero at ("test/cases/small/functions.c": line 8) // 0 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 0 do without function at ("test/cases/small/functions.c": line 8) // 0 do without function at ("test/cases/small/functions.c": line 9)
// 1 do without pram at ("test/cases/small/functions.c": line 8) // 1 do without pram at ("test/cases/small/functions.c": line 9)
// 1 replace by zero at ("test/cases/small/functions.c": line 8) // 1 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 0 replace by zero at ("test/cases/small/functions.c": line 8) // 0 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 1 replace by zero at ("test/cases/small/functions.c": line 8) // 1 replace by zero at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
// 0 remove function f at ("test/cases/small/functions.c": line 1) // 0 remove function f at ("test/cases/small/functions.c": line 1)
// 0 remove function g at ("test/cases/small/functions.c": line 4) // 0 remove function g at ("test/cases/small/functions.c": line 5)
// 0 remove static at ("test/cases/small/functions.c": line 4) // 0 remove statement at ("test/cases/small/functions.c": line 2)
// 0 remove statement at ("test/cases/small/functions.c": line 8) // 0 remove statement at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 0 do without pram at ("test/cases/small/functions.c": line 8) // 0 do without pram at ("test/cases/small/functions.c": line 9)
// 1 do without function at ("test/cases/small/functions.c": line 8) // 1 do without function at ("test/cases/small/functions.c": line 9)
// 1 do without pram at ("test/cases/small/functions.c": line 8) // 1 do without pram at ("test/cases/small/functions.c": line 9)
int f(int a) int f(int a)
{ {
a;
} }
static int g(int a) int g(int a)
{ {
} }
int main() int main()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment