aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorSimon Tatham <simon.tatham@arm.com>2024-09-04 09:06:48 +0100
committerGitHub <noreply@github.com>2024-09-04 09:06:48 +0100
commitde37da8e37c4c9042563e186068adca98bf59e07 (patch)
tree237ff1453a757b9f3bff630a39d9d24ea8751def /flang/lib/Frontend/CompilerInvocation.cpp
parent4bccb01355edcfedacafede3e7878d74e2b0a28f (diff)
downloadllvm-de37da8e37c4c9042563e186068adca98bf59e07.zip
llvm-de37da8e37c4c9042563e186068adca98bf59e07.tar.gz
llvm-de37da8e37c4c9042563e186068adca98bf59e07.tar.bz2
[MachineOutliner] Preserve instruction bundles (#106402)
When the machine outliner copies instructions from a source function into an outlined function, it was doing it using `CloneMachineInstr`, which is documented as not preserving the interior of any instruction bundle. So outlining code that includes an instruction bundle would fail, because in the outlined version, the bundle would be empty, so instructions would go missing in the move. This occurs when any bundled instruction appears in the outlined code, so there was no need to construct an unusual test case: I've just copied a function from the existing `stp-opt-with-renaming.mir`, which happens to contain an SVE instruction bundle. Including two identical copies of that function makes the outliner merge them, and then we check that it didn't destroy the interior of the bundle in the process.
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions