; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5 ; RUN: opt < %s -passes='print' -disable-output -delinearize-use-fixed-size-array-heuristic 2>&1 | FileCheck %s ; Pseudo-code: ; ; arr[10][20]; ; ; for i=0 to N ; for j=0 to M ; a[i][j]; ; @test_array_10x20 = global [10 x [20 x i32]] zeroinitializer ; Function that accesses a 2D array with dimensions [10][20]. define void @test_2d_array(i64 %i, i64 %j, i64 %N, i64 %M) { ; CHECK-LABEL: 'test_2d_array' ; CHECK-NEXT: Inst: %val = load i32, ptr %gepij, align 4 ; CHECK-NEXT: AccessFunction: {{\{\{}}0,+,80}<%for.i>,+,4}<%for.j> ; CHECK-NEXT: Base offset: @test_array_10x20 ; CHECK-NEXT: ArrayDecl[UnknownSize][20] with elements of 4 bytes. ; CHECK-NEXT: ArrayRef[{0,+,1}<%for.i>][{0,+,1}<%for.j>] ; CHECK-NEXT: Delinearization validation: Failed ; entry: br label %for.i for.i: %i.cur = phi i64 [ 0, %entry ], [ %i.next, %for.j.end ] %gepi = getelementptr inbounds nuw [20 x i32], ptr @test_array_10x20, i64 %i.cur %i.cmp = icmp slt i64 %i.cur, %N br i1 %i.cmp, label %for.j, label %exit for.j: %j.cur = phi i64 [ 0, %for.i ], [ %j.next, %for.j ] %gepij = getelementptr inbounds nuw i32, ptr %gepi, i64 %j.cur %val = load i32, ptr %gepij, align 4 %j.next = add i64 %j.cur, 1 %j.cmp = icmp slt i64 %j.next, %M br i1 %j.cmp, label %for.j, label %for.j.end for.j.end: %i.next = add i64 %i.cur, 1 br label %for.i exit: ret void }