Rust: يتوقف Rustc أثناء كودجين llvm عند الرجوع إلى مصفوفة [كبيرة] باستخدام الأمراض المنقولة جنسياً :: ptr :: read_volatile

تم إنشاؤها على ٢٧ أغسطس ٢٠١٨  ·  3تعليقات  ·  مصدر: rust-lang/rust

تمت إعادة معالجة هذه المشكلة بشكل مستقر وليلي على أنظمة التشغيل Windows و OSX و Linux:

cargo 1.28.0 (96a2c7d16 2018-07-13)
release: 1.28.0
commit-hash: 96a2c7d16249cb47c61c887fc95ca8be60e7ef0a
commit-date: 2018-07-13

cargo 1.29.0-nightly (6a7672ef5 2018-08-14)
release: 1.29.0
commit-hash: 6a7672ef5344c1bb570610f2574250fbee932355
commit-date: 2018-08-14

الشفرة:

fn main() {
    let x = [0u8; 128 * 128 * 4];
    let _y = unsafe { std::ptr::read_volatile(&x) };
}

بفضل talchas على الحد الأدنى من repro. أعتقد أنهم كانوا قادرين على إعادة عرضها بدون _volatile أيضًا.

A-LLVM

التعليق الأكثر فائدة

لكي أكون دقيقًا ، لم أقم بإعادة كتابتها في الصدأ بدون _volatile ؛ تم تعليق نظامي llc (ومن ثم من إصدار مختلف على الأرجح) عند محاولة تجميع إخراج --emit llvm-ir ، ولكن حدث خطأ عند محاولة تجميع أي منهما

define internal void @_ZN3foo4main17hb80e1f71fc6968e1E() unnamed_addr #0 {
start:
  %_y = alloca [65536 x i8], align 1
  %0 = load volatile [65536 x i8], [65536 x i8]* %_y, align 1
  ret void
}

أو

define internal void @_ZN3foo4main17hb80e1f71fc6968e1E() unnamed_addr #0 {
start:
  %_y = alloca [65536 x i8], align 1
  %0 = load [65536 x i8], [65536 x i8]* %_y, align 1
  ret void
}

والتي قد تكون ذات صلة أم لا.

ال 3 كومينتر

لكي أكون دقيقًا ، لم أقم بإعادة كتابتها في الصدأ بدون _volatile ؛ تم تعليق نظامي llc (ومن ثم من إصدار مختلف على الأرجح) عند محاولة تجميع إخراج --emit llvm-ir ، ولكن حدث خطأ عند محاولة تجميع أي منهما

define internal void @_ZN3foo4main17hb80e1f71fc6968e1E() unnamed_addr #0 {
start:
  %_y = alloca [65536 x i8], align 1
  %0 = load volatile [65536 x i8], [65536 x i8]* %_y, align 1
  ret void
}

أو

define internal void @_ZN3foo4main17hb80e1f71fc6968e1E() unnamed_addr #0 {
start:
  %_y = alloca [65536 x i8], align 1
  %0 = load [65536 x i8], [65536 x i8]* %_y, align 1
  ret void
}

والتي قد تكون ذات صلة أم لا.

https://bugs.llvm.org/show_bug.cgi؟id=37000 هو خطأ LLVM الذي تراه هنا.

الفرز: يبدو أن هذا لا يزال خطأ

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات