|
From: Jeremy F. <je...@go...> - 2002-11-26 00:28:37
|
On Mon, 2002-11-25 at 15:57, Julian Seward wrote:
> > Which should be
> >
> > add %edx, %eax
> > adc %ecx, %ebx
> >
> > of course.
>
> Doesn't the mythical lazy-eflags-save/restore pass clean up this particular
> case?
Should do. Doesn't look that hard to implement either. I was vaguely
thinking of hanging a mechanism off VG_(new_emit), by adding "uses" and
"sets" flagset arguments to it, and have it manage flag saves and
restores. new_emit seemed like a nice place to hang it, since its
already being called in all the right places.
> Good icc handling is known to be difficult in dynamic translators. I think
> we can say we're running up against the limits of our local analysis. Most
> systems which do better (WABI, Daisy, surely others) translate groups of
> bbs at a time and track/optimise icc liveness across the whole group.
> Also, that would allow register allocation across the whole group. If I
> had another spare year and reimplemented the JIT from scratch I'd think about
> something like this. However, reality being what it is ...
Well, I think a longer term, but not completely impractical, approach is
the extended basic block idea. It gives us translation of multiple BBs
(including register allocation) more or less within our existing
infrastructure.
J
|