<aside> 💡 Key Points
So far, all analyses we learnt are intraprocedural.
For better precision, we need Interprocedural analysis: propagate data-flow information along interprocedural control-flow edges
The concept “procedure” was used in old PL’s

To perform interprocedural analysis, we need call graph
A representation of calling relationships in the program
Essentially, a call graph is a set of call edges from call-sites to their target methods (callees)
Call graph is very important program information
←Top← More Efficient ↔ More Precise →Bottom→
| Static call | Special call | Virtual call | |
|---|---|---|---|
| Instruction | invokestatic |
invokespecial |
invokeinterface |
invokevirtual |
|||
| Receiver objects | No | Yes | Yes |
| Target methods | - Static methods | - Constructors |