You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The array-typed allocation indirect:%1 will be indexed by the getelementptr in get4 as if it were a pointer. However, our rules for deciding which array suballocations to create don't account for this kind of indexing:
In particular, pointer_index is separate from array_index, so array allocations don't have numbered suballocations at indices that are used to index into pointers. This is an issue for precision, because the GEP rules will produce points-to facts for the imprecise [*]-suballocation whereas they could in principle use suballocations at particular indices. The fix would be to add indices to array_index that correspond to pointer-indexing GEPs at a compatible type:
Consider this C program:
which produces this LLVM program:
The array-typed allocation
indirect:%1
will be indexed by thegetelementptr
inget4
as if it were a pointer. However, our rules for deciding which array suballocations to create don't account for this kind of indexing:cclyzerpp/datalog/points-to/allocations-subobjects.dl
Lines 51 to 121 in 2141e38
In particular,
pointer_index
is separate fromarray_index
, so array allocations don't have numbered suballocations at indices that are used to index into pointers. This is an issue for precision, because the GEP rules will produce points-to facts for the imprecise[*]
-suballocation whereas they could in principle use suballocations at particular indices. The fix would be to add indices toarray_index
that correspond to pointer-indexing GEPs at a compatible type:The text was updated successfully, but these errors were encountered: