19627bcdeSAlexandros Lamprineas; RUN: opt -passes="ipsccp<func-spec>" -force-specialization -S < %s | FileCheck %s 28b360c69SBin Cheng 38b360c69SBin Cheng; Check that we don't crash and specialise on a function call with byval attribute. 48b360c69SBin Cheng 5*e15d72adSAlexandros Lamprineas; CHECK-NOT: wombat.specialized.{{[0-9]+}} 68b360c69SBin Cheng 7ebdf5aefSMatt Arsenaultdeclare ptr @quux() 8ebdf5aefSMatt Arsenaultdeclare ptr @eggs() 98b360c69SBin Cheng 108b360c69SBin Chengdefine i32 @main() { 118b360c69SBin Cheng; CHECK: bb: 12ebdf5aefSMatt Arsenault; CHECK-NEXT: tail call void @wombat(ptr undef, i64 undef, i64 undef, ptr byval(i32) @quux) 13ebdf5aefSMatt Arsenault; CHECK-NEXT: tail call void @wombat(ptr undef, i64 undef, i64 undef, ptr byval(i32) @eggs) 148b360c69SBin Cheng; CHECK-NEXT: ret i32 undef 158b360c69SBin Cheng; 168b360c69SBin Chengbb: 17ebdf5aefSMatt Arsenault tail call void @wombat(ptr undef, i64 undef, i64 undef, ptr byval(i32) @quux) 18ebdf5aefSMatt Arsenault tail call void @wombat(ptr undef, i64 undef, i64 undef, ptr byval(i32) @eggs) 198b360c69SBin Cheng ret i32 undef 208b360c69SBin Cheng} 218b360c69SBin Cheng 22ebdf5aefSMatt Arsenaultdefine internal void @wombat(ptr %arg, i64 %arg1, i64 %arg2, ptr byval(i32) %func) { 238b360c69SBin Cheng; CHECK: bb2: 24ebdf5aefSMatt Arsenault; CHECK-NEXT: [[TMP:%.*]] = tail call ptr %func(ptr undef, ptr undef) 258b360c69SBin Cheng; CHECK-NEXT: ret void 268b360c69SBin Cheng; 278b360c69SBin Chengbb2: 28ebdf5aefSMatt Arsenault %tmp = tail call ptr %func(ptr undef, ptr undef) 298b360c69SBin Cheng ret void 308b360c69SBin Cheng} 31