70 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-linux < %s | FileCheck %s3 4declare dso_local ptr @foo()5 6define dereferenceable(8) ptr @test1() nounwind {7; CHECK-LABEL: test1:8; CHECK: # %bb.0:9; CHECK-NEXT: jmp foo # TAILCALL10 %ret = tail call ptr @foo()11 ret ptr %ret12}13 14define ptr @test2() nounwind {15; CHECK-LABEL: test2:16; CHECK: # %bb.0:17; CHECK-NEXT: jmp foo # TAILCALL18 %ret = tail call dereferenceable(8) ptr @foo()19 ret ptr %ret20}21 22define dereferenceable_or_null(8) ptr @test3() nounwind {23; CHECK-LABEL: test3:24; CHECK: # %bb.0:25; CHECK-NEXT: jmp foo # TAILCALL26 %ret = tail call ptr @foo()27 ret ptr %ret28}29 30define ptr @test4() nounwind {31; CHECK-LABEL: test4:32; CHECK: # %bb.0:33; CHECK-NEXT: jmp foo # TAILCALL34 %ret = tail call dereferenceable_or_null(8) ptr @foo()35 ret ptr %ret36}37 38define align 8 ptr @test5() nounwind {39; CHECK-LABEL: test5:40; CHECK: # %bb.0:41; CHECK-NEXT: jmp foo # TAILCALL42 %ret = tail call ptr @foo()43 ret ptr %ret44}45 46define ptr @test6() nounwind {47; CHECK-LABEL: test6:48; CHECK: # %bb.0:49; CHECK-NEXT: jmp foo # TAILCALL50 %ret = tail call align 8 ptr @foo()51 ret ptr %ret52}53 54 55define noundef ptr @test7() nounwind {56; CHECK-LABEL: test7:57; CHECK: # %bb.0:58; CHECK-NEXT: jmp foo # TAILCALL59 %ret = tail call ptr @foo()60 ret ptr %ret61}62 63define ptr @test8() nounwind {64; CHECK-LABEL: test8:65; CHECK: # %bb.0:66; CHECK-NEXT: jmp foo # TAILCALL67 %ret = tail call noundef ptr @foo()68 ret ptr %ret69}70