diff options
author | Alex Bradbury <asb@igalia.com> | 2025-02-02 18:05:13 +0000 |
---|---|---|
committer | Alex Bradbury <asb@igalia.com> | 2025-02-02 18:05:13 +0000 |
commit | 52c116218b61c088ac77f26c7b57347a5f54224d (patch) | |
tree | e8a2c1231e67553062af4b443b437482c49572b1 /llvm/lib/CodeGen/ReachingDefAnalysis.cpp | |
parent | a5e969a82b6ec9e799235897973f83ae4f1e4245 (diff) | |
download | llvm-52c116218b61c088ac77f26c7b57347a5f54224d.zip llvm-52c116218b61c088ac77f26c7b57347a5f54224d.tar.gz llvm-52c116218b61c088ac77f26c7b57347a5f54224d.tar.bz2 |
[RISCV][VLOPT] Clear DemandedVLs for each invocation of runOnMachineFunction
I was running into failed assertions of `isCandidate(UserMI)` in
`getMinimumVLForUser`, but only occurring with
`-enable-machine-outliner=never`. I believe this is a red herring, and
it just so happens the memory allocation pattern on my machine exposed
the bug with that flag.
DemandedVLs is never cleared, which means it accumulates more
MachineInstr pointer keys over time, and it's possible that when e.g.
running on function 'b', a MachineInstr pointer points to the same
memory location used for a candidate in 'a'. This causes the assertion
to fail.
Comment left on #124530 with more information.
Diffstat (limited to 'llvm/lib/CodeGen/ReachingDefAnalysis.cpp')
0 files changed, 0 insertions, 0 deletions