Comments (2)
It wouldn't be sound.
The key is Figure 8 (https://jorgenavas.github.io/papers/sea-dsa-SAS17.pdf) that shows two aliasing patterns between callers and callee that cannot happen, otherwise inter-procedural Clam would be unsound:
- if two formal parameters in the callee alias then the corresponding two parameters cannot point to two disjoint regions.
- if two formal parameters in the callee do not alias then we cannot have a callsite where the two corresponding call parameters do alias.
The bottom-up pass avoids (1) and the top-down avoids (2). However, after we apply top-down we are modifying the aliasing patterns of a function. Therefore, we need to revisit all callees of that function. In the end, we need to revisit all callsites in the program until (1) and (2) cannot happen. Termination is ensured because at each bottom-up or top-down pass we merge at least two parameters and since the number is finite we end up in the worst case merging all parameters of all callsites and functions which would be similar to a context-insensitive analysis.
from clam.
Great, makes sense! Thanks Jorge
from clam.
Related Issues (20)
- Clam Error on LLVM IR translation to CrabIR
- Regression test error HOT 8
- Question about clam API compile error HOT 4
- Inconsistent number of warnings in clam
- Missing Warning HOT 1
- CMake Error: Clam/py/setup.py.in file missing HOT 2
- questions about LLVM versions HOT 2
- Inconsistent number of warnings in clam
- Error Encountered in Clam with Context-Sensitive Heap Analysis: Mismatch in Input Count HOT 1
- Clam missing a warning HOT 1
- Clam unexpectly reporting assertion failures HOT 1
- Compilation fails using llvm 14.0.6 HOT 1
- Crab giving an inconsistent number of warnings HOT 1
- Problem in the translation from LLVM to CrabIR HOT 1
- Clam missing a warning HOT 1
- Clam missing a warning about an unsafe assertion HOT 1
- Are there any artifacts or repositories that use clam to test SV-COMP benchmark? HOT 2
- No support for pk and oct domain analysis of master branch HOT 2
- Null-dereference in CFGBuilder HOT 1
- Accessing Datalayout when it changed on ClamQueryCache HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from clam.