Skip to content

Failed to deduce type of memcpy despite TT available #138

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
ZuseZ4 opened this issue Jul 24, 2024 · 1 comment
Closed

Failed to deduce type of memcpy despite TT available #138

ZuseZ4 opened this issue Jul 24, 2024 · 1 comment

Comments

@ZuseZ4
Copy link
Collaborator

ZuseZ4 commented Jul 24, 2024

error: src/lib.rs:135:12: in function preprocess__ZN5piprx4dist17h657d2c8133076679E void (ptr, ptr): Enzyme: Cannot deduce type of copy   call void @llvm.memcpy.p0.p0.i64(ptr align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double, [-1,72]:Float@double}" %0, ptr align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double, [-1,72]:Float@double}" %5, i64 80, i1 false) #119, !dbg !3164
; Function Attrs: mustprogress nonlazybind sanitize_hwaddress willreturn uwtable
define internal void @preprocess__ZN5piprx4dist17h657d2c8133076679E(ptr sret([10 x double]) align 8 %0, ptr align 8 %1) unnamed_addr #113 !dbg !190156 {
  %3 = tail call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) ptr @malloc(i64 16), !enzyme_fromstack !3202
  %4 = tail call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) ptr @malloc(i64 16), !enzyme_fromstack !3202
  %5 = tail call noalias nonnull dereferenceable(80) dereferenceable_or_null(80) ptr @malloc(i64 80), !enzyme_fromstack !3202
  call void @llvm.dbg.value(metadata ptr %1, metadata !190158, metadata !DIExpression()), !dbg !190171
  call void @llvm.dbg.declare(metadata ptr %5, metadata !190159, metadata !DIExpression()) #119, !dbg !190172
  call void @llvm.dbg.declare(metadata ptr %3, metadata !190163, metadata !DIExpression()) #119, !dbg !190173
  call void @llvm.dbg.declare(metadata ptr %4, metadata !190167, metadata !DIExpression()) #119, !dbg !190174
  %6 = icmp ne ptr %1, null
  call void @llvm.assume(i1 %6)
  %7 = getelementptr inbounds [10 x double], ptr %5, i64 0, i64 0, !dbg !190175
  br label %8, !dbg !190175

8:                                                ; preds = %12, %2
  %9 = phi i64 [ %10, %12 ], [ 0, %2 ]
  %10 = add nuw nsw i64 %9, 1
  %11 = icmp ult i64 %9, 10
  br i1 %11, label %12, label %14

12:                                               ; preds = %8
  %13 = getelementptr inbounds [10 x double], ptr %5, i64 0, i64 %9
  store double 0.000000e+00, ptr %13, align 8
  br label %8

14:                                               ; preds = %8
  call void @llvm.dbg.value(metadata i64 0, metadata !190161, metadata !DIExpression()), !dbg !190176
  %15 = call { i64, i64 } @"_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hd81a812a0bda06d9E"(i64 0, i64 5) #119, !dbg !190177
  %16 = extractvalue { i64, i64 } %15, 0, !dbg !190177
  %17 = extractvalue { i64, i64 } %15, 1, !dbg !190177
  %18 = getelementptr inbounds { i64, i64 }, ptr %3, i32 0, i32 0, !dbg !190177
  store i64 %16, ptr %18, align 8, !dbg !190177
  %19 = getelementptr inbounds { i64, i64 }, ptr %3, i32 0, i32 1, !dbg !190177
  store i64 %17, ptr %19, align 8, !dbg !190177
  br label %21, !dbg !190178

20:                                               ; preds = %42
  br label %21, !dbg !190173

21:                                               ; preds = %20, %14
  %22 = phi i64 [ %24, %20 ], [ 0, %14 ], !dbg !190179
  %23 = phi i64 [ 0, %14 ], [ %44, %20 ], !dbg !190179
  call void @llvm.dbg.value(metadata i64 %23, metadata !190161, metadata !DIExpression()), !dbg !190176
  %24 = add nuw nsw i64 %22, 1, !dbg !190173
  %25 = call { i64, i64 } @"_ZN4core4iter5range101_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$core..ops..range..Range$LT$A$GT$$GT$4next17h234b36616e4ca986E"(ptr align 8 %3) #119, !dbg !190173
  %26 = extractvalue { i64, i64 } %25, 0, !dbg !190173
  %27 = extractvalue { i64, i64 } %25, 1, !dbg !190173
  %28 = icmp eq i64 %26, 0, !dbg !190173
  br i1 %28, label %29, label %30, !dbg !190173

29:                                               ; preds = %21
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double, [-1,72]:Float@double}" %0, ptr align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double, [-1,72]:Float@double}" %5, i64 80, i1 false) #119, !dbg !190180
  ret void, !dbg !190181

30:                                               ; preds = %21
  call void @llvm.dbg.value(metadata i64 %27, metadata !190165, metadata !DIExpression()), !dbg !190182
  %31 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %27, i64 1) #119, !dbg !190183
  %32 = extractvalue { i64, i1 } %31, 0, !dbg !190183
  %33 = extractvalue { i64, i1 } %31, 1, !dbg !190183
  %34 = call i1 @llvm.expect.i1(i1 %33, i1 false) #119, !dbg !190183
  br i1 %34, label %41, label %35, !dbg !190183

35:                                               ; preds = %30
  %36 = call { i64, i64 } @"_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hd81a812a0bda06d9E"(i64 %32, i64 5) #119, !dbg !190183
  %37 = extractvalue { i64, i64 } %36, 0, !dbg !190183
  %38 = extractvalue { i64, i64 } %36, 1, !dbg !190183
  %39 = getelementptr inbounds { i64, i64 }, ptr %4, i32 0, i32 0, !dbg !190183
  store i64 %37, ptr %39, align 8, !dbg !190183
  %40 = getelementptr inbounds { i64, i64 }, ptr %4, i32 0, i32 1, !dbg !190183
  store i64 %38, ptr %40, align 8, !dbg !190183
  br label %42, !dbg !190184

41:                                               ; preds = %30
  call void @_ZN4core9panicking5panic17hf6199135677a2fddE(ptr align 1 @str.0.978, i64 28, ptr align 8 @anon.ff61d960785f6488f4b9f526694dd4fc.11) #120, !dbg !190183
  unreachable, !dbg !190183

42:                                               ; preds = %67, %35
  %43 = phi i64 [ %45, %67 ], [ 0, %35 ], !dbg !190185
  %44 = add i64 %23, %43, !dbg !190176
  %45 = add nuw nsw i64 %43, 1, !dbg !190174
  call void @llvm.dbg.value(metadata i64 %44, metadata !190161, metadata !DIExpression()), !dbg !190176
  %46 = call { i64, i64 } @"_ZN4core4iter5range101_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$core..ops..range..Range$LT$A$GT$$GT$4next17h234b36616e4ca986E"(ptr align 8 %4) #119, !dbg !190174
  %47 = extractvalue { i64, i64 } %46, 0, !dbg !190174
  %48 = extractvalue { i64, i64 } %46, 1, !dbg !190174
  %49 = icmp eq i64 %47, 0, !dbg !190174
  br i1 %49, label %20, label %50, !dbg !190174

50:                                               ; preds = %42
  call void @llvm.dbg.value(metadata i64 %48, metadata !190169, metadata !DIExpression()), !dbg !190186
  %51 = icmp ne ptr %1, null
  call void @llvm.assume(i1 %51)
  %52 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 3, i64 %27) #119, !dbg !190187
  %53 = extractvalue { i64, i1 } %52, 0, !dbg !190187
  %54 = extractvalue { i64, i1 } %52, 1, !dbg !190187
  %55 = call i1 @llvm.expect.i1(i1 %54, i1 false) #119, !dbg !190187
  br i1 %55, label %61, label %56, !dbg !190187

56:                                               ; preds = %50
  %57 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 3, i64 %48) #119, !dbg !190188
  %58 = extractvalue { i64, i1 } %57, 0, !dbg !190188
  %59 = extractvalue { i64, i1 } %57, 1, !dbg !190188
  %60 = call i1 @llvm.expect.i1(i1 %59, i1 false) #119, !dbg !190188
  br i1 %60, label %66, label %62, !dbg !190188

