brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · a6a990c Raw
64 lines · plain
1; RUN: opt -passes="ipsccp<func-spec>" -force-specialization \2; RUN:   -funcspec-for-literal-constant=false -funcspec-max-clones=2 \3; RUN:   -S < %s | FileCheck %s4 5; RUN: opt -passes="ipsccp<func-spec>" -force-specialization \6; RUN:   -funcspec-for-literal-constant=false -funcspec-max-clones=1 \7; RUN:   -S < %s | FileCheck %s --check-prefix=CONST18 9target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"10 11@A = external dso_local constant i32, align 412@B = external dso_local constant i32, align 413@C = external dso_local constant i32, align 414@D = external dso_local constant i32, align 415 16define dso_local i32 @bar(i32 %x, i32 %y) {17entry:18  %tobool = icmp ne i32 %x, 019  br i1 %tobool, label %if.then, label %if.else20 21if.then:22  %call = call i32 @foo(i32 %x, ptr @A, ptr @C)23  br label %return24 25if.else:26  %call1 = call i32 @foo(i32 %y, ptr @B, ptr @D)27  br label %return28 29return:30  %retval.0 = phi i32 [ %call, %if.then ], [ %call1, %if.else ]31  ret i32 %retval.032}33 34; CHECK-NOT: define internal i32 @foo(35define internal i32 @foo(i32 %x, ptr %b, ptr %c) {36entry:37  %0 = load i32, ptr %b, align 438  %add = add nsw i32 %x, %039  %1 = load i32, ptr %c, align 440  %add1 = add nsw i32 %add, %141  ret i32 %add142}43 44; CONST1:     define internal i32 @foo.specialized.1(i32 %x, ptr %b, ptr %c)45; CONST1-NOT: define internal i32 @foo.specialized.2(i32 %x, ptr %b, ptr %c)46 47; CHECK:        define internal i32 @foo.specialized.1(i32 %x, ptr %b, ptr %c) {48; CHECK-NEXT:   entry:49; CHECK-NEXT:     %0 = load i32, ptr @A, align 450; CHECK-NEXT:     %add = add nsw i32 %x, %051; CHECK-NEXT:     %1 = load i32, ptr @C, align 452; CHECK-NEXT:     %add1 = add nsw i32 %add, %153; CHECK-NEXT:     ret i32 %add154; CHECK-NEXT:   }55 56; CHECK: define internal i32 @foo.specialized.2(i32 %x, ptr %b, ptr %c) {57; CHECK-NEXT:   entry:58; CHECK-NEXT:     %0 = load i32, ptr @B, align 459; CHECK-NEXT:     %add = add nsw i32 %x, %060; CHECK-NEXT:     %1 = load i32, ptr @D, align 461; CHECK-NEXT:     %add1 = add nsw i32 %add, %162; CHECK-NEXT:     ret i32 %add163; CHECK-NEXT:   }64