diff options
author | qadeer <unknown> | 2013-08-15 12:38:35 -0700 |
---|---|---|
committer | qadeer <unknown> | 2013-08-15 12:38:35 -0700 |
commit | f1f3d32ba043c0468dd04dfcfa7ac02c3fa1876c (patch) | |
tree | 3cb903196262d0094c01d4db28f2e0c12edae1f9 /Source/Core/Inline.cs | |
parent | 1ab4adb8ac3d6f5bd20801b2170c3f7bf00b8234 (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.cs | 21 |
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));
|