1*9880d681SAndroid Build Coastguard Worker; RUN: opt -mergefunc -S < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker;; Make sure that two different allocas are not treated as equal. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker%kv1 = type { i32, i32 } 8*9880d681SAndroid Build Coastguard Worker%kv2 = type { i8 } 9*9880d681SAndroid Build Coastguard Worker%kv3 = type { i64, i64 } 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker; Size difference. 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: define void @size1 14*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: call void @ 15*9880d681SAndroid Build Coastguard Workerdefine void @size1(i8 *%f) { 16*9880d681SAndroid Build Coastguard Worker %v = alloca %kv1, align 8 17*9880d681SAndroid Build Coastguard Worker %f_2 = bitcast i8* %f to void (%kv1 *)* 18*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv1 * %v) 19*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv1 * %v) 20*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv1 * %v) 21*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv1 * %v) 22*9880d681SAndroid Build Coastguard Worker ret void 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: define void @size2 26*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: call void @ 27*9880d681SAndroid Build Coastguard Workerdefine void @size2(i8 *%f) { 28*9880d681SAndroid Build Coastguard Worker %v = alloca %kv2, align 8 29*9880d681SAndroid Build Coastguard Worker %f_2 = bitcast i8* %f to void (%kv2 *)* 30*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv2 * %v) 31*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv2 * %v) 32*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv2 * %v) 33*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv2 * %v) 34*9880d681SAndroid Build Coastguard Worker ret void 35*9880d681SAndroid Build Coastguard Worker} 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker; Alignment difference. 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: define void @align1 40*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: call void @ 41*9880d681SAndroid Build Coastguard Workerdefine void @align1(i8 *%f) { 42*9880d681SAndroid Build Coastguard Worker %v = alloca %kv3, align 8 43*9880d681SAndroid Build Coastguard Worker %f_2 = bitcast i8* %f to void (%kv3 *)* 44*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv3 * %v) 45*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv3 * %v) 46*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv3 * %v) 47*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv3 * %v) 48*9880d681SAndroid Build Coastguard Worker ret void 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: define void @align2 52*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: call void @ 53*9880d681SAndroid Build Coastguard Workerdefine void @align2(i8 *%f) { 54*9880d681SAndroid Build Coastguard Worker %v = alloca %kv3, align 16 55*9880d681SAndroid Build Coastguard Worker %f_2 = bitcast i8* %f to void (%kv3 *)* 56*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv3 * %v) 57*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv3 * %v) 58*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv3 * %v) 59*9880d681SAndroid Build Coastguard Worker call void %f_2(%kv3 * %v) 60*9880d681SAndroid Build Coastguard Worker ret void 61*9880d681SAndroid Build Coastguard Worker} 62