1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -inline -S | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; PR4834 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine i32 @test1() { 5*9880d681SAndroid Build Coastguard Worker %funcall1_ = call fastcc i32 ()* () @f1() 6*9880d681SAndroid Build Coastguard Worker %executecommandptr1_ = call i32 %funcall1_() 7*9880d681SAndroid Build Coastguard Worker ret i32 %executecommandptr1_ 8*9880d681SAndroid Build Coastguard Worker} 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdefine internal fastcc i32 ()* @f1() nounwind readnone { 11*9880d681SAndroid Build Coastguard Worker ret i32 ()* @f2 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine internal i32 @f2() nounwind readnone { 15*9880d681SAndroid Build Coastguard Worker ret i32 1 16*9880d681SAndroid Build Coastguard Worker} 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker; CHECK: @test1() 19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret i32 1 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerdeclare i8* @f1a(i8*) ssp align 2 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerdefine internal i32 @f2a(i8* %t) inlinehint ssp { 28*9880d681SAndroid Build Coastguard Workerentry: 29*9880d681SAndroid Build Coastguard Worker ret i32 41 30*9880d681SAndroid Build Coastguard Worker} 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerdefine internal i32 @f3a(i32 (i8*)* %__f) ssp { 33*9880d681SAndroid Build Coastguard Workerentry: 34*9880d681SAndroid Build Coastguard Worker %A = call i32 %__f(i8* undef) 35*9880d681SAndroid Build Coastguard Worker ret i32 %A 36*9880d681SAndroid Build Coastguard Worker} 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerdefine i32 @test2(i8* %this) ssp align 2 { 39*9880d681SAndroid Build Coastguard Worker %X = call i32 @f3a(i32 (i8*)* @f2a) ssp 40*9880d681SAndroid Build Coastguard Worker ret i32 %X 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test2( 44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret i32 41 45