diff --git a/rtree-c/src/ReduceC.hs b/rtree-c/src/ReduceC.hs
index 3030de05a18410767682df7174190b38b8f5563f..ff0c6ee4be4b33e5f2a65eaf700cb232c39251c4 100644
--- a/rtree-c/src/ReduceC.hs
+++ b/rtree-c/src/ReduceC.hs
@@ -150,22 +150,22 @@ reduceCTranslUnit
   -> Context
   -> m (C.CTranslationUnit C.NodeInfo)
 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
 
 reduceCExternalDeclaration
   :: (MonadReduce Lab m)
   => C.CExternalDeclaration C.NodeInfo
-  -> (Context -> m [C.CExternalDeclaration C.NodeInfo])
+  -> (Context -> m [m (C.CExternalDeclaration C.NodeInfo)])
   -> Context
-  -> m [C.CExternalDeclaration C.NodeInfo]
+  -> m [m (C.CExternalDeclaration C.NodeInfo)]
 reduceCExternalDeclaration r cont ctx = do
   -- TODO This is slow
   case r of
     C.CFDefExt fun
       | KeepMain `isIn` ctx && maybe False (("main" ==) . C.identToString) (functionName fun) -> do
-          r' <- C.CFDefExt <$> reduceCFunDef fun ctx
-          (r' :) <$> cont ctx
+          ((C.CFDefExt <$> reduceCFunDef fun ctx) :) <$> cont ctx
       | otherwise ->
           case functionName fun of
             Just fid -> do
@@ -173,20 +173,17 @@ reduceCExternalDeclaration r cont ctx = do
                 ("remove function " <> C.identToString fid, C.posOf r)
                 (cont (addInlineExpr fid IEDelete ctx))
                 do
-                  r' <- C.CFDefExt <$> reduceCFunDef fun ctx
-                  (r' :) <$> cont (addInlineExpr fid IEKeep ctx)
+                  ((C.CFDefExt <$> reduceCFunDef fun ctx) :) <$> cont (addInlineExpr fid IEKeep ctx)
             Nothing -> do
               split
                 ("remove function", C.posOf r)
                 (cont ctx)
-                do
-                  r' <- C.CFDefExt <$> reduceCFunDef fun ctx
-                  (r' :) <$> cont ctx
+                (((C.CFDefExt <$> reduceCFunDef fun ctx) :) <$> cont ctx)
     C.CDeclExt decl -> do
       (decl', ctx') <- handleDecl decl ctx
-      cont ctx' <&> \a -> case decl' of
-        Just d -> C.CDeclExt d : a
-        Nothing -> a
+      case decl' of
+        Just d -> (pure (C.CDeclExt d) :) <$> cont ctx'
+        Nothing -> cont ctx'
     _r -> don'tHandle r
 
 data StructDef = StructDef
diff --git a/rtree-c/test/cases/small/functions.c b/rtree-c/test/cases/small/functions.c
index 3c013ec34e016342834b54171c4295b3e6571a48..5f485d40a99edc6743e5960a17eb3aa7c4a03145 100644
--- a/rtree-c/test/cases/small/functions.c
+++ b/rtree-c/test/cases/small/functions.c
@@ -1,7 +1,8 @@
 int f(int a) { 
+  a;
 }
 
-static int g(int a) { 
+int g(int a) { 
 }
 
 int main() { 
diff --git a/rtree-c/test/expected/functions/main.c b/rtree-c/test/expected/functions/main.c
index 6c27bbd02d8260eb244e8d03f368f91f36d7f0c3..e38289463c75a1d59f8d10155da308ecc57fa0c0 100644
--- a/rtree-c/test/expected/functions/main.c
+++ b/rtree-c/test/expected/functions/main.c
@@ -1,7 +1,8 @@
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000000000.c b/rtree-c/test/expected/functions/reduction/r000000000.c
index 22361ac67385064b5b6991b5344b712127e6db6b..ccb8a469bf2ac1a9dd51da1a21c21dd5814512b8 100644
--- a/rtree-c/test/expected/functions/reduction/r000000000.c
+++ b/rtree-c/test/expected/functions/reduction/r000000000.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000000001.c b/rtree-c/test/expected/functions/reduction/r000000001.c
index e8bed9f4565576d044470ec239467f4ebbef59bb..fb815f109a8b60d4b6a844fd0f5bb54820bf9170 100644
--- a/rtree-c/test/expected/functions/reduction/r000000001.c
+++ b/rtree-c/test/expected/functions/reduction/r000000001.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000000010.c b/rtree-c/test/expected/functions/reduction/r000000010.c
index 8777499947c8eea3ebf3cf8b431ecaa2f1862161..65bb961016fd80e3f8644744bac26545ed877257 100644
--- a/rtree-c/test/expected/functions/reduction/r000000010.c
+++ b/rtree-c/test/expected/functions/reduction/r000000010.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000000011.c b/rtree-c/test/expected/functions/reduction/r000000011.c
index bd8abb8d83285d8077d98aca863a919178a52b6e..9bd144f2fc1b45ae9e714948724b66c6e2e2eeab 100644
--- a/rtree-c/test/expected/functions/reduction/r000000011.c
+++ b/rtree-c/test/expected/functions/reduction/r000000011.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000000100.c b/rtree-c/test/expected/functions/reduction/r000000100.c
index 0b62277fb99504be3d60e1fdb920890252daf0dd..d4d0edb84c5cebaf1f01ec48e9e61c12e1999b1c 100644
--- a/rtree-c/test/expected/functions/reduction/r000000100.c
+++ b/rtree-c/test/expected/functions/reduction/r000000100.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000000101.c b/rtree-c/test/expected/functions/reduction/r000000101.c
index 839cae952e3f1a4ca58613d38c88461a1e72c360..159b2bbc774b5591b50784cb21f9db1a53374e79 100644
--- a/rtree-c/test/expected/functions/reduction/r000000101.c
+++ b/rtree-c/test/expected/functions/reduction/r000000101.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000000110.c b/rtree-c/test/expected/functions/reduction/r000000110.c
index 946e44bdbc40bd15ab9f43b798cbdacd7f46b0c0..af563b6445700a5db85415111cf2bda7761d34eb 100644
--- a/rtree-c/test/expected/functions/reduction/r000000110.c
+++ b/rtree-c/test/expected/functions/reduction/r000000110.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000000111.c b/rtree-c/test/expected/functions/reduction/r000000111.c
index 87badda79a9eac8bfbc4fda222ce80116646e88a..350ddfc958c366f795d2d1a2b22b4dcf69279420 100644
--- a/rtree-c/test/expected/functions/reduction/r000000111.c
+++ b/rtree-c/test/expected/functions/reduction/r000000111.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r0000010.c b/rtree-c/test/expected/functions/reduction/r0000010.c
index fef82a23a1161d1f82030d34dae531da6908065c..fea6cde54447385c2bc3df103833523ec5ae7773 100644
--- a/rtree-c/test/expected/functions/reduction/r0000010.c
+++ b/rtree-c/test/expected/functions/reduction/r0000010.c
@@ -1,15 +1,16 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r0000011.c b/rtree-c/test/expected/functions/reduction/r0000011.c
index 97c1f820a855ada000b4d41f77fab862324fcb8e..1ef696ace315a66581e706de84e59ddfa21e11b4 100644
--- a/rtree-c/test/expected/functions/reduction/r0000011.c
+++ b/rtree-c/test/expected/functions/reduction/r0000011.c
@@ -1,15 +1,16 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000010000.c b/rtree-c/test/expected/functions/reduction/r000010000.c
index 8df0263ede44ba95ab31e1031f6c3f724e1bf5b0..ff51eaf784cb4b9f886172f1060940100d41334d 100644
--- a/rtree-c/test/expected/functions/reduction/r000010000.c
+++ b/rtree-c/test/expected/functions/reduction/r000010000.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000010001.c b/rtree-c/test/expected/functions/reduction/r000010001.c
index f83642cb172ba045e8bf4d76981e8f5579a5f02f..7fe5ca7b7a07f650a09d918a785fc8acc2247fd0 100644
--- a/rtree-c/test/expected/functions/reduction/r000010001.c
+++ b/rtree-c/test/expected/functions/reduction/r000010001.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000010010.c b/rtree-c/test/expected/functions/reduction/r000010010.c
index efb0502a69137bbf1d30f1d1c3d87d5157757059..737c4b1ff06813b583bcf93496fa8d2ffc552929 100644
--- a/rtree-c/test/expected/functions/reduction/r000010010.c
+++ b/rtree-c/test/expected/functions/reduction/r000010010.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000010011.c b/rtree-c/test/expected/functions/reduction/r000010011.c
index ab439fa337faaa2d474cc07acd939eb97cddf1cf..34d75a7d8d4bcfe646cd8cc947744adada84b779 100644
--- a/rtree-c/test/expected/functions/reduction/r000010011.c
+++ b/rtree-c/test/expected/functions/reduction/r000010011.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000010100.c b/rtree-c/test/expected/functions/reduction/r000010100.c
index c47fce7f5758690420eab4ee0d248efa32648e0a..9c0e7af01f47af897a3c6d956037f8f91cdf11db 100644
--- a/rtree-c/test/expected/functions/reduction/r000010100.c
+++ b/rtree-c/test/expected/functions/reduction/r000010100.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000010101.c b/rtree-c/test/expected/functions/reduction/r000010101.c
index 4fa1e07f26ad2e39f886d9116b67f74c1269f6de..25559adb07e56a87692aa341bd169387bd886d76 100644
--- a/rtree-c/test/expected/functions/reduction/r000010101.c
+++ b/rtree-c/test/expected/functions/reduction/r000010101.c
@@ -1,17 +1,18 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r00001011.c b/rtree-c/test/expected/functions/reduction/r00001011.c
index a86552b0eb7627163be6aabe12083db784ce110b..e7d9902083ce7ec2ae3b85ef104a64eec3ef3d3b 100644
--- a/rtree-c/test/expected/functions/reduction/r00001011.c
+++ b/rtree-c/test/expected/functions/reduction/r00001011.c
@@ -1,16 +1,17 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r000011.c b/rtree-c/test/expected/functions/reduction/r000011.c
index eef7a252ae707abacc89cc501dc9bc549f38b86b..370b30fb4768a81925650f483c0d4c90e75c631c 100644
--- a/rtree-c/test/expected/functions/reduction/r000011.c
+++ b/rtree-c/test/expected/functions/reduction/r000011.c
@@ -1,14 +1,15 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r0001.c b/rtree-c/test/expected/functions/reduction/r0001.c
index 872dd58c3146f2c1e5a6846adc69e8eead3f7fb7..4d52ddbbfe114b4fc44c11461ed37c0e7eba4b56 100644
--- a/rtree-c/test/expected/functions/reduction/r0001.c
+++ b/rtree-c/test/expected/functions/reduction/r0001.c
@@ -1,12 +1,13 @@
 // 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 static at ("test/cases/small/functions.c": line 4)
-// 1 remove statement at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 1 remove statement at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r001000000.c b/rtree-c/test/expected/functions/reduction/r001000000.c
index e234a1cb422ae5373a88b7a04b1bf8f4dacd26fe..f5ce516f2ee755dd4ec33b11d9923c73c584562c 100644
--- a/rtree-c/test/expected/functions/reduction/r001000000.c
+++ b/rtree-c/test/expected/functions/reduction/r001000000.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001000001.c b/rtree-c/test/expected/functions/reduction/r001000001.c
index 25bfbd6deececa4ed1f6e03f50a48ab8e7acc978..fd77d83d0239fd111d07ad136e31290c78704c20 100644
--- a/rtree-c/test/expected/functions/reduction/r001000001.c
+++ b/rtree-c/test/expected/functions/reduction/r001000001.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001000010.c b/rtree-c/test/expected/functions/reduction/r001000010.c
index 1781459d75a1e8747040ff8a88c1e23962acbf5b..077c6ec86bc3c35eea13808e27e4b1a641ba8c6a 100644
--- a/rtree-c/test/expected/functions/reduction/r001000010.c
+++ b/rtree-c/test/expected/functions/reduction/r001000010.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001000011.c b/rtree-c/test/expected/functions/reduction/r001000011.c
index 85f74589cb3357dbb1a9d2140e67716d377bf266..8d6b9850bcbcd7b490381c1dd43c17e155a877fd 100644
--- a/rtree-c/test/expected/functions/reduction/r001000011.c
+++ b/rtree-c/test/expected/functions/reduction/r001000011.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001000100.c b/rtree-c/test/expected/functions/reduction/r001000100.c
index 87b10da7c80297d8168b0be4a49918e300452de4..9d9b8f45c04dffecd1e02de119569b192c65dfad 100644
--- a/rtree-c/test/expected/functions/reduction/r001000100.c
+++ b/rtree-c/test/expected/functions/reduction/r001000100.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001000101.c b/rtree-c/test/expected/functions/reduction/r001000101.c
index 51cf2fae5de7f14fec7a5b79b2cbf908f60007ce..f6a57924174dca39cdf34fc216fad5dacdefc510 100644
--- a/rtree-c/test/expected/functions/reduction/r001000101.c
+++ b/rtree-c/test/expected/functions/reduction/r001000101.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001000110.c b/rtree-c/test/expected/functions/reduction/r001000110.c
index 857ff4870fd820d017dcd26014138696a6417522..5c723544395385e82a8498a922f84accdcd4120e 100644
--- a/rtree-c/test/expected/functions/reduction/r001000110.c
+++ b/rtree-c/test/expected/functions/reduction/r001000110.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001000111.c b/rtree-c/test/expected/functions/reduction/r001000111.c
index 930630c1888d6dd444bed85174fd386ffb36db2b..ba391590189e8d6e736a4fe7aa8ecf67a0915b0d 100644
--- a/rtree-c/test/expected/functions/reduction/r001000111.c
+++ b/rtree-c/test/expected/functions/reduction/r001000111.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r0010010.c b/rtree-c/test/expected/functions/reduction/r0010010.c
index 062718694952659503cb0be7b17c1f8c20083380..5432d1d4225bb87d4a06e9bce608610876d41482 100644
--- a/rtree-c/test/expected/functions/reduction/r0010010.c
+++ b/rtree-c/test/expected/functions/reduction/r0010010.c
@@ -1,10 +1,10 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r0010011.c b/rtree-c/test/expected/functions/reduction/r0010011.c
index b87f01eacdc4ce0c38f71c8971833dc6ef2503d5..72f391c0080c56bbdd00cfe7e576c1076e13fb7a 100644
--- a/rtree-c/test/expected/functions/reduction/r0010011.c
+++ b/rtree-c/test/expected/functions/reduction/r0010011.c
@@ -1,10 +1,10 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001010000.c b/rtree-c/test/expected/functions/reduction/r001010000.c
index 1cf9c7c913ea50ea018eca67e58fb29d8275983c..acef64dd69fd715718336e09d574fef330a5aa88 100644
--- a/rtree-c/test/expected/functions/reduction/r001010000.c
+++ b/rtree-c/test/expected/functions/reduction/r001010000.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001010001.c b/rtree-c/test/expected/functions/reduction/r001010001.c
index 24bf2638a48426e29605de379a54d0b9a2b3cdfc..64288987ef5a6ab5620569ef6adbdab681ff90fc 100644
--- a/rtree-c/test/expected/functions/reduction/r001010001.c
+++ b/rtree-c/test/expected/functions/reduction/r001010001.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001010010.c b/rtree-c/test/expected/functions/reduction/r001010010.c
index 45e46993c13c879cbd8cbba722fc566df388a504..2c3f95f55b167aae8c84733b13580a3e836a2c2f 100644
--- a/rtree-c/test/expected/functions/reduction/r001010010.c
+++ b/rtree-c/test/expected/functions/reduction/r001010010.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001010011.c b/rtree-c/test/expected/functions/reduction/r001010011.c
index 06fe706e07d20e733ca29a59e32dffcf56e873ea..0b06a6155dd75f65de5f92f287b7ccc82e5e8041 100644
--- a/rtree-c/test/expected/functions/reduction/r001010011.c
+++ b/rtree-c/test/expected/functions/reduction/r001010011.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001010100.c b/rtree-c/test/expected/functions/reduction/r001010100.c
index 1c3a30090825cac98500a8795ca2733ffc6b2407..074191480d6030f4559c0d9970e1173aff5f1a6a 100644
--- a/rtree-c/test/expected/functions/reduction/r001010100.c
+++ b/rtree-c/test/expected/functions/reduction/r001010100.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001010101.c b/rtree-c/test/expected/functions/reduction/r001010101.c
index 904d845907d7ecaadfb11de947041962d1b198aa..8a33be27b91883a22b7466d47eab7f0e5d61de3f 100644
--- a/rtree-c/test/expected/functions/reduction/r001010101.c
+++ b/rtree-c/test/expected/functions/reduction/r001010101.c
@@ -1,12 +1,12 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r00101011.c b/rtree-c/test/expected/functions/reduction/r00101011.c
index c151f8024117653eea73f5daa60d7a95f8fe26a9..a2c0aa07a3eb291b600ade9af2606b618cad3899 100644
--- a/rtree-c/test/expected/functions/reduction/r00101011.c
+++ b/rtree-c/test/expected/functions/reduction/r00101011.c
@@ -1,11 +1,11 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r001011.c b/rtree-c/test/expected/functions/reduction/r001011.c
index 1c3989bc5442983349ad70a4028e815a8fc8341a..0b9e2ef28296f43a260ac1f0327df0c1cfc96c35 100644
--- a/rtree-c/test/expected/functions/reduction/r001011.c
+++ b/rtree-c/test/expected/functions/reduction/r001011.c
@@ -1,9 +1,9 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r0011.c b/rtree-c/test/expected/functions/reduction/r0011.c
index 13e0025b955bbc0411fbbdcafcc35b91a2c24133..68a96b5f10c37524c3cccc81a2c00f34113c8c8e 100644
--- a/rtree-c/test/expected/functions/reduction/r0011.c
+++ b/rtree-c/test/expected/functions/reduction/r0011.c
@@ -1,7 +1,7 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 1 remove statement at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 1 remove statement at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r010000.c b/rtree-c/test/expected/functions/reduction/r010000.c
deleted file mode 100644
index 5ea9bc45bb00bd9f73979bbff19ba943f50da9d3..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r010000.c
+++ /dev/null
@@ -1,14 +0,0 @@
-// 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 1 remove function g at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
-
-int f(int a)
-{
-}
-int main()
-{
-    return f(42);
-}
diff --git a/rtree-c/test/expected/functions/reduction/r0100000.c b/rtree-c/test/expected/functions/reduction/r0100000.c
new file mode 100644
index 0000000000000000000000000000000000000000..daa74ae944863aaa2fe1a7df3694990d6284a060
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0100000.c
@@ -0,0 +1,16 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+    a;
+}
+int main()
+{
+    return f(42);
+}
diff --git a/rtree-c/test/expected/functions/reduction/r0100001.c b/rtree-c/test/expected/functions/reduction/r0100001.c
new file mode 100644
index 0000000000000000000000000000000000000000..69deddec96c4098a24766e5c9d9282e01d6b3652
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0100001.c
@@ -0,0 +1,16 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+    a;
+}
+int main()
+{
+    return 0;
+}
diff --git a/rtree-c/test/expected/functions/reduction/r010001.c b/rtree-c/test/expected/functions/reduction/r010001.c
deleted file mode 100644
index f85193e6f5c628401da7accdf63d2029626c44fd..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r010001.c
+++ /dev/null
@@ -1,14 +0,0 @@
-// 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 1 remove function g at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
-
-int f(int a)
-{
-}
-int main()
-{
-    return 0;
-}
diff --git a/rtree-c/test/expected/functions/reduction/r0100010.c b/rtree-c/test/expected/functions/reduction/r0100010.c
new file mode 100644
index 0000000000000000000000000000000000000000..29583895a419d047d868113c88b9c7a1bb70ab52
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0100010.c
@@ -0,0 +1,16 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+    a;
+}
+int main()
+{
+    return f(0);
+}
diff --git a/rtree-c/test/expected/functions/reduction/r0100011.c b/rtree-c/test/expected/functions/reduction/r0100011.c
new file mode 100644
index 0000000000000000000000000000000000000000..e5faf17099d23b2e1b28ad7702b7739e1d10a201
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0100011.c
@@ -0,0 +1,16 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+    a;
+}
+int main()
+{
+    return 0;
+}
diff --git a/rtree-c/test/expected/functions/reduction/r010010.c b/rtree-c/test/expected/functions/reduction/r010010.c
deleted file mode 100644
index fb40908dc2eef825036c1234fbf8a87eae9326b9..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r010010.c
+++ /dev/null
@@ -1,14 +0,0 @@
-// 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 1 remove function g at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
-
-int f(int a)
-{
-}
-int main()
-{
-    return f(0);
-}
diff --git a/rtree-c/test/expected/functions/reduction/r0100100.c b/rtree-c/test/expected/functions/reduction/r0100100.c
new file mode 100644
index 0000000000000000000000000000000000000000..e013cd2d9cce4682b9d44f7792c183b6033b63c3
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0100100.c
@@ -0,0 +1,16 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+    a;
+}
+int main()
+{
+    return 42;
+}
diff --git a/rtree-c/test/expected/functions/reduction/r0100101.c b/rtree-c/test/expected/functions/reduction/r0100101.c
new file mode 100644
index 0000000000000000000000000000000000000000..370ffd082f40f4653494beb542918ed725f6aec9
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0100101.c
@@ -0,0 +1,16 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+    a;
+}
+int main()
+{
+    return 0;
+}
diff --git a/rtree-c/test/expected/functions/reduction/r010011.c b/rtree-c/test/expected/functions/reduction/r010011.c
index e03e6302b4f3ceb0218c68b3fda9c050e31e1360..ec2cdf924a7cdcb3ef8adb13fa1c12cd0781efa9 100644
--- a/rtree-c/test/expected/functions/reduction/r010011.c
+++ b/rtree-c/test/expected/functions/reduction/r010011.c
@@ -1,12 +1,13 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 1 remove function g at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
+    a;
 }
 int main()
 {
diff --git a/rtree-c/test/expected/functions/reduction/r0101.c b/rtree-c/test/expected/functions/reduction/r0101.c
new file mode 100644
index 0000000000000000000000000000000000000000..1e2eb20f8e331a970bd3ded53682e4be374bb339
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0101.c
@@ -0,0 +1,12 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 2)
+// 1 remove statement at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+    a;
+}
+int main()
+{
+}
diff --git a/rtree-c/test/expected/functions/reduction/r010100.c b/rtree-c/test/expected/functions/reduction/r010100.c
deleted file mode 100644
index 022a557c1d2ff5085bfaeea8da5f363bdf304eea..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r010100.c
+++ /dev/null
@@ -1,14 +0,0 @@
-// 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 1 remove function g at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
-
-int f(int a)
-{
-}
-int main()
-{
-    return 42;
-}
diff --git a/rtree-c/test/expected/functions/reduction/r01011.c b/rtree-c/test/expected/functions/reduction/r01011.c
deleted file mode 100644
index 9b8bb5e5be1a11d6ac79214c65202d7ad5385fbc..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r01011.c
+++ /dev/null
@@ -1,13 +0,0 @@
-// 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 1 remove function g at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-
-int f(int a)
-{
-}
-int main()
-{
-    return 0;
-}
diff --git a/rtree-c/test/expected/functions/reduction/r0110000.c b/rtree-c/test/expected/functions/reduction/r0110000.c
new file mode 100644
index 0000000000000000000000000000000000000000..eed60866711a5d9977145820e161b06263e58bdc
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0110000.c
@@ -0,0 +1,15 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+}
+int main()
+{
+    return f(42);
+}
diff --git a/rtree-c/test/expected/functions/reduction/r0110001.c b/rtree-c/test/expected/functions/reduction/r0110001.c
new file mode 100644
index 0000000000000000000000000000000000000000..32f89d15d075eaba0dd15f0ff4c2b3c3faf5dcd9
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0110001.c
@@ -0,0 +1,15 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+}
+int main()
+{
+    return 0;
+}
diff --git a/rtree-c/test/expected/functions/reduction/r0110010.c b/rtree-c/test/expected/functions/reduction/r0110010.c
new file mode 100644
index 0000000000000000000000000000000000000000..60885b647cacdecebc2a6c76b664e41c6ed33490
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0110010.c
@@ -0,0 +1,15 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+}
+int main()
+{
+    return f(0);
+}
diff --git a/rtree-c/test/expected/functions/reduction/r0110011.c b/rtree-c/test/expected/functions/reduction/r0110011.c
new file mode 100644
index 0000000000000000000000000000000000000000..b80173d6405ef848d774787dc894d1af18629a9f
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0110011.c
@@ -0,0 +1,15 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+}
+int main()
+{
+    return 0;
+}
diff --git a/rtree-c/test/expected/functions/reduction/r0110100.c b/rtree-c/test/expected/functions/reduction/r0110100.c
new file mode 100644
index 0000000000000000000000000000000000000000..261a6b9ee092e3589a42358c3885b4044617b681
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0110100.c
@@ -0,0 +1,15 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+}
+int main()
+{
+    return 42;
+}
diff --git a/rtree-c/test/expected/functions/reduction/r0110101.c b/rtree-c/test/expected/functions/reduction/r0110101.c
new file mode 100644
index 0000000000000000000000000000000000000000..31054fdd75dbff19c30ccbeb3099a61df4fdc2a1
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r0110101.c
@@ -0,0 +1,15 @@
+// 0 remove function f at ("test/cases/small/functions.c": line 1)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int f(int a)
+{
+}
+int main()
+{
+    return 0;
+}
diff --git a/rtree-c/test/expected/functions/reduction/r010101.c b/rtree-c/test/expected/functions/reduction/r011011.c
similarity index 54%
rename from rtree-c/test/expected/functions/reduction/r010101.c
rename to rtree-c/test/expected/functions/reduction/r011011.c
index 8ef81a4b9616a395d625450eb007c546cdb3c51f..bf7786e95f9d140ce6662568006671083ddc4cf7 100644
--- a/rtree-c/test/expected/functions/reduction/r010101.c
+++ b/rtree-c/test/expected/functions/reduction/r011011.c
@@ -1,9 +1,9 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 1 remove function g at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r011.c b/rtree-c/test/expected/functions/reduction/r0111.c
similarity index 55%
rename from rtree-c/test/expected/functions/reduction/r011.c
rename to rtree-c/test/expected/functions/reduction/r0111.c
index 39c73e754579909b844e0934a73216c944af3752..bc0c52fba79ecd889656d463b8d01b96221cf6d8 100644
--- a/rtree-c/test/expected/functions/reduction/r011.c
+++ b/rtree-c/test/expected/functions/reduction/r0111.c
@@ -1,6 +1,7 @@
 // 0 remove function f at ("test/cases/small/functions.c": line 1)
