summaryrefslogtreecommitdiff
path: root/Source/Core/Inline.cs
diff options
context:
space:
mode:
authorGravatar qadeer <unknown>2013-08-15 12:38:35 -0700
committerGravatar qadeer <unknown>2013-08-15 12:38:35 -0700
commitf1f3d32ba043c0468dd04dfcfa7ac02c3fa1876c (patch)
tree3cb903196262d0094c01d4db28f2e0c12edae1f9 /Source/Core/Inline.cs
parent1ab4adb8ac3d6f5bd20801b2170c3f7bf00b8234 (diff)
inlining is now done in rhs of assignments for codeexprs
added more regressions
Diffstat (limited to 'Source/Core/Inline.cs')
-rw-r--r--Source/Core/Inline.cs21
1 files changed, 21 insertions, 0 deletions
diff --git a/Source/Core/Inline.cs b/Source/Core/Inline.cs
index f3ac98a6..61b3a322 100644
--- a/Source/Core/Inline.cs
+++ b/Source/Core/Inline.cs
@@ -353,6 +353,27 @@ namespace Microsoft.Boogie {
newCmds.Add(codeCopier.CopyCmd(predCmd));
}
}
+ else if (cmd is AssignCmd)
+ {
+ AssignCmd assignCmd = (AssignCmd)cmd;
+ this.inlinedSomething = false;
+ List<Expr> newRhss = new List<Expr>();
+ foreach (Expr rhsExpr in assignCmd.Rhss)
+ {
+ newRhss.Add(this.VisitExpr(rhsExpr));
+ }
+ if (this.inlinedSomething)
+ {
+ inlinedSomething = true;
+ AssignCmd newAssignCmd = (AssignCmd)codeCopier.CopyCmd(assignCmd);
+ newAssignCmd.Rhss = newRhss;
+ newCmds.Add(newAssignCmd);
+ }
+ else
+ {
+ newCmds.Add(codeCopier.CopyCmd(assignCmd));
+ }
+ }
else
{
newCmds.Add(codeCopier.CopyCmd(cmd));