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