diff options
author | Sergei Barannikov <barannikov88@gmail.com> | 2024-11-19 13:29:58 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-19 13:29:58 +0300 |
commit | 6f53ae6e613f5f7011c1752b94038114f4e1cc94 (patch) | |
tree | 99303efa287a887443c51460a81ce0191c135af8 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 61726add1b03a13906bd618a784d040a182e5968 (diff) | |
download | llvm-6f53ae6e613f5f7011c1752b94038114f4e1cc94.zip llvm-6f53ae6e613f5f7011c1752b94038114f4e1cc94.tar.gz llvm-6f53ae6e613f5f7011c1752b94038114f4e1cc94.tar.bz2 |
[X86] Properly chain PROBED_ALLOCA / SEG_ALLOCA (#116508)
These nodes should appear between CALLSEQ_START / CALLSEQ_END.
Previously, they could be scheduled after CALLSEQ_END because the nodes
didn't update the chain.
The change in a test is due to X86 call frame optimizer pass bailing out
for a particular call when CALLSEQ_START / CALLSEQ_END are not in the
same basic block. This happens because SEG_ALLOCA is expanded into a
sequence of basic blocks early. It didn't bail out before because the
closing CALLSEQ_END was scheduled before SEG_ALLOCA, in the same basic
block as CALLSEQ_START.
While here, simplify creation of these nodes: allocating a virtual
register and copying `Size` into it were unnecessary.
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions