diff options
author | ManuelJBrito <59119670+ManuelJBrito@users.noreply.github.com> | 2024-07-12 11:17:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-12 11:17:45 +0100 |
commit | 5b0dba13a5632d944d1eac8b39f44f65ec524e86 (patch) | |
tree | a745365165d0344796b4a6d3161040a7854e1bdb /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 70f57d25743ca7230bcad3cae7e3072f0aded6f7 (diff) | |
download | llvm-5b0dba13a5632d944d1eac8b39f44f65ec524e86.zip llvm-5b0dba13a5632d944d1eac8b39f44f65ec524e86.tar.gz llvm-5b0dba13a5632d944d1eac8b39f44f65ec524e86.tar.bz2 |
[NewGVN] Fix caching for OpIsSafeForPhiOfOps (#98340)
The caching mechanism for 'OpIsSafeForPhiOfOps' is unsound. An operand
is deemed unsafe for PhiOfOps if it depends on a phi that resides in the
same block as the Phi block, i.e., where we are performing the PhiOfOps.
This is to avoid having to materialize the translated subexpressions. To
avoid redundant code walking, a cache is used to store these results.
Note, however, that since the safety is specific to the Phi block, we
cannot, in general, use the cached results for other blocks.
This patch addresses this by having a cache per block instead of a
single one for the entire function. closes #63335
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions