program am
integer::H,W
integer,allocatable,dimension(:,:)::maze,DP
character(100)::S
integer::dx(2)=[-1,0],dy(2)=[0,-1]
integer::i,j,k
read*,H,W
allocate(maze(H,W))
maze=0
do i=1,H
    read*,S
    do j=1,W
        if(S(j:j)=="#")maze(i,j)=1
    end do
end do
allocate(DP(H,W))
DP=huge(i)/2
DP(1,1)=maze(1,1)
do i=1,H
    do j=1,W
        do k=1,2
            DP(i,j)=min(DP(i,j),&
            DP(max(1,i+dx(k)),max(1,j+dy(k)))+merge(1,0,maze(max(1,i+dx(k)),max(1,j+dy(k)))==0.and.maze(i,j)==1))
        end do
    end do
end do
print"(I0)",DP(H,W)
end program am
; ModuleID = 'FIRModule'
source_filename = "FIRModule"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"

@_QFEdp.0 = internal unnamed_addr global ptr null
@_QFEdp.7 = internal unnamed_addr global i64 1
@_QFEdp.8 = internal unnamed_addr global i64 0
@_QFEdp.10 = internal unnamed_addr global i64 1
@_QFEmaze.0 = internal unnamed_addr global ptr null
@_QFEmaze.7 = internal unnamed_addr global i64 1
@_QFEmaze.8 = internal unnamed_addr global i64 0
@_QFEmaze.10 = internal unnamed_addr global i64 1
@_QFEs = internal global [100 x i8] undef
@_QQcl.2f2ab2556816a580f9e737c26632b92e = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_2077/source.f\00"
@_QQcl.16373402fa3425c6e46827601abb88fa = linkonce constant [76 x i8] c"array left hand side must be allocated when the right hand side is a scalar\00"
@_QQcl.23 = linkonce constant [1 x i8] c"#"
@_QQcl.28493029 = linkonce constant [4 x i8] c"(I0)"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #0

define void @_QQmain() local_unnamed_addr {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.2f2ab2556816a580f9e737c26632b92e, i32 7)
  %4 = call i1 @_FortranAioInputInteger(ptr %3, ptr nonnull %1, i32 4)
  %5 = call i1 @_FortranAioInputInteger(ptr %3, ptr nonnull %2, i32 4)
  %6 = call i32 @_FortranAioEndIoStatement(ptr %3)
  %7 = load i32, ptr %1, align 4, !tbaa !3
  %8 = load i32, ptr %2, align 4, !tbaa !3
  %9 = call i32 @llvm.smax.i32(i32 %7, i32 0)
  %10 = zext i32 %9 to i64
  %11 = call i32 @llvm.smax.i32(i32 %8, i32 0)
  %12 = zext i32 %11 to i64
  %13 = shl nuw nsw i64 %10, 2
  %14 = mul nuw i64 %13, %12
  %15 = call ptr @malloc(i64 %14)
  store ptr %15, ptr @_QFEmaze.0, align 8, !tbaa !7
  store i64 1, ptr @_QFEmaze.7, align 8, !tbaa !7
  store i64 %10, ptr @_QFEmaze.8, align 8, !tbaa !7
  store i64 1, ptr @_QFEmaze.10, align 8, !tbaa !7
  %.not = icmp eq ptr %15, null
  br i1 %.not, label %21, label %.preheader628

.preheader628:                                    ; preds = %0
  %.not640 = icmp slt i32 %8, 1
  br i1 %.not640, label %._crit_edge629, label %.preheader627.lr.ph

.preheader627.lr.ph:                              ; preds = %.preheader628
  %.not643 = icmp slt i32 %7, 1
  br i1 %.not643, label %._crit_edge632, label %._crit_edge629.thread

._crit_edge629.thread:                            ; preds = %.preheader627.lr.ph
  %16 = call i64 @llvm.smax.i64(i64 %10, i64 1)
  %17 = call i64 @llvm.smin.i64(i64 %12, i64 1)
  %smin646 = add nuw nsw i64 %17, 4611686018427387903
  %18 = sub nsw i64 %12, %smin646
  %19 = mul i64 %16, %18
  %20 = shl i64 %19, 2
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %15, i8 0, i64 %20, i1 false), !tbaa !3
  br label %.lr.ph631.preheader

21:                                               ; preds = %0
  %22 = call {} @_FortranAReportFatalUserError(ptr nonnull @_QQcl.16373402fa3425c6e46827601abb88fa, ptr nonnull @_QQcl.2f2ab2556816a580f9e737c26632b92e, i32 9)
  %.pre.pre = load i32, ptr %1, align 4, !tbaa !3
  %.unpack603.unpack604.unpack.pre = load i64, ptr @_QFEmaze.10, align 8, !tbaa !7
  %.unpack603.unpack.unpack.pre = load i64, ptr @_QFEmaze.7, align 8, !tbaa !7
  %23 = icmp slt i32 %7, 1
  %24 = select i1 %23, i64 1, i64 %.unpack603.unpack.unpack.pre
  %25 = icmp slt i32 %8, 1
  %26 = select i1 %25, i64 1, i64 %.unpack603.unpack604.unpack.pre
  store ptr %15, ptr @_QFEmaze.0, align 8, !tbaa !7
  store i64 %24, ptr @_QFEmaze.7, align 8, !tbaa !7
  store i64 %10, ptr @_QFEmaze.8, align 8, !tbaa !7
  store i64 %26, ptr @_QFEmaze.10, align 8, !tbaa !7
  br label %._crit_edge629

._crit_edge629:                                   ; preds = %.preheader628, %21
  %27 = phi i32 [ %.pre.pre, %21 ], [ %7, %.preheader628 ]
  %28 = icmp sgt i32 %27, 0
  br i1 %28, label %.lr.ph631.preheader, label %._crit_edge632

.lr.ph631.preheader:                              ; preds = %._crit_edge629.thread, %._crit_edge629
  %29 = phi i32 [ %7, %._crit_edge629.thread ], [ %27, %._crit_edge629 ]
  %30 = zext i32 %29 to i64
  br label %.lr.ph631

.lr.ph631:                                        ; preds = %.lr.ph631.preheader, %._crit_edge
  %indvars.iv648 = phi i64 [ 1, %.lr.ph631.preheader ], [ %indvars.iv.next649, %._crit_edge ]
  %31 = call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.2f2ab2556816a580f9e737c26632b92e, i32 11)
  %32 = call i1 @_FortranAioInputAscii(ptr %31, ptr nonnull @_QFEs, i64 100)
  %33 = call i32 @_FortranAioEndIoStatement(ptr %31)
  %34 = load i32, ptr %2, align 4, !tbaa !3
  %35 = icmp sgt i32 %34, 0
  br i1 %35, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.lr.ph631
  %36 = zext i32 %34 to i64
  br label %37

37:                                               ; preds = %.lr.ph, %48
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %48 ]
  %38 = add nsw i64 %indvars.iv, -1
  %39 = getelementptr [100 x [1 x i8]], ptr @_QFEs, i64 0, i64 %38
  %40 = call i32 @_FortranACharacterCompareScalar1(ptr %39, ptr nonnull @_QQcl.23, i64 1, i64 1)
  %41 = icmp eq i32 %40, 0
  br i1 %41, label %42, label %48

42:                                               ; preds = %37
  %.unpack580 = load ptr, ptr @_QFEmaze.0, align 8, !tbaa !7
  %.unpack587.unpack.unpack = load i64, ptr @_QFEmaze.7, align 8, !tbaa !7
  %.unpack587.unpack.unpack590 = load i64, ptr @_QFEmaze.8, align 8, !tbaa !7
  %.unpack587.unpack588.unpack = load i64, ptr @_QFEmaze.10, align 8, !tbaa !7
  %43 = sub i64 %indvars.iv648, %.unpack587.unpack.unpack
  %44 = sub i64 %indvars.iv, %.unpack587.unpack588.unpack
  %45 = mul i64 %44, %.unpack587.unpack.unpack590
  %46 = add i64 %43, %45
  %47 = getelementptr i32, ptr %.unpack580, i64 %46
  store i32 1, ptr %47, align 4, !tbaa !3
  br label %48

48:                                               ; preds = %42, %37
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv, %36
  br i1 %exitcond.not, label %._crit_edge, label %37

._crit_edge:                                      ; preds = %48, %.lr.ph631
  %indvars.iv.next649 = add nuw nsw i64 %indvars.iv648, 1
  %exitcond651.not = icmp eq i64 %indvars.iv648, %30
  br i1 %exitcond651.not, label %._crit_edge632.loopexit, label %.lr.ph631

._crit_edge632.loopexit:                          ; preds = %._crit_edge
  %.pre666 = load i32, ptr %1, align 4, !tbaa !3
  br label %._crit_edge632

._crit_edge632:                                   ; preds = %.preheader627.lr.ph, %._crit_edge632.loopexit, %._crit_edge629
  %49 = phi i32 [ %.pre666, %._crit_edge632.loopexit ], [ %27, %._crit_edge629 ], [ %7, %.preheader627.lr.ph ]
  %50 = load i32, ptr %2, align 4, !tbaa !3
  %51 = call i32 @llvm.smax.i32(i32 %49, i32 0)
  %52 = zext i32 %51 to i64
  %53 = call i32 @llvm.smax.i32(i32 %50, i32 0)
  %54 = zext i32 %53 to i64
  %55 = shl nuw nsw i64 %52, 2
  %56 = mul nuw i64 %55, %54
  %57 = call ptr @malloc(i64 %56)
  store ptr %57, ptr @_QFEdp.0, align 8, !tbaa !7
  store i64 1, ptr @_QFEdp.7, align 8, !tbaa !7
  store i64 %52, ptr @_QFEdp.8, align 8, !tbaa !7
  store i64 1, ptr @_QFEdp.10, align 8, !tbaa !7
  %.not472 = icmp eq ptr %57, null
  br i1 %.not472, label %76, label %.preheader626

.preheader626:                                    ; preds = %._crit_edge632
  %.not641 = icmp slt i32 %50, 1
  %.not642 = icmp slt i32 %49, 1
  %or.cond = select i1 %.not641, i1 true, i1 %.not642
  br i1 %or.cond, label %._crit_edge635, label %.preheader625.us.preheader

.preheader625.us.preheader:                       ; preds = %.preheader626
  %58 = call i64 @llvm.smax.i64(i64 %52, i64 1)
  %min.iters.check = icmp ult i64 %58, 8
  %n.vec = and i64 %58, 2147483640
  %ind.end = sub nsw i64 %52, %n.vec
  %cmp.n = icmp eq i64 %58, %n.vec
  br label %.preheader625.us

