We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
don't know how to handle operand
Shook this out with try_repeat:
---- lang_tests::unroll_safe_implies_noinline.c status ---- Error ---- lang_tests::unroll_safe_implies_noinline.c stderr ---- --- Begin aot --- source_filename = "ld-temp.o" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" %YkCtrlPointVars = type { ptr, ptr, ptr, ptr, ptr } %struct.YkLocation = type { i64 } @shadowstack_0 = global ptr null ; Function Attrs: noinline nounwind optnone uwtable define dso_local void @never_aot_inline(i32 noundef %0) #0 { %2 = load ptr, ptr @shadowstack_0, align 8 %3 = getelementptr i8, ptr %2, i32 0 store i32 %0, ptr %3, align 4 br label %4 4: ; preds = %8, %1 %5 = load i32, ptr %3, align 4 %6 = add nsw i32 %5, -1 store i32 %6, ptr %3, align 4 %7 = icmp eq i32 %5, 0 call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4, i32 0, ptr %2, ptr %3, i1 %7) br i1 %7, label %12, label %8 8: ; preds = %4 %9 = load i32, ptr %3, align 4 %10 = getelementptr i8, ptr %2, i32 16 store ptr %10, ptr @shadowstack_0, align 8 %11 = call i32 @call_me(i32 noundef %9) #5 call void (i64, i32, ...) @llvm.experimental.stackmap(i64 3, i32 0, ptr %2, ptr %3, i32 %9) store ptr %2, ptr @shadowstack_0, align 8 br label %4, !llvm.loop !6 12: ; preds = %4 br label %14 13: ; preds = %14 ret void 14: ; preds = %12 br label %13 } declare dso_local i32 @call_me(i32 noundef) #1 ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #2 { %3 = alloca %YkCtrlPointVars, align 8 %4 = call ptr @malloc(i64 1000000) call void (i64, i32, ...) @llvm.experimental.stackmap(i64 9, i32 0, ptr %3) store ptr %4, ptr @shadowstack_0, align 8 %5 = alloca ptr, align 8 %6 = alloca %struct.YkLocation, align 8 %7 = getelementptr i8, ptr %4, i32 0 %8 = getelementptr i8, ptr %4, i32 16 store ptr %8, ptr @shadowstack_0, align 8 %9 = call ptr @yk_mt_new(ptr noundef null) #5 call void (i64, i32, ...) @llvm.experimental.stackmap(i64 1, i32 0, ptr %3, ptr %4, ptr %5, ptr %6, ptr %7) store ptr %4, ptr @shadowstack_0, align 8 store ptr %9, ptr %5, align 8 %10 = getelementptr i8, ptr %4, i32 16 store ptr %10, ptr @shadowstack_0, align 8 call void @yk_mt_hot_threshold_set(ptr noundef %9, i32 noundef 0) #5 call void (i64, i32, ...) @llvm.experimental.stackmap(i64 0, i32 0, ptr %3, ptr %4, ptr %5, ptr %6, ptr %7, ptr %9) store ptr %4, ptr @shadowstack_0, align 8 %11 = getelementptr i8, ptr %4, i32 16 store ptr %11, ptr @shadowstack_0, align 8 %12 = call i64 @yk_location_new() #5 call void (i64, i32, ...) @llvm.experimental.stackmap(i64 2, i32 0, ptr %3, ptr %4, ptr %5, ptr %6, ptr %7) store ptr %4, ptr @shadowstack_0, align 8 store i64 %12, ptr %6, align 8 store i32 4, ptr %7, align 4 call void asm sideeffect "", "=*r|m,0,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(%struct.YkLocation) %6, i64 %12) #5, !srcloc !8 %13 = load i32, ptr %7, align 4 call void asm sideeffect "", "=*r|m,0,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) %7, i32 %13) #5, !srcloc !9 br label %14 14: ; preds = %17, %2 %15 = load i32, ptr %7, align 4 %16 = icmp sgt i32 %15, 0 call void (i64, i32, ...) @llvm.experimental.stackmap(i64 5, i32 0, ptr %3, ptr %4, ptr %5, ptr %6, ptr %7, i1 %16) br i1 %16, label %17, label %30 17: ; preds = %14 %18 = load ptr, ptr %5, align 8 %19 = getelementptr i8, ptr %4, i32 16 store ptr %19, ptr @shadowstack_0, align 8 %20 = getelementptr %YkCtrlPointVars, ptr %3, i32 0, i32 0 store ptr %4, ptr %20, align 8 %21 = getelementptr %YkCtrlPointVars, ptr %3, i32 0, i32 1 store ptr %5, ptr %21, align 8 %22 = getelementptr %YkCtrlPointVars, ptr %3, i32 0, i32 2 store ptr %6, ptr %22, align 8 %23 = getelementptr %YkCtrlPointVars, ptr %3, i32 0, i32 3 store ptr %7, ptr %23, align 8 %24 = getelementptr %YkCtrlPointVars, ptr %3, i32 0, i32 4 store ptr %18, ptr %24, align 8 %25 = call ptr @llvm.frameaddress.p0(i32 0) call void @__ykrt_control_point(ptr %18, ptr %6, ptr %3, ptr %25) call void (i64, i32, ...) @llvm.experimental.stackmap(i64 10, i32 0, ptr %3, ptr %4, ptr %5, ptr %6, ptr %7, ptr %18, ptr %25) store ptr %4, ptr @shadowstack_0, align 8 %26 = load i32, ptr %7, align 4 %27 = getelementptr i8, ptr %4, i32 16 store ptr %27, ptr @shadowstack_0, align 8 call void @never_aot_inline(i32 noundef %26) call void (i64, i32, ...) @llvm.experimental.stackmap(i64 6, i32 0, ptr %3, ptr %4, ptr %5, ptr %6, ptr %7, i32 %26) store ptr %4, ptr @shadowstack_0, align 8 %28 = load i32, ptr %7, align 4 %29 = add nsw i32 %28, -1 store i32 %29, ptr %7, align 4 br label %14, !llvm.loop !10 30: ; preds = %14 %31 = load i64, ptr %6, align 8 %32 = getelementptr i8, ptr %4, i32 16 store ptr %32, ptr @shadowstack_0, align 8 call void @yk_location_drop(i64 %31) #5 call void (i64, i32, ...) @llvm.experimental.stackmap(i64 7, i32 0, ptr %4, ptr %5, i64 %31) store ptr %4, ptr @shadowstack_0, align 8 %33 = load ptr, ptr %5, align 8 %34 = getelementptr i8, ptr %4, i32 16 store ptr %34, ptr @shadowstack_0, align 8 call void @yk_mt_drop(ptr noundef %33) #5 call void (i64, i32, ...) @llvm.experimental.stackmap(i64 8, i32 0, ptr %4, ptr %33) store ptr %4, ptr @shadowstack_0, align 8 br label %36 35: ; preds = %36 ret i32 0 36: ; preds = %30 br label %35 } declare dso_local ptr @yk_mt_new(ptr noundef) #1 declare dso_local void @yk_mt_hot_threshold_set(ptr noundef, i32 noundef) #1 declare dso_local i64 @yk_location_new() #1 declare dso_local void @yk_mt_control_point(ptr noundef, ptr noundef) #1 declare dso_local void @yk_location_drop(i64) #1 declare dso_local void @yk_mt_drop(ptr noundef) #1 declare ptr @malloc(i64) declare void @__ykrt_control_point(ptr, ptr, ptr, ptr) ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none) declare ptr @llvm.frameaddress.p0(i32 immarg) #3 ; Function Attrs: nocallback nofree nosync willreturn declare void @llvm.experimental.stackmap(i64, i32, ...) #4 attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "yk_outline" } attributes #3 = { nocallback nofree nosync nounwind willreturn memory(none) } attributes #4 = { nocallback nofree nosync willreturn } attributes #5 = { nounwind } !llvm.ident = !{!0} !llvm.module.flags = !{!1, !2, !3, !4, !5} !0 = !{!"clang version 18.0.0 (https://github.com/ykjit/ykllvm c21b1be7d845af8283ac4750d8e7e6c408daf84b)"} !1 = !{i32 1, !"wchar_size", i32 4} !2 = !{i32 7, !"uwtable", i32 2} !3 = !{i32 7, !"frame-pointer", i32 2} !4 = !{i32 1, !"ThinLTO", i32 0} !5 = !{i32 1, !"EnableSplitLTOUnit", i32 1} !6 = distinct !{!6, !7} !7 = !{!"llvm.loop.mustprogress"} !8 = !{i64 2147966671} !9 = !{i64 2147966718} !10 = distinct !{!10, !7} --- End aot --- don't know how to handle operand: %3 = getelementptr i8, ptr %2, i32 0 ---- lang_tests::unroll_safe_implies_noinline.c stdout ----
The text was updated successfully, but these errors were encountered:
@ptersilie something to do with the shadow stack.
Non-deterministic though.... odd.
Sorry, something went wrong.
@ptersilie @Pavel-Durov I wonder if this could be related to the issue @Pavel-Durov is seeing in his PR?
I don't think so. But we will know more once we debug the software tracer properly.
vext01
No branches or pull requests
Shook this out with try_repeat:
The text was updated successfully, but these errors were encountered: