brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 910aa7b Raw
44 lines · plain
1; RUN: opt < %s -passes=deadargelim -S | FileCheck %s2 3@g0 = global i8 0, align 84 5; CHECK-NOT: DEAD6 7; Dead arg only used by dead retval8define internal i32 @test(i32 %DEADARG) {9        ret i32 %DEADARG10}11 12define i32 @test2(i32 %A) {13        %DEAD = call i32 @test( i32 %A )                ; <i32> [#uses=0]14        ret i32 12315}16 17define i32 @test3() {18        %X = call i32 @test2( i32 3232 )                ; <i32> [#uses=1]19        %Y = add i32 %X, -123           ; <i32> [#uses=1]20        ret i32 %Y21}22 23; The callee function's return type shouldn't be changed if the call result is24; used.25 26; CHECK-LABEL: define internal ptr @callee4()27 28define internal ptr @callee4(ptr %a0) {29  ret ptr @g0;30}31 32declare void @llvm.objc.clang.arc.noop.use(...)33 34; CHECK-LABEL: define ptr @test4(35; CHECK: tail call ptr @callee4() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ]36 37define ptr @test4() {38  %call = tail call ptr @callee4(ptr @g0) [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ]39  call void (...) @llvm.objc.clang.arc.noop.use(ptr %call)40  ret ptr @g041}42 43declare ptr @llvm.objc.retainAutoreleasedReturnValue(ptr)44