aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/StackProtector.cpp
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2025-07-22 15:40:55 +0100
committerGitHub <noreply@github.com>2025-07-22 15:40:55 +0100
commitc37942df00e0065c432099e041a04c4d4d148c3d (patch)
treec8e4b95d8302d336b76863d5da1de3c0ca747cd8 /llvm/lib/CodeGen/StackProtector.cpp
parenteaa67a3cf041009ae33a45159d0465262c3af5dc (diff)
downloadllvm-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