19627bcdeSAlexandros Lamprineas; RUN: opt -passes="ipsccp<func-spec>" -force-specialization -S < %s | FileCheck %s 229843cbcSSjoerd Meijer 329843cbcSSjoerd Meijer; The if.then block is not executed, so check that we don't specialise here. 429843cbcSSjoerd Meijer 5*e15d72adSAlexandros Lamprineas; CHECK-NOT: @foo.specialized.1( 6*e15d72adSAlexandros Lamprineas; CHECK-NOT: @foo.specialized.2( 729843cbcSSjoerd Meijer 829843cbcSSjoerd Meijertarget datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" 929843cbcSSjoerd Meijer 1029843cbcSSjoerd Meijer@A = external dso_local constant i32, align 4 1129843cbcSSjoerd Meijer@B = external dso_local constant i32, align 4 1229843cbcSSjoerd Meijer 1329843cbcSSjoerd Meijerdefine dso_local i32 @bar(i32 %x, i32 %y) { 1429843cbcSSjoerd Meijerentry: 1529843cbcSSjoerd Meijer %tobool = icmp ne i32 %x, 0 1629843cbcSSjoerd Meijer br i1 false, label %if.then, label %if.else 1729843cbcSSjoerd Meijer 1829843cbcSSjoerd Meijerif.then: 19ebdf5aefSMatt Arsenault %call = call i32 @foo(i32 %x, ptr @A) 2029843cbcSSjoerd Meijer br label %return 2129843cbcSSjoerd Meijer 2229843cbcSSjoerd Meijerif.else: 23ebdf5aefSMatt Arsenault %call1 = call i32 @foo(i32 %y, ptr @B) 2429843cbcSSjoerd Meijer br label %return 2529843cbcSSjoerd Meijer 2629843cbcSSjoerd Meijerreturn: 2729843cbcSSjoerd Meijer %retval.0 = phi i32 [ %call, %if.then ], [ %call1, %if.else ] 2829843cbcSSjoerd Meijer ret i32 %retval.0 2929843cbcSSjoerd Meijer} 3029843cbcSSjoerd Meijer 31ebdf5aefSMatt Arsenaultdefine internal i32 @foo(i32 %x, ptr %b) { 3229843cbcSSjoerd Meijerentry: 33ebdf5aefSMatt Arsenault %0 = load i32, ptr %b, align 4 3429843cbcSSjoerd Meijer %add = add nsw i32 %x, %0 3529843cbcSSjoerd Meijer ret i32 %add 3629843cbcSSjoerd Meijer} 37