61:                                               ; preds = %50
  call void @_ZN4core9panicking5panic17hf6199135677a2fddE(ptr align 1 @str.1.979, i64 33, ptr align 8 @anon.ff61d960785f6488f4b9f526694dd4fc.12) #120, !dbg !190187
  unreachable, !dbg !190187

62:                                               ; preds = %56
  %63 = call double @_ZN5piprx10point_dist17h3c858950b64dd638E(ptr align 8 %1, i64 %53, i64 %58) #119, !dbg !190189
  %64 = icmp ult i64 %44, 10, !dbg !190190
  %65 = call i1 @llvm.expect.i1(i1 %64, i1 true) #119, !dbg !190190
  br i1 %65, label %67, label %73, !dbg !190190

66:                                               ; preds = %56
  call void @_ZN4core9panicking5panic17hf6199135677a2fddE(ptr align 1 @str.1.979, i64 33, ptr align 8 @anon.ff61d960785f6488f4b9f526694dd4fc.13) #120, !dbg !190188
  unreachable, !dbg !190188

67:                                               ; preds = %62
  %68 = getelementptr inbounds [10 x double], ptr %5, i64 0, i64 %44, !dbg !190190
  store double %63, ptr %68, align 8, !dbg !190190
  %69 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %44, i64 1) #119, !dbg !190191
  %70 = extractvalue { i64, i1 } %69, 0, !dbg !190191
  %71 = extractvalue { i64, i1 } %69, 1, !dbg !190191
  %72 = call i1 @llvm.expect.i1(i1 %71, i1 false) #119, !dbg !190191
  br i1 %72, label %74, label %42, !dbg !190191

73:                                               ; preds = %62
  call void @_ZN4core9panicking18panic_bounds_check17hd24c5614210bdda4E(i64 %44, i64 10, ptr align 8 @anon.ff61d960785f6488f4b9f526694dd4fc.14) #120, !dbg !190190
  unreachable, !dbg !190190

74:                                               ; preds = %67
  call void @_ZN4core9panicking5panic17hf6199135677a2fddE(ptr align 1 @str.0.978, i64 28, ptr align 8 @anon.ff61d960785f6488f4b9f526694dd4fc.15) #120, !dbg !190191
  unreachable, !dbg !190191
}

<analysis>
  %51 = icmp ne ptr %1, null: {[-1]:Integer}, intvals: {}
  %24 = add nuw nsw i64 %22, 1, !dbg !3157: {[-1]:Integer}, intvals: {1,}
  %7 = getelementptr inbounds [10 x double], ptr %5, i64 0, i64 0, !dbg !3159: {[-1]:Pointer}, intvals: {}
  %25 = call { i64, i64 } @"_ZN4core4iter5range101_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$core..ops..range..Range$LT$A$GT$$GT$4next17h234b36616e4ca986E"(ptr align 8 %3) #119, !dbg !3157: {}, intvals: {}
  %10 = add nuw nsw i64 %9, 1: {[-1]:Integer}, intvals: {1,2,3,4,5,6,7,8,9,10,11,}
  %48 = extractvalue { i64, i64 } %46, 1, !dbg !3158: {}, intvals: {}
