15c9a2623SMomchil Velikov; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2*f1ec0d12SNick Anderson; RUN: opt -S -passes='require<profile-summary>,function(codegenprepare)' < %s | FileCheck %s 35c9a2623SMomchil Velikov; REQUIRES: aarch64-registered-target 45c9a2623SMomchil Velikov 599e57f06SMomchil Velikov; Test that `%addr` is sunk, after we've increased limit on the number of the memory uses to scan. 65c9a2623SMomchil Velikov 75c9a2623SMomchil Velikovtarget triple = "aarch64-linux" 85c9a2623SMomchil Velikov 95c9a2623SMomchil Velikovdeclare void @g(...) 105c9a2623SMomchil Velikov 115c9a2623SMomchil Velikovdefine void @f(ptr %p) { 125c9a2623SMomchil Velikov; CHECK-LABEL: @f( 135c9a2623SMomchil Velikov; CHECK-NEXT: entry: 1499e57f06SMomchil Velikov; CHECK-NEXT: [[SUNKADDR:%.*]] = getelementptr i8, ptr [[P:%.*]], i64 4 1599e57f06SMomchil Velikov; CHECK-NEXT: [[T0:%.*]] = load i32, ptr [[SUNKADDR]], align 4 1699e57f06SMomchil Velikov; CHECK-NEXT: [[T1:%.*]] = load i32, ptr [[SUNKADDR]], align 4 1799e57f06SMomchil Velikov; CHECK-NEXT: [[T2:%.*]] = load i32, ptr [[SUNKADDR]], align 4 1899e57f06SMomchil Velikov; CHECK-NEXT: [[T3:%.*]] = load i32, ptr [[SUNKADDR]], align 4 1999e57f06SMomchil Velikov; CHECK-NEXT: [[T4:%.*]] = load i32, ptr [[SUNKADDR]], align 4 2099e57f06SMomchil Velikov; CHECK-NEXT: [[T5:%.*]] = load i32, ptr [[SUNKADDR]], align 4 2199e57f06SMomchil Velikov; CHECK-NEXT: [[T6:%.*]] = load i32, ptr [[SUNKADDR]], align 4 2299e57f06SMomchil Velikov; CHECK-NEXT: [[T7:%.*]] = load i32, ptr [[SUNKADDR]], align 4 2399e57f06SMomchil Velikov; CHECK-NEXT: [[T8:%.*]] = load i32, ptr [[SUNKADDR]], align 4 2499e57f06SMomchil Velikov; CHECK-NEXT: [[T9:%.*]] = load i32, ptr [[SUNKADDR]], align 4 2599e57f06SMomchil Velikov; CHECK-NEXT: [[T10:%.*]] = load i32, ptr [[SUNKADDR]], align 4 2699e57f06SMomchil Velikov; CHECK-NEXT: [[T11:%.*]] = load i32, ptr [[SUNKADDR]], align 4 2799e57f06SMomchil Velikov; CHECK-NEXT: [[T12:%.*]] = load i32, ptr [[SUNKADDR]], align 4 2899e57f06SMomchil Velikov; CHECK-NEXT: [[T13:%.*]] = load i32, ptr [[SUNKADDR]], align 4 2999e57f06SMomchil Velikov; CHECK-NEXT: [[T14:%.*]] = load i32, ptr [[SUNKADDR]], align 4 3099e57f06SMomchil Velikov; CHECK-NEXT: [[T15:%.*]] = load i32, ptr [[SUNKADDR]], align 4 3199e57f06SMomchil Velikov; CHECK-NEXT: [[T16:%.*]] = load i32, ptr [[SUNKADDR]], align 4 3299e57f06SMomchil Velikov; CHECK-NEXT: [[T17:%.*]] = load i32, ptr [[SUNKADDR]], align 4 3399e57f06SMomchil Velikov; CHECK-NEXT: [[T18:%.*]] = load i32, ptr [[SUNKADDR]], align 4 3499e57f06SMomchil Velikov; CHECK-NEXT: [[SUNKADDR1:%.*]] = getelementptr i8, ptr [[P]], i64 8 3599e57f06SMomchil Velikov; CHECK-NEXT: [[T19:%.*]] = load i32, ptr [[SUNKADDR1]], align 4 365c9a2623SMomchil Velikov; CHECK-NEXT: call void @g(i32 [[T0]], i32 [[T1]], i32 [[T2]], i32 [[T3]], i32 [[T4]], i32 [[T5]], i32 [[T6]], i32 [[T7]], i32 [[T8]], i32 [[T9]], i32 [[T10]], i32 [[T11]], i32 [[T12]], i32 [[T13]], i32 [[T14]], i32 [[T15]], i32 [[T16]], i32 [[T17]], i32 [[T18]], i32 [[T19]]) 375c9a2623SMomchil Velikov; CHECK-NEXT: ret void 385c9a2623SMomchil Velikov; 395c9a2623SMomchil Velikoventry: 405c9a2623SMomchil Velikov %addr = getelementptr i8, ptr %p, i32 4 415c9a2623SMomchil Velikov br label %exit 425c9a2623SMomchil Velikov 435c9a2623SMomchil Velikovexit: 445c9a2623SMomchil Velikov %t0 = load i32, ptr %addr 455c9a2623SMomchil Velikov %t1 = load i32, ptr %addr 465c9a2623SMomchil Velikov %t2 = load i32, ptr %addr 475c9a2623SMomchil Velikov %t3 = load i32, ptr %addr 485c9a2623SMomchil Velikov %t4 = load i32, ptr %addr 495c9a2623SMomchil Velikov %t5 = load i32, ptr %addr 505c9a2623SMomchil Velikov %t6 = load i32, ptr %addr 515c9a2623SMomchil Velikov %t7 = load i32, ptr %addr 525c9a2623SMomchil Velikov %t8 = load i32, ptr %addr 535c9a2623SMomchil Velikov %t9 = load i32, ptr %addr 545c9a2623SMomchil Velikov %t10 = load i32, ptr %addr 555c9a2623SMomchil Velikov %t11 = load i32, ptr %addr 565c9a2623SMomchil Velikov %t12 = load i32, ptr %addr 575c9a2623SMomchil Velikov %t13 = load i32, ptr %addr 585c9a2623SMomchil Velikov %t14 = load i32, ptr %addr 595c9a2623SMomchil Velikov %t15 = load i32, ptr %addr 605c9a2623SMomchil Velikov %t16 = load i32, ptr %addr 615c9a2623SMomchil Velikov %t17 = load i32, ptr %addr 625c9a2623SMomchil Velikov %t18 = load i32, ptr %addr 635c9a2623SMomchil Velikov %addr.1 = getelementptr i8, ptr %addr, i32 4 645c9a2623SMomchil Velikov %t19 = load i32, ptr %addr.1 655c9a2623SMomchil Velikov 665c9a2623SMomchil Velikov call void @g(i32 %t0, i32 %t1, i32 %t2, i32 %t3, i32 %t4, i32 %t5, i32 %t6, i32 %t7, 675c9a2623SMomchil Velikov i32 %t8, i32 %t9, i32 %t10, i32 %t11, i32 %t12, i32 %t13, i32 %t14, i32 %t15, i32 %t16, 685c9a2623SMomchil Velikov i32 %t17, i32 %t18, i32 %t19) 695c9a2623SMomchil Velikov ret void 705c9a2623SMomchil Velikov} 71