[llvm-dev] analyzePhysReg question
Smith, Kevin B via llvm-dev
llvm-dev at lists.llvm.org
Thu Dec 3 16:35:33 PST 2015
I am looking at results from analyzePhysReg, and am getting results a little different than I expected for x86.
The call to this is coming from this code in llvm::MachineBasicBlock::computeRegisterLiveness
1163 MachineOperandIteratorBase::PhysRegInfo Analysis =
1164 ConstMIOperands(I).analyzePhysReg(Reg, TRI);
The instruction I being analyzed is:
%BX<def> = MOV16rm %EDI, 2, %ECX, 0, %noreg; mem:LD2[%arrayidx98](tbaa=!18)
and the Reg being passed in is 21, which is EBX. The result I get back for is:
Analysis: {Clobbers = true, Defines = true, Reads = false, ReadsOverlap = false,
DefinesDead = false, Kills = false}
It seems based on the comment in the definition of PhysRegInfo.Defines, that Defines should only be true if Reg or a super-register of Reg is
defined. BX is not a super-register of EBX, so it seemed like Defines should be false here, while Clobbers is correct as true.
I wanted to be sure that I wasn't missing something about the interface definition/expectation.
Thanks,
Kevin Smith
More information about the llvm-dev
mailing list