[llvm-commits] [patch] ARM liveness bug PR14356

Jakob Stoklund Olesen stoklund at 2pi.dk
Fri Nov 16 08:42:00 PST 2012


On Nov 16, 2012, at 4:22 AM, Tim Northover <t.p.northover at gmail.com> wrote:

> A bug has come up in the late liveness tracking implementation, which
> shows itself as an incorrect <imp-use> flag when switching execution
> domain for some ARM instructions.

Hi Tim,

Thanks for fixing this!

This function still doesn't look right to me. Suppose you're scanning upwards while computing the liveness of r0 and you encounter:

  r0<def> = foo r0<kill>

The computeRegisterLiveness() function would return LQR_Dead which is wrong. On the other hand, encountering this:

  r0<def,dead> = foo

would cause the function to return LQR_Live. Which is also wrong.

Another problem: PhysRegInfo has both Clobbers and DefinesOverlap fields which seems redundant. (And analyzePhysReg() never mentions DefinesOverlap).

/jakob





More information about the llvm-commits mailing list