1c9066c5dSAndrew Wei; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2f1ec0d12SNick Anderson; RUN: opt -S -passes='require<profile-summary>,function(codegenprepare)' -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s 3c9066c5dSAndrew Wei 4c9066c5dSAndrew Wei@_MergedGlobals = external dso_local global <{ i32, i32 }>, align 4 5c9066c5dSAndrew Wei 6c9066c5dSAndrew Weidefine dso_local i32 @f(i1 %a, i8 %b) local_unnamed_addr { 7c9066c5dSAndrew Wei; CHECK-LABEL: @f( 8e446d1d9SMatt Arsenault; CHECK-NEXT: bb: 9e446d1d9SMatt Arsenault; CHECK-NEXT: br label [[BB10:%.*]] 10e446d1d9SMatt Arsenault; CHECK: bb1: 11e446d1d9SMatt Arsenault; CHECK-NEXT: br i1 [[A:%.*]], label [[BB2:%.*]], label [[BB10]] 12e446d1d9SMatt Arsenault; CHECK: bb2: 13d9e51e75SMatt Arsenault; CHECK-NEXT: [[I:%.*]] = phi ptr [ getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals, i32 0, i32 1), [[BB1:%.*]] ], [ [[I20:%.*]], [[BB18:%.*]] ] 14d9e51e75SMatt Arsenault; CHECK-NEXT: [[I3:%.*]] = phi ptr [ getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals, i32 0, i32 1), [[BB1]] ], [ [[I19:%.*]], [[BB18]] ] 15c9066c5dSAndrew Wei; CHECK-NEXT: ret i32 0 16e446d1d9SMatt Arsenault; CHECK: bb4: 17e446d1d9SMatt Arsenault; CHECK-NEXT: br label [[BB10]] 18e446d1d9SMatt Arsenault; CHECK: bb10: 19d9e51e75SMatt Arsenault; CHECK-NEXT: [[I11:%.*]] = phi ptr [ @_MergedGlobals, [[BB:%.*]] ], [ [[I]], [[BB4:%.*]] ], [ getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals, i32 0, i32 1), [[BB1]] ] 20d9e51e75SMatt Arsenault; CHECK-NEXT: [[I12:%.*]] = phi ptr [ @_MergedGlobals, [[BB]] ], [ [[I3]], [[BB4]] ], [ getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals, i32 0, i32 1), [[BB1]] ] 21e446d1d9SMatt Arsenault; CHECK-NEXT: br label [[BB13:%.*]] 22e446d1d9SMatt Arsenault; CHECK: bb13: 23d9e51e75SMatt Arsenault; CHECK-NEXT: [[I14:%.*]] = phi ptr [ [[I20]], [[BB18]] ], [ [[I11]], [[BB10]] ] 24d9e51e75SMatt Arsenault; CHECK-NEXT: [[I15:%.*]] = phi ptr [ [[I20]], [[BB18]] ], [ [[I12]], [[BB10]] ] 25d9e51e75SMatt Arsenault; CHECK-NEXT: [[I16:%.*]] = phi ptr [ [[I19]], [[BB18]] ], [ [[I12]], [[BB10]] ] 26e446d1d9SMatt Arsenault; CHECK-NEXT: br i1 [[A]], label [[BB18]], label [[BB17:%.*]] 27e446d1d9SMatt Arsenault; CHECK: bb17: 28d9e51e75SMatt Arsenault; CHECK-NEXT: store i32 5, ptr [[I15]], align 4 29e446d1d9SMatt Arsenault; CHECK-NEXT: br label [[BB18]] 30e446d1d9SMatt Arsenault; CHECK: bb18: 31d9e51e75SMatt Arsenault; CHECK-NEXT: [[I19]] = phi ptr [ [[I16]], [[BB17]] ], [ [[I14]], [[BB13]] ] 32d9e51e75SMatt Arsenault; CHECK-NEXT: [[I20]] = phi ptr [ [[I15]], [[BB17]] ], [ [[I14]], [[BB13]] ] 33e446d1d9SMatt Arsenault; CHECK-NEXT: br i1 [[A]], label [[BB2]], label [[BB13]] 34c9066c5dSAndrew Wei; 35e446d1d9SMatt Arsenaultbb: 36e446d1d9SMatt Arsenault br label %bb10 37c9066c5dSAndrew Wei 38e446d1d9SMatt Arsenaultbb1: ; No predecessors! 39e446d1d9SMatt Arsenault br i1 %a, label %bb2, label %bb9 40c9066c5dSAndrew Wei 41e446d1d9SMatt Arsenaultbb2: ; preds = %bb21, %bb1 42d9e51e75SMatt Arsenault %i = phi ptr [ getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals, i32 0, i32 1), %bb1 ], [ %i20, %bb21 ] 43d9e51e75SMatt Arsenault %i3 = phi ptr [ getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals, i32 0, i32 1), %bb1 ], [ %i19, %bb21 ] 44c9066c5dSAndrew Wei ret i32 0 45c9066c5dSAndrew Wei 46e446d1d9SMatt Arsenaultbb4: ; No predecessors! 47e446d1d9SMatt Arsenault %i5 = icmp ugt i8 %b, 50 48e446d1d9SMatt Arsenault br label %bb6 49c9066c5dSAndrew Wei 50e446d1d9SMatt Arsenaultbb6: ; preds = %bb9, %bb4 51d9e51e75SMatt Arsenault %i7 = phi ptr [ %i, %bb4 ], [ getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals, i32 0, i32 1), %bb9 ] 52d9e51e75SMatt Arsenault %i8 = phi ptr [ %i3, %bb4 ], [ getelementptr inbounds (<{ i32, i32 }>, ptr @_MergedGlobals, i32 0, i32 1), %bb9 ] 53e446d1d9SMatt Arsenault br label %bb10 54c9066c5dSAndrew Wei 55e446d1d9SMatt Arsenaultbb9: ; preds = %bb1 56e446d1d9SMatt Arsenault br label %bb6 57c9066c5dSAndrew Wei 58e446d1d9SMatt Arsenaultbb10: ; preds = %bb6, %bb 59*2d69827cSNikita Popov %i11 = phi ptr [ @_MergedGlobals, %bb ], [ %i7, %bb6 ] 60*2d69827cSNikita Popov %i12 = phi ptr [ @_MergedGlobals, %bb ], [ %i8, %bb6 ] 61e446d1d9SMatt Arsenault br label %bb13 62c9066c5dSAndrew Wei 63e446d1d9SMatt Arsenaultbb13: ; preds = %bb18, %bb10 64d9e51e75SMatt Arsenault %i14 = phi ptr [ %i20, %bb18 ], [ %i11, %bb10 ] 65d9e51e75SMatt Arsenault %i15 = phi ptr [ %i20, %bb18 ], [ %i12, %bb10 ] 66d9e51e75SMatt Arsenault %i16 = phi ptr [ %i19, %bb18 ], [ %i12, %bb10 ] 67e446d1d9SMatt Arsenault br i1 %a, label %bb18, label %bb17 68c9066c5dSAndrew Wei 69e446d1d9SMatt Arsenaultbb17: ; preds = %bb13 70d9e51e75SMatt Arsenault store i32 5, ptr %i15, align 4 71e446d1d9SMatt Arsenault br label %bb18 72c9066c5dSAndrew Wei 73e446d1d9SMatt Arsenaultbb18: ; preds = %bb17, %bb13 74d9e51e75SMatt Arsenault %i19 = phi ptr [ %i16, %bb17 ], [ %i14, %bb13 ] 75d9e51e75SMatt Arsenault %i20 = phi ptr [ %i15, %bb17 ], [ %i14, %bb13 ] 76e446d1d9SMatt Arsenault br i1 %a, label %bb21, label %bb13 77c9066c5dSAndrew Wei 78e446d1d9SMatt Arsenaultbb21: ; preds = %bb18 79e446d1d9SMatt Arsenault br label %bb2 80c9066c5dSAndrew Wei} 81