; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -passes=sroa < %s -S | FileCheck %s define void @f(i1 %i) { ; CHECK-LABEL: @f( ; CHECK-NEXT: [[A1:%.*]] = alloca i64, align 8 ; CHECK-NEXT: [[A2:%.*]] = alloca i64, align 8 ; CHECK-NEXT: br i1 [[I:%.*]], label [[BB1:%.*]], label [[BB:%.*]] ; CHECK: bb: ; CHECK-NEXT: br label [[BB2:%.*]] ; CHECK: bb1: ; CHECK-NEXT: br label [[BB2]] ; CHECK: bb2: ; CHECK-NEXT: [[TMP3:%.*]] = phi ptr [ [[A1]], [[BB1]] ], [ [[A2]], [[BB]] ] ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP3]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 4 ; CHECK-NEXT: call void @use32(i32 [[TMP5]]) ; CHECK-NEXT: call void @use64(i64 [[TMP4]]) ; CHECK-NEXT: ret void ; %a1 = alloca i64 %a2 = alloca i64 br i1 %i, label %bb1, label %bb bb: br label %bb2 bb1: br label %bb2 bb2: %tmp3 = phi ptr [ %a1, %bb1 ], [ %a2, %bb ] %tmp5 = load i32, ptr %tmp3 %tmp4 = load i64, ptr %tmp3 call void @use32(i32 %tmp5) call void @use64(i64 %tmp4) ret void } declare void @use32(i32) declare void @use64(i64)