diff options
author | Xavier Leroy <xavier.leroy@college-de-france.fr> | 2022-09-27 12:31:07 +0200 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@college-de-france.fr> | 2022-10-29 10:03:30 +0200 |
commit | a1dabb4792446538cce24eb87bcd3ccb3c09f18b (patch) | |
tree | b74523469addfab9db6afc5ced3564ce267da4d7 /cparser/Unblock.ml | |
parent | dfc6b66ec21e148d29b2a6e8b5d77873a0a47511 (diff) | |
download | compcert-a1dabb4792446538cce24eb87bcd3ccb3c09f18b.tar.gz compcert-a1dabb4792446538cce24eb87bcd3ccb3c09f18b.zip |
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).
Diffstat (limited to 'cparser/Unblock.ml')
-rw-r--r-- | cparser/Unblock.ml | 2 |
1 files changed, 1 insertions, 1 deletions
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 |