ptr %0: {[-1]:Pointer}, intvals: {}
ptr %1: {[-1]:Pointer}, intvals: {}
  %31 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %27, i64 1) #119, !dbg !3167: {[8]:Integer, [9]:Integer, [10]:Integer, [11]:Integer, [12]:Integer, [13]:Integer, [14]:Integer, [15]:Integer}, intvals: {}
  %32 = extractvalue { i64, i1 } %31, 0, !dbg !3167: {}, intvals: {}
  %33 = extractvalue { i64, i1 } %31, 1, !dbg !3167: {}, intvals: {}
  %47 = extractvalue { i64, i64 } %46, 0, !dbg !3158: {}, intvals: {}
  %22 = phi i64 [ %24, %20 ], [ 0, %14 ], !dbg !3163: {[-1]:Integer}, intvals: {0,}
  %3 = tail call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) ptr @malloc(i64 16), !enzyme_fromstack !3154: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %44 = add i64 %23, %43, !dbg !3160: {[-1]:Integer}, intvals: {0,}
  %68 = getelementptr inbounds [10 x double], ptr %5, i64 0, i64 %44, !dbg !3174: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
  %69 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %44, i64 1) #119, !dbg !3175: {[-1]:Integer}, intvals: {}
  %70 = extractvalue { i64, i1 } %69, 0, !dbg !3175: {[-1]:Integer}, intvals: {}
  %71 = extractvalue { i64, i1 } %69, 1, !dbg !3175: {}, intvals: {}
  %28 = icmp eq i64 %26, 0, !dbg !3157: {[-1]:Integer}, intvals: {}
  %9 = phi i64 [ %10, %12 ], [ 0, %2 ]: {[-1]:Integer}, intvals: {0,1,2,3,4,5,6,7,8,9,10,}
  %11 = icmp ult i64 %9, 10: {[-1]:Integer}, intvals: {}
  %15 = call { i64, i64 } @"_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hd81a812a0bda06d9E"(i64 0, i64 5) #119, !dbg !3161: {[0]:Anything, [1]:Anything, [2]:Anything, [3]:Anything, [4]:Anything, [5]:Anything, [6]:Anything, [7]:Anything, [8]:Integer, [9]:Integer, [10]:Integer, [11]:Integer, [12]:Integer, [13]:Integer, [14]:Integer, [15]:Integer}, intvals: {}
  %16 = extractvalue { i64, i64 } %15, 0, !dbg !3161: {[-1]:Anything}, intvals: {}
  %23 = phi i64 [ 0, %14 ], [ %44, %20 ], !dbg !3163: {[-1]:Integer}, intvals: {0,}
  %6 = icmp ne ptr %1, null: {[-1]:Integer}, intvals: {}
  %4 = tail call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) ptr @malloc(i64 16), !enzyme_fromstack !3154: {[-1]:Pointer}, intvals: {}
  %46 = call { i64, i64 } @"_ZN4core4iter5range101_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$core..ops..range..Range$LT$A$GT$$GT$4next17h234b36616e4ca986E"(ptr align 8 %4) #119, !dbg !3158: {}, intvals: {}
  %17 = extractvalue { i64, i64 } %15, 1, !dbg !3161: {[-1]:Integer}, intvals: {}
  %18 = getelementptr inbounds { i64, i64 }, ptr %3, i32 0, i32 0, !dbg !3161: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %19 = getelementptr inbounds { i64, i64 }, ptr %3, i32 0, i32 1, !dbg !3161: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %5 = tail call noalias nonnull dereferenceable(80) dereferenceable_or_null(80) ptr @malloc(i64 80), !enzyme_fromstack !3154: {[-1]:Pointer}, intvals: {}
  %52 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 3, i64 %27) #119, !dbg !3171: {[8]:Integer, [9]:Integer, [10]:Integer, [11]:Integer, [12]:Integer, [13]:Integer, [14]:Integer, [15]:Integer}, intvals: {}
  %53 = extractvalue { i64, i1 } %52, 0, !dbg !3171: {}, intvals: {}
  %54 = extractvalue { i64, i1 } %52, 1, !dbg !3171: {}, intvals: {}
  %57 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 3, i64 %48) #119, !dbg !3172: {[8]:Integer, [9]:Integer, [10]:Integer, [11]:Integer, [12]:Integer, [13]:Integer, [14]:Integer, [15]:Integer}, intvals: {}
  %58 = extractvalue { i64, i1 } %57, 0, !dbg !3172: {}, intvals: {}
  %59 = extractvalue { i64, i1 } %57, 1, !dbg !3172: {}, intvals: {}
  %63 = call double @_ZN5piprx10point_dist17h3c858950b64dd638E(ptr align 8 %1, i64 %53, i64 %58) #119, !dbg !3173: {[-1]:Float@double}, intvals: {}
  %36 = call { i64, i64 } @"_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hd81a812a0bda06d9E"(i64 %32, i64 5) #119, !dbg !3167: {[8]:Integer, [9]:Integer, [10]:Integer, [11]:Integer, [12]:Integer, [13]:Integer, [14]:Integer, [15]:Integer}, intvals: {}
  %37 = extractvalue { i64, i64 } %36, 0, !dbg !3167: {}, intvals: {}
  %38 = extractvalue { i64, i64 } %36, 1, !dbg !3167: {[-1]:Integer}, intvals: {}
  %39 = getelementptr inbounds { i64, i64 }, ptr %4, i32 0, i32 0, !dbg !3167: {[-1]:Pointer}, intvals: {}
  %40 = getelementptr inbounds { i64, i64 }, ptr %4, i32 0, i32 1, !dbg !3167: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %26 = extractvalue { i64, i64 } %25, 0, !dbg !3157: {}, intvals: {}
  %45 = add nuw nsw i64 %43, 1, !dbg !3158: {[-1]:Integer}, intvals: {1,}
  %49 = icmp eq i64 %47, 0, !dbg !3158: {[-1]:Integer}, intvals: {}
  %64 = icmp ult i64 %44, 10, !dbg !3174: {[-1]:Integer}, intvals: {}
  %27 = extractvalue { i64, i64 } %25, 1, !dbg !3157: {}, intvals: {}
  %13 = getelementptr inbounds [10 x double], ptr %5, i64 0, i64 %9: {[-1]:Pointer}, intvals: {}
  %43 = phi i64 [ %45, %67 ], [ 0, %35 ], !dbg !3169: {[-1]:Integer}, intvals: {0,}
