diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2025-07-22 15:40:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-22 15:40:55 +0100 |
commit | c37942df00e0065c432099e041a04c4d4d148c3d (patch) | |
tree | c8e4b95d8302d336b76863d5da1de3c0ca747cd8 /llvm/lib/CodeGen/StackProtector.cpp | |
parent | eaa67a3cf041009ae33a45159d0465262c3af5dc (diff) | |
download | llvm-c37942df00e0065c432099e041a04c4d4d148c3d.zip llvm-c37942df00e0065c432099e041a04c4d4d148c3d.tar.gz llvm-c37942df00e0065c432099e041a04c4d4d148c3d.tar.bz2 |
[DAG] visitFREEZE - limit freezing of multiple operands (#149797)
This is a partial revert of #145939 (I've kept the BUILD_VECTOR(FREEZE(UNDEF), FREEZE(UNDEF), elt2, ...) canonicalization) as we're getting reports of infinite loops (#148084).
The issue appears to be due to deep chains of nodes and how visitFREEZE replaces all instances of an operand with a common frozen version - other users of the original frozen node then get added back to the worklist but might no longer be able to confirm a node isn't poison due to recursion depth limits on isGuaranteedNotToBeUndefOrPoison.
The issue still exists with the old implementation but by only allowing a single frozen operand it helps prevent cases of interdependent frozen nodes.
I'm still working on supporting multiple operands as its critical for topological DAG handling but need to get a fix in for trunk and 21.x.
Fixes #148084
Diffstat (limited to 'llvm/lib/CodeGen/StackProtector.cpp')
0 files changed, 0 insertions, 0 deletions