@@ -12,16 +12,16 @@ module C-EXPR-ASSIGNMENT
1212 ~> write(Loc, V, T)
1313 ~> transferProv(Loc, tv(V, T))
1414 when notBool isRestrictType(T)
15- andBool (#fromArrayStatic(T) =/= K true)
15+ andBool (#fromArrayStatic(T' ) =/= K true)
1616 andBool (T == Type T')
1717 [structural ]
1818 rule nclv(Loc:SymLoc, T':Type) := tv(V:CValue, T:Type)
1919 => checkOverlap(stripProv(Loc), T)
20- ~> checkArrayStaticAssign(T, tv(V, T))
20+ ~> checkArrayStaticAssign(T' , tv(V, T))
2121 ~> write(Loc, V, T)
2222 ~> transferProv(Loc, tv(V, T))
2323 when notBool isRestrictType(T)
24- andBool (#fromArrayStatic(T) == K true)
24+ andBool (#fromArrayStatic(T' ) == K true)
2525 andBool (T == Type T')
2626 [structural ]
2727 rule nclv(Loc:SymLoc, T':Type) := tv(V:SymLoc, T:Type)
@@ -30,43 +30,44 @@ module C-EXPR-ASSIGNMENT
3030 ~> write(Loc, V, T)
3131 ~> transferProv(Loc, tv(V, T))
3232 when isRestrictType(T)
33+ andBool (#fromArrayStatic(T') =/= K true)
3334 andBool (T == Type T')
3435 [structural ]
3536 rule nclv(Loc:SymLoc, T':Type) := tv(V:SymLoc, T:Type)
3637 => checkOverlap(stripProv(Loc), T)
37- ~> checkArrayStaticAssign(T, tv(V, T))
38+ ~> checkArrayStaticAssign(T' , tv(V, T))
3839 ~> checkRestrictAssign(getRestrictBlock(T), getRelevantTags(Loc, V))
3940 ~> write(Loc, V, T)
4041 ~> transferProv(Loc, tv(V, T))
4142 when isRestrictType(T)
42- andBool (#fromArrayStatic(T) == K true)
43+ andBool (#fromArrayStatic(T' ) == K true)
4344 andBool (T == Type T')
4445 [structural ]
4546
4647 syntax K ::= checkOverlap(SymLoc, Type)
4748 rule checkOverlap(_, T:Type) => .K
48- when notBool hasReadFromLoc (T)
49+ when notBool hasReadFrom (T)
4950 [structural ]
5051 rule checkOverlap(Loc:SymLoc, T:Type) => .K
51- when getReadFromLoc (T) == K Loc
52+ when getReadFrom (T) == K Loc
5253 [structural ]
5354 rule checkOverlap(Loc:SymLoc, T:Type) => .K
54- when notBool sameBase(getReadFromLoc (T), Loc)
55+ when notBool sameBase(getReadFrom (T), Loc)
5556 [structural ]
5657 rule checkOverlap(Loc:SymLoc, T:Type) => .K
57- when (getReadFromLoc (T) + bytes byteSizeofType(T)) <= bytes Loc
58+ when (getReadFrom (T) + bytes byteSizeofType(T)) <= bytes Loc
5859 [structural ]
5960 rule checkOverlap(Loc:SymLoc, T:Type) => .K
60- when (Loc + bytes byteSizeofType(T)) <= bytes getReadFromLoc (T)
61+ when (Loc + bytes byteSizeofType(T)) <= bytes getReadFrom (T)
6162 [structural ]
6263 rule (. => UNDEF("EEA1" ,
6364 "assignment from non-exactly-overlapping overlapping read." ,
6465 "6.5.16.2" ))
6566 ~> checkOverlap(Loc:SymLoc, T:Type)
66- when sameBase(getReadFromLoc (T), Loc)
67- andBool (getReadFromLoc (T) =/= K Loc)
68- andBool (((getReadFromLoc (T) + bytes byteSizeofType(T)) > bytes Loc)
69- orBool ((Loc + bytes byteSizeofType(T)) > bytes getReadFromLoc (T)))
67+ when sameBase(getReadFrom (T), Loc)
68+ andBool (getReadFrom (T) =/= K Loc)
69+ andBool (((getReadFrom (T) + bytes byteSizeofType(T)) > bytes Loc)
70+ orBool ((Loc + bytes byteSizeofType(T)) > bytes getReadFrom (T)))
7071 [structural ]
7172
7273 syntax Set ::= getRelevantTags(SymLoc, SymLoc) [function]
0 commit comments