[PATCH] D49295: [MachineOutliner] Check the last instruction from the sequence when updating liveness
Francis Visoiu Mistrih via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 13 07:49:11 PDT 2018
thegameg created this revision.
thegameg added reviewers: jpaquette, RKSimon.
The MachineOutliner was doing an std::for_each from the call (inserted before the outlined sequence) to the iterator at the end of the sequence.
std::for_each needs the iterator past the end, so the last instruction was not taken into account when propagating the liveness information.
This fixes the machine verifier issue in machine-outliner-disubprogram.ll.
https://reviews.llvm.org/D49295
Files:
lib/CodeGen/MachineOutliner.cpp
test/CodeGen/X86/machine-outliner-disubprogram.ll
Index: test/CodeGen/X86/machine-outliner-disubprogram.ll
===================================================================
--- test/CodeGen/X86/machine-outliner-disubprogram.ll
+++ test/CodeGen/X86/machine-outliner-disubprogram.ll
@@ -2,7 +2,7 @@
; that we correctly emit DISubprograms for those functions.
; Also make sure that the DISubprograms reference the generated unit.
; make sure that if there are two outlined functions in the program,
-; RUN: llc %s -enable-machine-outliner -mtriple=x86_64-apple-darwin -o /dev/null -print-after=machine-outliner
+; RUN: llc %s -verify-machineinstrs -enable-machine-outliner -mtriple=x86_64-apple-darwin -o /dev/null -print-after=machine-outliner
define void @f6() #0 !dbg !8 {
entry:
%dog = alloca i32, align 4
Index: lib/CodeGen/MachineOutliner.cpp
===================================================================
--- lib/CodeGen/MachineOutliner.cpp
+++ lib/CodeGen/MachineOutliner.cpp
@@ -1309,7 +1309,7 @@
// First inst in outlined range <-- Anything that's defined in this
// ... .. range has to be added as an implicit
// Last inst in outlined range <-- def to the call instruction.
- std::for_each(CallInst, EndIt, CopyDefs);
+ std::for_each(CallInst, std::next(EndIt), CopyDefs);
}
// Erase from the point after where the call was inserted up to, and
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D49295.155385.patch
Type: text/x-patch
Size: 1388 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180713/e6d4a07e/attachment.bin>
More information about the llvm-commits
mailing list