67 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; Testcases comes from PR126817 and PR1075693; See PR54964 and langref for more information about how llvm deal with musttail currently4; RUN: opt -passes=deadargelim -S < %s | FileCheck %s5 6define i64 @A() {7; CHECK-LABEL: define i64 @A() {8; CHECK-NEXT: [[ENTRY:.*:]]9; CHECK-NEXT: [[V2660:%.*]] = musttail call i64 @B()10; CHECK-NEXT: ret i64 [[V2660]]11;12entry:13 %v2660 = musttail call i64 @B()14 ret i64 %v266015}16 17define internal i64 @B() {18; CHECK-LABEL: define internal i64 @B() {19; CHECK-NEXT: [[ENTRY:.*:]]20; CHECK-NEXT: ret i64 021;22entry:23 ret i64 024}25 26define internal i64 @C() {27; CHECK-LABEL: define internal i64 @C() {28; CHECK-NEXT: [[ENTRY:.*:]]29; CHECK-NEXT: [[V30543:%.*]] = musttail call i64 @B()30; CHECK-NEXT: ret i64 [[V30543]]31;32entry:33 %v30543 = musttail call i64 @B()34 ret i64 %v3054335}36 37%struct.S = type { double }38 39define internal %struct.S @F38() {40; CHECK-LABEL: define internal %struct.S @F38() {41; CHECK-NEXT: ret [[STRUCT_S:%.*]] zeroinitializer42;43 ret %struct.S { double 0.0 }44}45 46define internal %struct.S @F36() {47; CHECK-LABEL: define internal %struct.S @F36() {48; CHECK-NEXT: [[TMP1:%.*]] = alloca [[STRUCT_S:%.*]], align 849; CHECK-NEXT: [[TMP2:%.*]] = musttail call [[STRUCT_S]] @[[F38:[a-zA-Z0-9_$\"\\.-]*[a-zA-Z_$\"\\.-][a-zA-Z0-9_$\"\\.-]*]]()50; CHECK-NEXT: ret [[STRUCT_S]] [[TMP2]]51;52 %1 = alloca %struct.S, align 853 %3 = musttail call %struct.S @F38()54 ret %struct.S %355}56 57define double @foo() {58; CHECK-LABEL: define double @foo() {59; CHECK-NEXT: [[TMP1:%.*]] = call [[STRUCT_S:%.*]] @[[F36:[a-zA-Z0-9_$\"\\.-]*[a-zA-Z_$\"\\.-][a-zA-Z0-9_$\"\\.-]*]]()60; CHECK-NEXT: [[TMP2:%.*]] = extractvalue [[STRUCT_S]] [[TMP1]], 061; CHECK-NEXT: ret double [[TMP2]]62;63 %3 = call %struct.S @F36()64 %5 = extractvalue %struct.S %3, 065 ret double %566}67