.preheader625.us:                                 ; preds = %.preheader625.us.preheader, %._crit_edge634.us
  %59 = phi i64 [ %74, %._crit_edge634.us ], [ %54, %.preheader625.us.preheader ]
  %60 = phi i64 [ %73, %._crit_edge634.us ], [ 0, %.preheader625.us.preheader ]
  %61 = mul nuw nsw i64 %60, %52
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.preheader625.us, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.preheader625.us ]
  %62 = add nuw nsw i64 %index, %61
  %63 = getelementptr i32, ptr %57, i64 %62
  store <4 x i32> <i32 1073741823, i32 1073741823, i32 1073741823, i32 1073741823>, ptr %63, align 4, !tbaa !3
  %64 = getelementptr i32, ptr %63, i64 4
  store <4 x i32> <i32 1073741823, i32 1073741823, i32 1073741823, i32 1073741823>, ptr %64, align 4, !tbaa !3
  %index.next = add nuw i64 %index, 8
  %65 = icmp eq i64 %index.next, %n.vec
  br i1 %65, label %middle.block, label %vector.body, !llvm.loop !9

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge634.us, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %.preheader625.us, %middle.block
  %.ph = phi i64 [ %52, %.preheader625.us ], [ %ind.end, %middle.block ]
  %.ph677 = phi i64 [ 0, %.preheader625.us ], [ %n.vec, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %66 = phi i64 [ %71, %scalar.ph ], [ %.ph, %scalar.ph.preheader ]
  %67 = phi i64 [ %68, %scalar.ph ], [ %.ph677, %scalar.ph.preheader ]
  %68 = add nuw nsw i64 %67, 1
  %69 = add nuw nsw i64 %67, %61
  %70 = getelementptr i32, ptr %57, i64 %69
  store i32 1073741823, ptr %70, align 4, !tbaa !3
  %71 = add nsw i64 %66, -1
  %72 = icmp sgt i64 %66, 1
  br i1 %72, label %scalar.ph, label %._crit_edge634.us, !llvm.loop !12

._crit_edge634.us:                                ; preds = %scalar.ph, %middle.block
  %73 = add nuw nsw i64 %60, 1
  %74 = add nsw i64 %59, -1
  %75 = icmp sgt i64 %59, 1
  br i1 %75, label %.preheader625.us, label %._crit_edge635

76:                                               ; preds = %._crit_edge632
  %77 = call {} @_FortranAReportFatalUserError(ptr nonnull @_QQcl.16373402fa3425c6e46827601abb88fa, ptr nonnull @_QQcl.2f2ab2556816a580f9e737c26632b92e, i32 17)
  %.pre671.pre = load i32, ptr %1, align 4, !tbaa !3
  %.unpack559.unpack560.unpack.pre = load i64, ptr @_QFEdp.10, align 8, !tbaa !7
  %.unpack559.unpack.unpack.pre = load i64, ptr @_QFEdp.7, align 8, !tbaa !7
  %78 = icmp slt i32 %49, 1
  %79 = select i1 %78, i64 1, i64 %.unpack559.unpack.unpack.pre
  %80 = icmp slt i32 %50, 1
  %81 = select i1 %80, i64 1, i64 %.unpack559.unpack560.unpack.pre
  store ptr %57, ptr @_QFEdp.0, align 8, !tbaa !7
  store i64 %79, ptr @_QFEdp.7, align 8, !tbaa !7
  store i64 %52, ptr @_QFEdp.8, align 8, !tbaa !7
  store i64 %81, ptr @_QFEdp.10, align 8, !tbaa !7
  br label %._crit_edge635

._crit_edge635:                                   ; preds = %._crit_edge634.us, %.preheader626, %76
  %82 = phi i32 [ %.pre671.pre, %76 ], [ %49, %.preheader626 ], [ %49, %._crit_edge634.us ]
  %.unpack495.unpack496.unpack = phi i64 [ %81, %76 ], [ 1, %.preheader626 ], [ 1, %._crit_edge634.us ]
  %.unpack495.unpack.unpack = phi i64 [ %79, %76 ], [ 1, %.preheader626 ], [ 1, %._crit_edge634.us ]
  %.unpack = load ptr, ptr @_QFEmaze.0, align 8, !tbaa !7
  %.unpack479.unpack.unpack = load i64, ptr @_QFEmaze.7, align 8, !tbaa !7
  %.unpack479.unpack.unpack482 = load i64, ptr @_QFEmaze.8, align 8, !tbaa !7
  %.unpack479.unpack480.unpack = load i64, ptr @_QFEmaze.10, align 8, !tbaa !7
  %83 = sub i64 1, %.unpack479.unpack.unpack
  %84 = sub i64 1, %.unpack479.unpack480.unpack
  %85 = mul i64 %84, %.unpack479.unpack.unpack482
  %86 = add i64 %83, %85
  %87 = getelementptr i32, ptr %.unpack, i64 %86
  %88 = load i32, ptr %87, align 4, !tbaa !3
  %89 = sub i64 1, %.unpack495.unpack.unpack
  %90 = sub i64 1, %.unpack495.unpack496.unpack
  %91 = mul i64 %90, %52
  %92 = add i64 %89, %91
  %93 = getelementptr i32, ptr %57, i64 %92
  store i32 %88, ptr %93, align 4, !tbaa !3
  %94 = icmp sgt i32 %82, 0
  br i1 %94, label %.lr.ph638.preheader, label %._crit_edge639

.lr.ph638.preheader:                              ; preds = %._crit_edge635
  %95 = zext i32 %82 to i64
  %.pre672 = load i32, ptr %2, align 4, !tbaa !3
  %96 = icmp sgt i32 %.pre672, 0
  %97 = zext i32 %.pre672 to i64
  br label %.lr.ph638

.lr.ph638:                                        ; preds = %.lr.ph638.preheader, %._crit_edge636
  %indvars.iv660 = phi i64 [ 1, %.lr.ph638.preheader ], [ %indvars.iv.next661, %._crit_edge636 ]
  br i1 %96, label %.preheader.lr.ph, label %._crit_edge636

.preheader.lr.ph:                                 ; preds = %.lr.ph638
  %98 = sub i64 %indvars.iv660, %.unpack495.unpack.unpack
  %99 = sub i64 %indvars.iv660, %.unpack479.unpack.unpack
  %100 = trunc i64 %indvars.iv660 to i32
  %101 = add i32 %100, -1
  %102 = call i32 @llvm.smax.i32(i32 %101, i32 1)
  %103 = zext i32 %102 to i64
  %104 = sub i64 %103, %.unpack495.unpack.unpack
  %105 = sub i64 %103, %.unpack479.unpack.unpack
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %.preheader
  %indvars.iv656 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next657, %.preheader ]
  %106 = sub i64 %indvars.iv656, %.unpack495.unpack496.unpack
  %107 = mul i64 %106, %52
  %108 = add i64 %98, %107
  %109 = getelementptr i32, ptr %57, i64 %108
  %110 = sub i64 %indvars.iv656, %.unpack479.unpack480.unpack
  %111 = mul i64 %110, %.unpack479.unpack.unpack482
  %112 = add i64 %99, %111
  %113 = getelementptr i32, ptr %.unpack, i64 %112
  %114 = load i32, ptr %109, align 4, !tbaa !3
  %115 = add i64 %104, %107
  %116 = getelementptr i32, ptr %57, i64 %115
  %117 = load i32, ptr %116, align 4, !tbaa !3
  %118 = add i64 %105, %111
  %119 = getelementptr i32, ptr %.unpack, i64 %118
  %120 = load i32, ptr %119, align 4, !tbaa !3
  %121 = icmp eq i32 %120, 0
  %122 = load i32, ptr %113, align 4, !tbaa !3
  %123 = icmp eq i32 %122, 1
  %124 = and i1 %121, %123
  %125 = zext i1 %124 to i32
  %126 = add i32 %117, %125
  %127 = call i32 @llvm.smin.i32(i32 %114, i32 %126)
  store i32 %127, ptr %109, align 4, !tbaa !3
  %128 = trunc i64 %indvars.iv656 to i32
  %129 = add i32 %128, -1
  %130 = call i32 @llvm.smax.i32(i32 %129, i32 1)
  %131 = zext i32 %130 to i64
  %132 = sub i64 %131, %.unpack495.unpack496.unpack
  %133 = mul i64 %132, %52
  %134 = add i64 %98, %133
  %135 = getelementptr i32, ptr %57, i64 %134
  %136 = load i32, ptr %135, align 4, !tbaa !3
  %137 = sub i64 %131, %.unpack479.unpack480.unpack
  %138 = mul i64 %137, %.unpack479.unpack.unpack482
  %139 = add i64 %99, %138
  %140 = getelementptr i32, ptr %.unpack, i64 %139
  %141 = load i32, ptr %140, align 4, !tbaa !3
  %142 = icmp eq i32 %141, 0
  %143 = load i32, ptr %113, align 4, !tbaa !3
  %144 = icmp eq i32 %143, 1
  %145 = and i1 %142, %144
  %146 = zext i1 %145 to i32
  %147 = add i32 %136, %146
  %148 = call i32 @llvm.smin.i32(i32 %127, i32 %147)
  store i32 %148, ptr %109, align 4, !tbaa !3
  %indvars.iv.next657 = add nuw nsw i64 %indvars.iv656, 1
  %exitcond659.not = icmp eq i64 %indvars.iv656, %97
  br i1 %exitcond659.not, label %._crit_edge636, label %.preheader

