Closed
Description
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>
Metadata
Metadata
Assignees
Labels
No labels