diff options
author | rustanleino <unknown> | 2009-10-14 00:48:23 +0000 |
---|---|---|
committer | rustanleino <unknown> | 2009-10-14 00:48:23 +0000 |
commit | 2e2622a8746e85b8b704ec70adfd35d730e25c19 (patch) | |
tree | cb8b9a6b9ff6d7dc09cc3513ed44fb42c62ffadb /Test/inline/test5.bpl | |
parent | 5c93063429bf61461a0319c42823da49780a21a2 (diff) |
Fixed bugs in inlining, and added a test case.
This solves issue 5742, as reported in the MSR Boogie Issue Tracker on Codeplex.
Diffstat (limited to 'Test/inline/test5.bpl')
-rw-r--r-- | Test/inline/test5.bpl | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Test/inline/test5.bpl b/Test/inline/test5.bpl index 0132f60a..629cb04c 100644 --- a/Test/inline/test5.bpl +++ b/Test/inline/test5.bpl @@ -18,3 +18,39 @@ procedure bar() assert x == 5;
}
+// -------------------------------------------------
+
+var Mem : [int]int;
+
+procedure {:inline 1} P(x:int)
+ modifies Mem;
+{
+ Mem[x] := 1;
+}
+
+procedure mainA()
+ modifies Mem;
+{
+ Mem[1] := 0;
+ call P(0);
+ call P(1);
+ assert Mem[1] == 0; // error
+}
+
+procedure mainB()
+ modifies Mem;
+{
+ Mem[1] := 0;
+ call P(0);
+ call P(1);
+ assert Mem[1] == 1; // good
+}
+
+procedure mainC()
+ modifies Mem;
+{
+ Mem[1] := 0;
+ call P(0);
+ call P(1);
+ assert Mem[1] == 1; // good
+}
|