[llvm-dev] Jit: use @llvm.lifetime.end to optimize away stores to globals used as temporaries
Nat! via llvm-dev
llvm-dev at lists.llvm.org
Mon Feb 29 09:34:45 PST 2016
Tom Aernoudt via llvm-dev schrieb:
> Hi all,
>
> The 'tmp' state variable is only needed during execution of the function
> 'f'.
>
That's what you say, because you called it 'tmp' :), but the compiler
sees no difference to 'a' or 'b'. As soon as s->tmp would "escape" f()
the compiler will have to write it.
I think you may want to keep external state and temporal context separate
e.g.
struct State {
int a;
int b;
}
struct Temp {
int tmp;
}
static void f0( State *s, Temp *t)
{
t->tmp = s->a;
}
...
void f(State* s)
{
Temp tmp;
f0( s, &tmp);
f1( s, &tmp);
}
Using @llvm.lifetime.end is IMO a deadend, since this should just
signify that the alloca is gone.
Ciao
Nat!
More information about the llvm-dev
mailing list