ipa/tree-ssa-alias.cc: Defend non-pointers in alias analysis
Adds checks in alias analysis to prevent operating on non-pointer SSA names.
The interprocedural analysis (IPA) pass, specifically within tree-ssa-alias.cc, had functions like ptr_deref_may_alias_global_p that could be called with SSA names representing non-pointer types. This could lead to incorrect behavior, such as accessing range information instead of pointer information. This commit adds guards to these functions to ensure they only operate on valid pointer SSA names, improving the robustness of alias analysis.
In Details
The interprocedural analysis (IPA) pass's alias analysis routines, particularly ptr_deref_may_alias_global_p and ptr_deref_may_alias_auto_p, are designed to reason about memory aliasing based on pointer dereferences. These functions were susceptible to being called with SSA names that do not represent pointers, but rather other types like integers or structures. This commit introduces checks to ensure that SSA_NAME_PTR_INFO is only accessed when the SSA name indeed corresponds to a pointer type, preventing potential crashes or incorrect alias analysis results.
- IPA
- Interprocedural Analysis. A type of program analysis that examines the entire program, rather than just a single function, to identify optimization opportunities.
- alias analysis
- A program analysis technique that determines which memory references might refer to the same location. This is crucial for many optimizations.
- SSA
- Static Single Assignment. An intermediate representation form where every variable is assigned a value exactly once, simplifying many analyses and optimizations.
- SSA_NAME_PTR_INFO
- A specific field or macro within GCC's SSA representation that holds information about pointer types and their properties.
- tree-ssa-alias.cc
- A source file in GCC that implements alias analysis routines within the SSA (Static Single Assignment) intermediate representation.