Hi all,
I’m writing a MachineFunction pass that relies on the kill flag to be appropriately set on operands of Machine Instructions, but it isn’t. My pass runs before register allocation. What I’m seeing when I print an instruction is something like:
%vreg218 = FOO %vreg217, %vreg369
but what I need is:
%vreg218 = FOO %vreg217, %vreg369
On this same instruction, the kill flag is being set on vreg217 and vreg369 in preceding and succeeding passes, but not in my pass. Is there some analysis pass that I need to add as required in my pass’s “getAnalysisUsage” to get this flag to be set?
Thanks,
Stephen
Hi Stephen,
The kill flags are conservatively correct and not mandatory; if they are set, they are correct, if they are not, you cannot say anything.
Hi all,
I’m writing a MachineFunction pass that relies on the kill flag to be appropriately set on operands of Machine Instructions, but it isn’t. My pass runs before register allocation. What I’m seeing when I print an instruction is something like:
%vreg218 = FOO %vreg217, %vreg369
but what I need is:
%vreg218 = FOO %vreg217, %vreg369
On this same instruction, the kill flag is being set on vreg217 and vreg369 in preceding and succeeding passes, but not in my pass. Is there some analysis pass that I need to add as required in my pass’s “getAnalysisUsage” to get this flag to be set?
I would recommend to rely on the LiveInterval analysis.
Cheers,
-Quentin
Hi Quentin,
That’s unfortunate to hear. I’ll take a look into using the LiveInterval analysis for this.
Thanks for the advice,
Stephen