i64 10: {[-1]:Integer}, intvals: {10,}
ptr null: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {0,}
i64 3: {[-1]:Integer}, intvals: {3,}
i64 5: {[-1]:Integer}, intvals: {5,}
i64 0: {[-1]:Anything}, intvals: {0,}
i64 1: {[-1]:Integer}, intvals: {1,}
double 0.000000e+00: {[-1]:Anything}, intvals: {}
</analysis>
@ZuseZ4
Copy link
Collaborator Author

ZuseZ4 commented Jul 25, 2024

@wsmoses This was the one due to which I added the int TT.
It's based on commit 1c9e6061f9a3166cf2c26a36063442dec297c2dd in a private repo, I can add you if you want to investigate. But I can confirm that
closed by #140

(I'm trying to reproduce it through ENZYME_OPT=1, but rust still seems to have a slightly different compilation pipeline, so if that's not enough time to reproduce, I probably won't have enough time to investigate further).

Update2: Trying to create an llvm-ir + opt reproducer failed, I get another of those int<>ptr illegal TA issues instead.

error: <unknown>:0:0: in function _ZN4core5slice4iter95_$LT$impl$u20$core..iter..traits..collect..IntoIterator$u20$for$u20$$RF$mut$u20$$u5b$T$u5d$$GT$9into_iter17h3d2e6eccae789456E { ptr, ptr } (ptr, i64): Enzyme: <analysis>
ptr %0: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
i64 %1: {[-1]:Integer}, intvals: {10,}
  %3 = alloca i64, align 8: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %4 = alloca i64, align 8: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %5 = alloca ptr, align 8: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Float@double}, intvals: {}
  %6 = alloca { ptr, i64 }, align 8: {[-1]:Pointer}, intvals: {}
  %7 = alloca ptr, align 8: {[-1]:Pointer}, intvals: {}
  %8 = alloca ptr, align 8: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Float@double}, intvals: {}
  %9 = alloca { ptr, ptr }, align 8: {[-1]:Pointer}, intvals: {}
  %10 = getelementptr inbounds { ptr, i64 }, ptr %6, i32 0, i32 0: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Float@double}, intvals: {}
  %11 = getelementptr inbounds { ptr, i64 }, ptr %6, i32 0, i32 1: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %13 = getelementptr inbounds double, ptr %0, i64 %1, !dbg !3226: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
  %15 = inttoptr i64 %1 to ptr, !dbg !3238: {[-1]:Integer}, intvals: {10,}
  %25 = insertvalue { ptr, ptr } %24, ptr %23, 1, !dbg !3242: {}, intvals: {}
</analysis>
Illegal updateAnalysis prev:{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Float@double} new: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   %8 = alloca ptr, align 8 origin=  store ptr %15, ptr %8, align 8, !dbg !3238

Given that I fixed it, I don't really have time to look further into why I had to fix it in the first place, sorry.
But lmk if you want to have access to the Rust reproduce.r

@ZuseZ4 ZuseZ4 closed this as completed Jul 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant