karelklic / canal

Abstract interpreter for real-world application programs
https://github.com/karelklic/canal/wiki
Other
32 stars 2 forks source link

Replace ArrayInterface with instructions in Domains #140

Closed karelklic closed 11 years ago

karelklic commented 11 years ago

To enable the analysis of strings, we need to support the reduced product of array abstractions to be used in operations. Currently, this is not supported.

ArrayInterface is no longer useful when we have the reduced product. Reduced product and ArrayUtils should replace a part of its functionality.

We should add new instructions to Domains, replacing the array interface:

http://llvm.org/docs/LangRef.html#vectorops

karelklic commented 11 years ago

Currently, ArrayInterface methods were moved to Domain, so they can be reworked one after another.

karelklic commented 11 years ago

extractelement and insertelement are implemented and used

karelklic commented 11 years ago

extractvalue implemented and used

karelklic commented 11 years ago

insertvalue implemented and used

The last Domain::getItem method remains used in Pointer dereference. Reduced product requires implementation of the new array instructions.

karelklic commented 11 years ago

Reduced product now implements the new array instructions.

karelklic commented 11 years ago

Domain::load is now used in pointers to load elements.

Similar function is required for storing of elements and then we can get rid of Domain::getItem and have a reduced product of arrays.