[llvm] r219899 - TRE: make TRE a bit more aggressive
Rafael EspĂndola
rafael.espindola at gmail.com
Fri Oct 17 13:50:02 PDT 2014
> It is not so much the backend, it is also the language spec:
>
> It says "Both markers imply that the callee does not access allocas or
> varargs from the caller." and I think that is what -dse was using in
> pr7272 to break the code even before codegen.
Running
./bin/opt ~/llvm/llvm/test/Transforms/Inline/byval-tail-call.ll -S
-basicaa -inline -tailcallelim -dse
I now get
define void @frob(i32* %x) {
%x1 = alloca i32, align 4
%1 = bitcast i32* %x1 to i8*
call void @llvm.lifetime.start(i64 4, i8* %1)
tail call void @ext(i32* %x1)
tail call void @ext(i32* null)
%2 = bitcast i32* %x1 to i8*
call void @llvm.lifetime.end(i64 4, i8* %2)
ret void
}
Note how %x1 is passed uninitialized to ext.
Cheers,
Rafael
More information about the llvm-commits
mailing list