-// 1 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove statement at ("test/cases/small/functions.c": line 8)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 2)
+// 1 remove statement at ("test/cases/small/functions.c": line 9)
 
 int f(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r100000.c b/rtree-c/test/expected/functions/reduction/r100000.c
new file mode 100644
index 0000000000000000000000000000000000000000..921e971dbcae7b48184bb2881688d82c174d36d8
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r100000.c
@@ -0,0 +1,14 @@
+// 1 remove function f at ("test/cases/small/functions.c": line 1)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int g(int a)
+{
+}
+int main()
+{
+    return g(42);
+}
diff --git a/rtree-c/test/expected/functions/reduction/r1000000.c b/rtree-c/test/expected/functions/reduction/r1000000.c
deleted file mode 100644
index a9f70dca6426e26d7cc930314cfc69071bf904e5..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1000000.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// 1 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
-
-static int g(int a)
-{
-}
-int main()
-{
-    return g(42);
-}
diff --git a/rtree-c/test/expected/functions/reduction/r1000001.c b/rtree-c/test/expected/functions/reduction/r1000001.c
deleted file mode 100644
index cabb1bb7ac3cb80837954e3562eb5dda16f77c74..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1000001.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// 1 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
-
-static int g(int a)
-{
-}
-int main()
-{
-    return 0;
-}
diff --git a/rtree-c/test/expected/functions/reduction/r100001.c b/rtree-c/test/expected/functions/reduction/r100001.c
new file mode 100644
index 0000000000000000000000000000000000000000..2151a04955541edb3dc922a40cc72f4efff1ac90
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r100001.c
@@ -0,0 +1,14 @@
+// 1 remove function f at ("test/cases/small/functions.c": line 1)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int g(int a)
+{
+}
+int main()
+{
+    return 0;
+}
diff --git a/rtree-c/test/expected/functions/reduction/r1000010.c b/rtree-c/test/expected/functions/reduction/r1000010.c
deleted file mode 100644
index d629f15880f0721cc1fdeae9bfeff7b353b5453f..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1000010.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// 1 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
-
-static int g(int a)
-{
-}
-int main()
-{
-    return g(0);
-}
diff --git a/rtree-c/test/expected/functions/reduction/r1000011.c b/rtree-c/test/expected/functions/reduction/r1000011.c
deleted file mode 100644
index 210a171397022639f9f4c43d882b0a343a2ebcc5..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1000011.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// 1 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
-
-static int g(int a)
-{
-}
-int main()
-{
-    return 0;
-}
diff --git a/rtree-c/test/expected/functions/reduction/r100010.c b/rtree-c/test/expected/functions/reduction/r100010.c
new file mode 100644
index 0000000000000000000000000000000000000000..d110399761bdb152bab9596c9aae13ac6db0786f
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r100010.c
@@ -0,0 +1,14 @@
+// 1 remove function f at ("test/cases/small/functions.c": line 1)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int g(int a)
+{
+}
+int main()
+{
+    return g(0);
+}
diff --git a/rtree-c/test/expected/functions/reduction/r1000100.c b/rtree-c/test/expected/functions/reduction/r1000100.c
deleted file mode 100644
index 21d1c0c68f32454859b62a55f1015501b85dc1ec..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1000100.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// 1 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
-
-static int g(int a)
-{
-}
-int main()
-{
-    return 42;
-}
diff --git a/rtree-c/test/expected/functions/reduction/r1000101.c b/rtree-c/test/expected/functions/reduction/r1000101.c
deleted file mode 100644
index 652b3c91bb47d598223505e747b00c67859b7f00..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1000101.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// 1 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
-
-static int g(int a)
-{
-}
-int main()
-{
-    return 0;
-}
diff --git a/rtree-c/test/expected/functions/reduction/r100011.c b/rtree-c/test/expected/functions/reduction/r100011.c
index 25cdf8bf770fdd068fe1dfd0fcc4088645556643..14fc41292beec208aef364b8876c5e90ea02685d 100644
--- a/rtree-c/test/expected/functions/reduction/r100011.c
+++ b/rtree-c/test/expected/functions/reduction/r100011.c
@@ -1,11 +1,11 @@
 // 1 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 static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
-static int g(int a)
+int g(int a)
 {
 }
 int main()
diff --git a/rtree-c/test/expected/functions/reduction/r1001.c b/rtree-c/test/expected/functions/reduction/r1001.c
deleted file mode 100644
index 6f2ae79e3852a43a4f82ca2d82a8649184732320..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1001.c
+++ /dev/null
@@ -1,11 +0,0 @@
-// 1 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 static at ("test/cases/small/functions.c": line 4)
-// 1 remove statement at ("test/cases/small/functions.c": line 8)
-
-static int g(int a)
-{
-}
-int main()
-{
-}
diff --git a/rtree-c/test/expected/functions/reduction/r100100.c b/rtree-c/test/expected/functions/reduction/r100100.c
new file mode 100644
index 0000000000000000000000000000000000000000..fdd84d85c754aa50230ef9768cef76ea7e7e6367
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r100100.c
@@ -0,0 +1,14 @@
+// 1 remove function f at ("test/cases/small/functions.c": line 1)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int g(int a)
+{
+}
+int main()
+{
+    return 42;
+}
diff --git a/rtree-c/test/expected/functions/reduction/r100101.c b/rtree-c/test/expected/functions/reduction/r100101.c
new file mode 100644
index 0000000000000000000000000000000000000000..6e38ed42de5bcdcf59dd1fd2acd4bae9963fb6b8
--- /dev/null
+++ b/rtree-c/test/expected/functions/reduction/r100101.c
@@ -0,0 +1,14 @@
+// 1 remove function f at ("test/cases/small/functions.c": line 1)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 0 do without pram at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
+
+int g(int a)
+{
+}
+int main()
+{
+    return 0;
+}
diff --git a/rtree-c/test/expected/functions/reduction/r101011.c b/rtree-c/test/expected/functions/reduction/r10011.c
similarity index 55%
rename from rtree-c/test/expected/functions/reduction/r101011.c
rename to rtree-c/test/expected/functions/reduction/r10011.c
index b5c4c0f738470fe195ee5d6fa3feb6a3fb3b2a38..fea5e9e7f5a122f0671ae3c02441d182e16b8241 100644
--- a/rtree-c/test/expected/functions/reduction/r101011.c
+++ b/rtree-c/test/expected/functions/reduction/r10011.c
@@ -1,9 +1,8 @@
 // 1 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 do without function at ("test/cases/small/functions.c": line 9)
+// 1 do without pram at ("test/cases/small/functions.c": line 9)
 
 int g(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r1011.c b/rtree-c/test/expected/functions/reduction/r101.c
similarity index 56%
rename from rtree-c/test/expected/functions/reduction/r1011.c
rename to rtree-c/test/expected/functions/reduction/r101.c
index 5b4125cf57b3a27c3f101d8badd53e04e2038c37..3e3220c80d556851fc0facad4552d3ecdbc95be3 100644
--- a/rtree-c/test/expected/functions/reduction/r1011.c
+++ b/rtree-c/test/expected/functions/reduction/r101.c
@@ -1,7 +1,6 @@
 // 1 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 1 remove statement at ("test/cases/small/functions.c": line 8)
+// 0 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 9)
 
 int g(int a)
 {
diff --git a/rtree-c/test/expected/functions/reduction/r1010000.c b/rtree-c/test/expected/functions/reduction/r1010000.c
deleted file mode 100644
index 18ca7c03b2fbb829d7fdbd9f25d37ad7a47492a9..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1010000.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// 1 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
-
-int g(int a)
-{
-}
-int main()
-{
-    return g(42);
-}
diff --git a/rtree-c/test/expected/functions/reduction/r1010001.c b/rtree-c/test/expected/functions/reduction/r1010001.c
deleted file mode 100644
index 4e875f7c2c4d93b965c8913d8a1edd0262cf1769..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1010001.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// 1 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
-
-int g(int a)
-{
-}
-int main()
-{
-    return 0;
-}
diff --git a/rtree-c/test/expected/functions/reduction/r1010010.c b/rtree-c/test/expected/functions/reduction/r1010010.c
deleted file mode 100644
index efc759aab523a11315695cc93faf1361cd9244be..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1010010.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// 1 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
-
-int g(int a)
-{
-}
-int main()
-{
-    return g(0);
-}
diff --git a/rtree-c/test/expected/functions/reduction/r1010011.c b/rtree-c/test/expected/functions/reduction/r1010011.c
deleted file mode 100644
index 82fe6f2a7ef9a8f8118f2abf41b414f6ee14bb6d..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1010011.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// 1 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 do without function at ("test/cases/small/functions.c": line 8)
-// 1 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
-
-int g(int a)
-{
-}
-int main()
-{
-    return 0;
-}
diff --git a/rtree-c/test/expected/functions/reduction/r1010100.c b/rtree-c/test/expected/functions/reduction/r1010100.c
deleted file mode 100644
index 320c06f92dcd8d537de12bec507870c2832b0861..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1010100.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// 1 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
-
-int g(int a)
-{
-}
-int main()
-{
-    return 42;
-}
diff --git a/rtree-c/test/expected/functions/reduction/r1010101.c b/rtree-c/test/expected/functions/reduction/r1010101.c
deleted file mode 100644
index 6e5f74c92202eea1bc6c50902dfd7f0c2cd3c314..0000000000000000000000000000000000000000
--- a/rtree-c/test/expected/functions/reduction/r1010101.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// 1 remove function f at ("test/cases/small/functions.c": line 1)
-// 0 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove static at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 do without function at ("test/cases/small/functions.c": line 8)
-// 0 do without pram at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
-
-int g(int a)
-{
-}
-int main()
-{
-    return 0;
-}
diff --git a/rtree-c/test/expected/functions/reduction/r1100.c b/rtree-c/test/expected/functions/reduction/r1100.c
index 7ec41ba7d62d300562a2fe4d5e26d9da5fe5b154..69f54b8dd6f47de3c5fa55d86e66a203b5eadd60 100644
--- a/rtree-c/test/expected/functions/reduction/r1100.c
+++ b/rtree-c/test/expected/functions/reduction/r1100.c
@@ -1,7 +1,7 @@
 // 1 remove function f at ("test/cases/small/functions.c": line 1)
-// 1 remove function g at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 0 replace by zero at ("test/cases/small/functions.c": line 8)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 0 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int main()
 {
diff --git a/rtree-c/test/expected/functions/reduction/r1101.c b/rtree-c/test/expected/functions/reduction/r1101.c
index 0d8137fb548d09056c653441aaca3f3d6bc97fdf..637502e7014131a051ffe2685590cb362e920997 100644
--- a/rtree-c/test/expected/functions/reduction/r1101.c
+++ b/rtree-c/test/expected/functions/reduction/r1101.c
@@ -1,7 +1,7 @@
 // 1 remove function f at ("test/cases/small/functions.c": line 1)
-// 1 remove function g at ("test/cases/small/functions.c": line 4)
-// 0 remove statement at ("test/cases/small/functions.c": line 8)
-// 1 replace by zero at ("test/cases/small/functions.c": line 8)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 0 remove statement at ("test/cases/small/functions.c": line 9)
+// 1 replace by zero at ("test/cases/small/functions.c": line 9)
 
 int main()
 {
diff --git a/rtree-c/test/expected/functions/reduction/r111.c b/rtree-c/test/expected/functions/reduction/r111.c
index 168e38fcaa7c184d1b687e3856d60b89ea95f3e2..e242b8032ec60aa840ff38f95a2343a73fe06716 100644
--- a/rtree-c/test/expected/functions/reduction/r111.c
+++ b/rtree-c/test/expected/functions/reduction/r111.c
@@ -1,6 +1,6 @@
 // 1 remove function f at ("test/cases/small/functions.c": line 1)
-// 1 remove function g at ("test/cases/small/functions.c": line 4)
-// 1 remove statement at ("test/cases/small/functions.c": line 8)
+// 1 remove function g at ("test/cases/small/functions.c": line 5)
+// 1 remove statement at ("test/cases/small/functions.c": line 9)
 
 int main()
 {
diff --git a/rtree-c/test/src/ReduceCSpec.hs b/rtree-c/test/src/ReduceCSpec.hs
index 5a0497e7f64d842739e8f332c6d34a991a0bf8bf..5970c6a4ffa9965dd89cebd920a769c96909324e 100644
--- a/rtree-c/test/src/ReduceCSpec.hs
+++ b/rtree-c/test/src/ReduceCSpec.hs
@@ -24,7 +24,6 @@ import qualified Test.Hspec.Expectations.Pretty as EP
 import qualified Control.Monad.IRTree as IRTree
 import qualified Control.Monad.RTree as RTree
 import Data.Bits
-import Data.Bool
 import Data.Functor
 import Data.RPath
 import Data.String
@@ -71,9 +70,9 @@ specLargeCases = do
             createDirectoryIfMissing True a
             0 & fix \rec n -> do
               let idx = fromString (replicate (1 `shiftL` n) '1')
-              let (c', t) = IRTree.probe (defaultReduceC c) idx
+              let (c', t, _) = IRTree.probe (defaultReduceC c) idx
               render (expected </> "reduction" </> "x" <> show n <.> "c") c'
-              unless (all fst t) do
+              unless (all ((/= Undecided) . choice) t) do
                 rec (n + 1)
         )
         do
@@ -83,10 +82,11 @@ specLargeCases = do
 
 specSmallCases :: Spec
 specSmallCases = do
-  cases <- runIO (listDirectory "test/cases/small")
+  let testcases = "test" </> "cases" </> "small"
+  cases <- runIO (listDirectory testcases)
 
   forM_ cases \cname -> do
-    let cfrom = "test/cases/small" </> cname
+    let cfrom = testcases </> cname
 
     describe cfrom do
       c <- runIO $ parse cfrom
@@ -141,15 +141,15 @@ render cto c = do
   createDirectoryIfMissing True (takeDirectory cto)
   writeFile cto (P.render (C.pretty c) <> "\n")
 
-renderWithChoices :: FilePath -> (C.CTranslUnit, [(Bool, (String, C.Position))]) -> IO ()
-renderWithChoices file (c, a) = do
+renderWithChoices :: FilePath -> (C.CTranslUnit, [AnnotatedChoice (String, C.Position)], Int) -> IO ()
+renderWithChoices file (c, a, _) = do
   createDirectoryIfMissing True (takeDirectory file)
   writeFile
     file
     ( ( unlines
           . map
-            ( \(choice, (reason, pos)) ->
-                "// " <> bool "0" "1" choice <> " " <> reason <> " at " <> show pos
+            ( \(AnnotatedChoice cs (reason, pos)) ->
+                "// " <> [debugShowChoice cs] <> " " <> reason <> " at " <> show pos
             )
           $ a
       )