._crit_edge636:                                   ; preds = %.preheader, %.lr.ph638
  %indvars.iv.next661 = add nuw nsw i64 %indvars.iv660, 1
  %exitcond663.not = icmp eq i64 %indvars.iv660, %95
  br i1 %exitcond663.not, label %._crit_edge639, label %.lr.ph638

._crit_edge639:                                   ; preds = %._crit_edge636, %._crit_edge635
  %149 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.28493029, i64 4, ptr null, i32 -1, ptr nonnull @_QQcl.2f2ab2556816a580f9e737c26632b92e, i32 27)
  %.unpack504 = load ptr, ptr @_QFEdp.0, align 8, !tbaa !7
  %.unpack511.unpack.unpack = load i64, ptr @_QFEdp.7, align 8, !tbaa !7
  %.unpack511.unpack.unpack514 = load i64, ptr @_QFEdp.8, align 8, !tbaa !7
  %.unpack511.unpack512.unpack = load i64, ptr @_QFEdp.10, align 8, !tbaa !7
  %150 = load i32, ptr %1, align 4, !tbaa !3
  %151 = sext i32 %150 to i64
  %152 = sub i64 %151, %.unpack511.unpack.unpack
  %153 = load i32, ptr %2, align 4, !tbaa !3
  %154 = sext i32 %153 to i64
  %155 = sub i64 %154, %.unpack511.unpack512.unpack
  %156 = mul i64 %155, %.unpack511.unpack.unpack514
  %157 = add i64 %152, %156
  %158 = getelementptr i32, ptr %.unpack504, i64 %157
  %159 = load i32, ptr %158, align 4, !tbaa !3
  %160 = call i1 @_FortranAioOutputInteger32(ptr %149, i32 %159)
  %161 = call i32 @_FortranAioEndIoStatement(ptr %149)
  ret void
}

