From a1dabb4792446538cce24eb87bcd3ccb3c09f18b Mon Sep 17 00:00:00 2001 From: Xavier Leroy Date: Tue, 27 Sep 2022 12:31:07 +0200 Subject: Handle unstructured 'switch' statements such as Duff's device - New elaboration pass: SwitchNorm - recognizes structured 'switch' statements and puts them in a normalized form; - if selected, transforms unstructured 'switch' statements into a structured switch with goto actions + the original switch body with appropriate labels and gotos. - C2C treatment of 'switch' statements is simplified accordingly. - New language support option `-funstructured-switch`. - Some tests were added (test/regression/switch3.c). --- cparser/Unblock.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cparser/Unblock.ml') diff --git a/cparser/Unblock.ml b/cparser/Unblock.ml index 71d800c3..32e09399 100644 --- a/cparser/Unblock.ml +++ b/cparser/Unblock.ml @@ -300,7 +300,7 @@ let rec unblock_stmt env ctx ploc s = if s.sloc <> s1.sloc then add_lineno ctx ploc s.sloc (unblock_stmt env ctx s.sloc s1) else - unblock_stmt env cts ploc s1 in + unblock_stmt env ctx ploc s1 in {s with sdesc = Slabeled(lbl, s1')} | Sgoto lbl -> add_lineno ctx ploc s.sloc s -- cgit