Index: lib/CodeGen/MIRParser/MIRParser.cpp =================================================================== --- lib/CodeGen/MIRParser/MIRParser.cpp +++ lib/CodeGen/MIRParser/MIRParser.cpp @@ -44,6 +44,11 @@ using namespace llvm; +static cl::opt +ForceTrackRegLiveness("force-mir-reg-liveness-tracking", cl::Hidden, + cl::desc("Force MIR Register Liveness Tracking."), + cl::init(false)); + namespace llvm { /// This class implements the parsing of LLVM IR that's embedded inside a MIR @@ -431,7 +436,7 @@ MachineFunction &MF = PFS.MF; MachineRegisterInfo &RegInfo = MF.getRegInfo(); assert(RegInfo.tracksLiveness()); - if (!YamlMF.TracksRegLiveness) + if (!YamlMF.TracksRegLiveness && !ForceTrackRegLiveness) RegInfo.invalidateLiveness(); SMDiagnostic Error; Index: test/CodeGen/MIR/X86/force-liveness-track.mir =================================================================== --- /dev/null +++ test/CodeGen/MIR/X86/force-liveness-track.mir @@ -0,0 +1,14 @@ +# RUN: llc -o - %s -mtriple=x86_64 -force-mir-reg-liveness-tracking=1 | FileCheck %s +--- +# CHECK: xorl %eax, %eax +# CHECK: movl %eax, (%rcx) +# CHECK: retq +name: func0 +tracksRegLiveness: false +body: | + bb.0: + %0 : gr32 = MOV32r0 implicit-def $eflags + dead %1 : gr32 = COPY %0 + MOV32mr undef $rcx, 1, _, 0, _, killed %0 :: (volatile store 4) + RETQ undef $eax +...