declare ptr @_FortranAioBeginExternalListInput(i32, ptr, i32) local_unnamed_addr

declare i1 @_FortranAioInputInteger(ptr, ptr, i32) local_unnamed_addr

declare i32 @_FortranAioEndIoStatement(ptr) local_unnamed_addr

declare {} @_FortranAReportFatalUserError(ptr, ptr, i32) local_unnamed_addr

declare i1 @_FortranAioInputAscii(ptr, ptr, i64) local_unnamed_addr

declare i32 @_FortranACharacterCompareScalar1(ptr, ptr, i64, i64) local_unnamed_addr

declare ptr @_FortranAioBeginExternalFormattedOutput(ptr, i64, ptr, i32, ptr, i32) local_unnamed_addr

declare i1 @_FortranAioOutputInteger32(ptr, i32) local_unnamed_addr

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smin.i64(i64, i64) #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

attributes #0 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }

!llvm.module.flags = !{!0, !1, !2}

!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{!4, !4, i64 0}
!4 = !{!"any data access", !5, i64 0}
!5 = !{!"any access", !6, i64 0}
!6 = !{!"Flang Type TBAA Root"}
!7 = !{!8, !8, i64 0}
!8 = !{!"descriptor member", !5, i64 0}
!9 = distinct !{!9, !10, !11}
!10 = !{!"llvm.loop.isvectorized", i32 1}
!11 = !{!"llvm.loop.unroll.runtime.disable"}
!12 = distinct !{!12, !11, !10}
