From f776d85bd5cbd3e3854fd69fbd33892335476366 Mon Sep 17 00:00:00 2001 From: Hernan Ponce de Leon Date: Sat, 27 Jul 2024 02:09:37 +0800 Subject: [PATCH 01/14] Initial commit --- .../program/processing/NormalizeLoops.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/NormalizeLoops.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/NormalizeLoops.java index 62e4b1ef18..f5cdfa8bba 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/NormalizeLoops.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/NormalizeLoops.java @@ -1,10 +1,15 @@ package com.dat3m.dartagnan.program.processing; +import com.dat3m.dartagnan.expression.ExpressionFactory; +import com.dat3m.dartagnan.expression.type.TypeFactory; import com.dat3m.dartagnan.program.Function; +import com.dat3m.dartagnan.program.Register; import com.dat3m.dartagnan.program.event.EventFactory; import com.dat3m.dartagnan.program.event.core.CondJump; import com.dat3m.dartagnan.program.event.core.Label; +import com.dat3m.dartagnan.program.event.core.Local; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -35,6 +40,9 @@ */ public class NormalizeLoops implements FunctionProcessor { + private final TypeFactory types = TypeFactory.getInstance(); + private final ExpressionFactory expressions = ExpressionFactory.getInstance(); + public static NormalizeLoops newInstance() { return new NormalizeLoops(); } @@ -68,6 +76,38 @@ public void run(Function function) { } counter++; + + // Guarantee header is the only fromOutside point + final Label loopBegin = label; + final CondJump uniqueBackJump = backJumps.get(0); + + final List