blob: 8feac4ee36f59b0e5f4f03155d1197469ade2fc6 [file] [log] [blame] [edit]
; RUN: if [ %llvmver -lt 16 ]; then %opt < %s %loadEnzyme -print-activity-analysis -activity-analysis-func=f -o /dev/null | FileCheck %s; fi
; RUN: %opt < %s %newLoadEnzyme -passes="print-activity-analysis" -activity-analysis-func=f -S | FileCheck %s
declare noalias double** @ijl_alloc_array_1d() inaccessiblememonly
define double @f(double** %i2, double %arg) {
bb:
br label %bb3
bb3: ; preds = %bb3, %bb
%i5 = phi i64 [ 0, %bb ], [ %i16, %bb3 ]
%i4 = phi double** [ %i2, %bb ], [ %i6, %bb3 ]
%i6 = call noalias nonnull double** @ijl_alloc_array_1d()
%i9 = load double*, double** %i4, align 8
%i10 = load double, double* %i9, align 8
%i14 = load double*, double** %i6, align 8
store double %arg, double* %i14, align 8
%i16 = add i64 %i5, 1
%i15 = icmp eq i64 %i5, 2
br i1 %i15, label %bb17, label %bb3
bb17: ; preds = %bb3
ret double %i10
}
; CHECK: double** %i2: icv:0
; CHECK-NEXT: double %arg: icv:0
; CHECK-NEXT: bb
; CHECK-NEXT: br label %bb3: icv:1 ici:1
; CHECK-NEXT: bb3
; CHECK-NEXT: %i5 = phi i64 [ 0, %bb ], [ %i16, %bb3 ]: icv:1 ici:1
; CHECK-NEXT: %i4 = phi double** [ %i2, %bb ], [ %i6, %bb3 ]: icv:0 ici:1
; CHECK-NEXT: %i6 = call noalias nonnull double** @ijl_alloc_array_1d(): icv:0 ici:1
; CHECK-NEXT: %i9 = load double*, double** %i4, align 8: icv:0 ici:1
; CHECK-NEXT: %i10 = load double, double* %i9, align 8: icv:0 ici:0
; CHECK-NEXT: %i14 = load double*, double** %i6, align 8: icv:0 ici:1
; CHECK-NEXT: store double %arg, double* %i14, align 8: icv:1 ici:0
; CHECK-NEXT: %i16 = add i64 %i5, 1: icv:1 ici:1
; CHECK-NEXT: %i15 = icmp eq i64 %i5, 2: icv:1 ici:1
; CHECK-NEXT: br i1 %i15, label %bb17, label %bb3: icv:1 ici:1
; CHECK-NEXT: bb17
; CHECK-NEXT: ret double %i10: icv:1 ici:1