1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -passes='sroa<preserve-cfg>' < %s -S | FileCheck %s --check-prefixes=CHECK,CHECK-PRESERVE-CFG 3; RUN: opt -passes='sroa<modify-cfg>' < %s -S | FileCheck %s --check-prefixes=CHECK,CHECK-MODIFY-CFG 4 5define void @f(i1 %i) { 6; CHECK-LABEL: @f( 7; CHECK-NEXT: [[A1:%.*]] = alloca i64, align 8 8; CHECK-NEXT: [[A2:%.*]] = alloca i64, align 8 9; CHECK-NEXT: br i1 [[I:%.*]], label [[BB1:%.*]], label [[BB:%.*]] 10; CHECK: bb: 11; CHECK-NEXT: br label [[BB2:%.*]] 12; CHECK: bb1: 13; CHECK-NEXT: br label [[BB2]] 14; CHECK: bb2: 15; CHECK-NEXT: [[TMP3:%.*]] = phi ptr [ [[A1]], [[BB1]] ], [ [[A2]], [[BB]] ] 16; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP3]], align 4 17; CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 4 18; CHECK-NEXT: call void @use32(i32 [[TMP5]]) 19; CHECK-NEXT: call void @use64(i64 [[TMP4]]) 20; CHECK-NEXT: ret void 21; 22 %a1 = alloca i64 23 %a2 = alloca i64 24 br i1 %i, label %bb1, label %bb 25 26bb: 27 br label %bb2 28 29bb1: 30 br label %bb2 31 32bb2: 33 %tmp3 = phi ptr [ %a1, %bb1 ], [ %a2, %bb ] 34 %tmp5 = load i32, ptr %tmp3 35 %tmp4 = load i64, ptr %tmp3 36 call void @use32(i32 %tmp5) 37 call void @use64(i64 %tmp4) 38 ret void 39} 40 41declare void @use32(i32) 42declare void @use64(i64) 43;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 44; CHECK-MODIFY-CFG: {{.*}} 45; CHECK-PRESERVE-CFG: {{.*}} 46