From 6f833d393e47dd13579b65c24df4c338c2fe979c Mon Sep 17 00:00:00 2001 From: Karoliine Holter Date: Wed, 19 Jun 2024 18:57:46 +0300 Subject: [PATCH 1/2] Remove restriction that no loop unrolling is done when breaks are in the loop --- src/util/loopUnrolling.ml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/util/loopUnrolling.ml b/src/util/loopUnrolling.ml index c883e121fc..6f4f22a5a3 100644 --- a/src/util/loopUnrolling.ml +++ b/src/util/loopUnrolling.ml @@ -45,20 +45,19 @@ class findBreakVisitor(compOption: exp option ref) = object method! vstmt stmt = match stmt.skind with | Block _ -> DoChildren - | Break _ -> raise WrongOrMultiple + | Break _ -> SkipChildren | If (cond, t, e, _, _) -> ( - checkNoBreakBlock t; match e.bstmts with | [s] -> ( match s.skind with | Break _ -> ( match !compOption with - | Some _ -> raise WrongOrMultiple (*more than one loop break*) + | Some _ -> SkipChildren (*more than one loop break*) | _ -> compOption := Some cond; SkipChildren ) - | _ -> checkNoBreakStmt stmt; SkipChildren + | _ -> SkipChildren ) - | _ -> checkNoBreakStmt stmt; SkipChildren + | _ -> SkipChildren ) | _ -> SkipChildren From e656cc1a0f21d52631a9af2b16cc077d07815612 Mon Sep 17 00:00:00 2001 From: Karoliine Holter Date: Wed, 19 Jun 2024 18:59:35 +0300 Subject: [PATCH 2/2] Remove unused checkNoBreak visitors --- src/util/loopUnrolling.ml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/util/loopUnrolling.ml b/src/util/loopUnrolling.ml index 6f4f22a5a3..2ad300f717 100644 --- a/src/util/loopUnrolling.ml +++ b/src/util/loopUnrolling.ml @@ -31,14 +31,6 @@ class checkNoBreakVisitor = object end -let checkNoBreakStmt stmt = - let visitor = new checkNoBreakVisitor in - ignore @@ visitCilStmt visitor stmt - -let checkNoBreakBlock block = - let visitor = new checkNoBreakVisitor in - ignore @@ visitCilBlock visitor block - class findBreakVisitor(compOption: exp option ref) = object inherit nopCilVisitor