[llvm] r220811 - Transforms: reapply SVN r219899

Rafael EspĂ­ndola rafael.espindola at gmail.com
Fri Oct 31 23:02:06 PDT 2014


>
> -; Don't insert lifetime end markers here, the lifetime is trivially over due
> -; the return.
> -; CHECK: define void @test_byval_a(
> -; CHECK: musttail call void @test_byval_c(
> -; CHECK-NEXT: ret void
> -
> -declare void @test_byval_c(i32* byval %p)
> -define internal void @test_byval_b(i32* byval %p) {
> -  musttail call void @test_byval_c(i32* byval %p)
> -  ret void
> -}
> -define void @test_byval_a(i32* byval %p) {
> -  musttail call void @test_byval_b(i32* byval %p)
> -  ret void
> -}
> -
> -; Don't insert a stack restore, we're about to return.
> -; CHECK: define void @test_dynalloca_a(
> -; CHECK: call i8* @llvm.stacksave(
> -; CHECK: alloca i8, i32 %n
> -; CHECK: musttail call void @test_dynalloca_c(
> -; CHECK-NEXT: ret void
> -
> -declare void @escape(i8* %buf)
> -declare void @test_dynalloca_c(i32* byval %p, i32 %n)
> -define internal void @test_dynalloca_b(i32* byval %p, i32 %n) alwaysinline {
> -  %buf = alloca i8, i32 %n              ; dynamic alloca
> -  call void @escape(i8* %buf)           ; escape it
> -  musttail call void @test_dynalloca_c(i32* byval %p, i32 %n)
> -  ret void
> -}
> -define void @test_dynalloca_a(i32* byval %p, i32 %n) {
> -  musttail call void @test_dynalloca_b(i32* byval %p, i32 %n)
> -  ret void
> -}

Why remove these tests? The musttail case in particular is interesting.

Cheers,
Rafael



More information about the llvm-commits mailing list