1475ddca5SAlexandros Lamprineas; RUN: opt -passes="ipsccp<func-spec>" -funcspec-for-literal-constant=true -force-specialization -S < %s | FileCheck %s 2801c2b9bSChuanqi Xu 3801c2b9bSChuanqi Xu; Check that the literal constant parameter could be specialized. 4*e15d72adSAlexandros Lamprineas; CHECK: @foo.specialized.1( 5*e15d72adSAlexandros Lamprineas; CHECK: @foo.specialized.2( 6801c2b9bSChuanqi Xu 7801c2b9bSChuanqi Xutarget datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" 8801c2b9bSChuanqi Xu 9801c2b9bSChuanqi Xudeclare i32 @getValue() 10801c2b9bSChuanqi Xudeclare i1 @getCond() 11801c2b9bSChuanqi Xu 12801c2b9bSChuanqi Xudefine internal i32 @foo(i1 %break_cond) { 13801c2b9bSChuanqi Xuentry: 14801c2b9bSChuanqi Xu br label %loop.entry 15801c2b9bSChuanqi Xu 16801c2b9bSChuanqi Xuloop.entry: 17801c2b9bSChuanqi Xu br label %loop2.entry 18801c2b9bSChuanqi Xu 19801c2b9bSChuanqi Xuloop2.entry: 20801c2b9bSChuanqi Xu br label %loop2.body 21801c2b9bSChuanqi Xu 22801c2b9bSChuanqi Xuloop2.body: 23801c2b9bSChuanqi Xu %value = call i32 @getValue() 24801c2b9bSChuanqi Xu br i1 %break_cond, label %loop2.end, label %return 25801c2b9bSChuanqi Xu 26801c2b9bSChuanqi Xuloop2.end: 27801c2b9bSChuanqi Xu %cond.end = call i1 @getCond() 28801c2b9bSChuanqi Xu br i1 %cond.end, label %loop2.entry, label %loop.end 29801c2b9bSChuanqi Xu 30801c2b9bSChuanqi Xuloop.end: 31801c2b9bSChuanqi Xu %cond2.end = call i1 @getCond() 32801c2b9bSChuanqi Xu br i1 %cond2.end, label %loop.entry, label %return 33801c2b9bSChuanqi Xu 34801c2b9bSChuanqi Xureturn: 35801c2b9bSChuanqi Xu ret i32 %value 36801c2b9bSChuanqi Xu} 37801c2b9bSChuanqi Xu 38801c2b9bSChuanqi Xudefine dso_local i32 @bar(i32 %x, i32 %y) { 39801c2b9bSChuanqi Xuentry: 40801c2b9bSChuanqi Xu %retval.1 = call i32 @foo(i1 1) 41801c2b9bSChuanqi Xu %retval.2 = call i32 @foo(i1 0) 42801c2b9bSChuanqi Xu %retval = add nsw i32 %retval.1, %retval.2 43801c2b9bSChuanqi Xu ret i32 %retval 44801c2b9bSChuanqi Xu} 45