рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ 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) };
}
рдиреНрдпреВрдирддрдо рд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП _volatile
рдмрд┐рдирд╛ рднреА рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред
рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрд┐рдирд╛ _volatile рдХреЗ рдЬрдВрдЧ рдореЗрдВ рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛; рдореЗрд░рд╛ рд╕рд┐рд╕реНрдЯрдо рдПрд▓рдПрд▓рд╕реА (рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрднрд╡рддрдГ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ) --emit llvm-ir рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп segfaulted
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 рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдпрд╣рд╛рдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред
рдЯреНрд░рд╛рдЗрдПрдЬ: рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдмрдЧ рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрд┐рдирд╛ _volatile рдХреЗ рдЬрдВрдЧ рдореЗрдВ рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛; рдореЗрд░рд╛ рд╕рд┐рд╕реНрдЯрдо рдПрд▓рдПрд▓рд╕реА (рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрднрд╡рддрдГ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ) --emit llvm-ir рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп segfaulted
рдпрд╛
рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред