1; RUN: opt < %s -passes=inline -S | FileCheck %s 2; RUN: opt < %s -passes='cgscc(inline)' -S | FileCheck %s 3; Do not inline calls with variable-sized alloca. 4 5@q = common global ptr null 6 7define ptr @a(i32 %i) nounwind { 8; CHECK-LABEL: define ptr @a 9entry: 10 %i_addr = alloca i32 11 %retval = alloca ptr 12 %p = alloca ptr 13 %"alloca point" = bitcast i32 0 to i32 14 store i32 %i, ptr %i_addr 15 %0 = load i32, ptr %i_addr, align 4 16 %1 = alloca i8, i32 %0 17 store ptr %1, ptr %p, align 4 18 %2 = load ptr, ptr %p, align 4 19 store ptr %2, ptr @q, align 4 20 br label %return 21 22return: 23 %retval1 = load ptr, ptr %retval 24 ret ptr %retval1 25} 26 27define void @b(i32 %i) nounwind { 28; CHECK-LABEL: define void @b 29entry: 30 %i_addr = alloca i32 31 %"alloca point" = bitcast i32 0 to i32 32 store i32 %i, ptr %i_addr 33 %0 = load i32, ptr %i_addr, align 4 34 %1 = call ptr @a(i32 %0) nounwind 35; CHECK: call ptr @a 36 br label %return 37 38return: 39 ret void 40} 41