iAI
iAI copied to clipboard
Add/implement isReachable()/pathsTo() for control flow
Is your feature request related to a problem? Please describe. I am writing a plugin to determine if a set of constant values can propagate to a certain function with a parameter that is tagged with an LLVM IR custom attribute. I want a way to check from the entry point (or really any function) if there is a path that function to the target function.
This will allow me to select a set of paths so that I can only propogate constants along the paths to the target function
Describe the solution you'd like Something that does this?
Describe alternatives you've considered Maybe a backward analysis to the entry points but still need paths to get there.
Additional context Example code
void crypt(int attribute((annotate("crypto_iv_size")) iv_size) { }
int main() { const int kIVSize = 8; crypt(kIVSize); }
If I understand your request right this functionality should already be present: run the analysis that propagates your values of interest and then use resultsAt() at the location of interest and check whether the returned set of data-flow fact contains the LLVM values of interest.
pathTo
functionalities that allow for path-sensitive data-flow analysis have been implemented. We will merge them to open-source PhASAR soon.