mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Auto merge of #78195 - tmiasko:instcombine, r=jonas-schievink
Disable "optimization to avoid load of address" in InstCombine The transformation is incorrect #78192. Disable it.
This commit is contained in:
commit
1d2726726f
@ -119,6 +119,11 @@ impl OptimizationFinder<'b, 'tcx> {
|
||||
}
|
||||
|
||||
fn find_deref_of_address(&mut self, rvalue: &Rvalue<'tcx>, location: Location) -> Option<()> {
|
||||
// FIXME(#78192): This optimization can result in unsoundness.
|
||||
if !self.tcx.sess.opts.debugging_opts.unsound_mir_opts {
|
||||
return None;
|
||||
}
|
||||
|
||||
// Look for the sequence
|
||||
//
|
||||
// _2 = &_1;
|
||||
|
@ -19,7 +19,7 @@
|
||||
// + span: $DIR/ref_deref.rs:5:6: 5:10
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ ref_deref[317d]::main), const_param_did: None }, [], Some(promoted[0])) }
|
||||
_2 = _4; // scope 0 at $DIR/ref_deref.rs:5:6: 5:10
|
||||
- _1 = (*_4); // scope 0 at $DIR/ref_deref.rs:5:5: 5:10
|
||||
- _1 = (*_2); // scope 0 at $DIR/ref_deref.rs:5:5: 5:10
|
||||
+ _1 = const 4_i32; // scope 0 at $DIR/ref_deref.rs:5:5: 5:10
|
||||
StorageDead(_2); // scope 0 at $DIR/ref_deref.rs:5:10: 5:11
|
||||
StorageDead(_1); // scope 0 at $DIR/ref_deref.rs:5:10: 5:11
|
||||
|
@ -19,7 +19,7 @@
|
||||
// + span: $DIR/ref_deref_project.rs:5:6: 5:17
|
||||
// + literal: Const { ty: &(i32, i32), val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ ref_deref_project[317d]::main), const_param_did: None }, [], Some(promoted[0])) }
|
||||
_2 = &((*_4).1: i32); // scope 0 at $DIR/ref_deref_project.rs:5:6: 5:17
|
||||
_1 = ((*_4).1: i32); // scope 0 at $DIR/ref_deref_project.rs:5:5: 5:17
|
||||
_1 = (*_2); // scope 0 at $DIR/ref_deref_project.rs:5:5: 5:17
|
||||
StorageDead(_2); // scope 0 at $DIR/ref_deref_project.rs:5:17: 5:18
|
||||
StorageDead(_1); // scope 0 at $DIR/ref_deref_project.rs:5:17: 5:18
|
||||
_0 = const (); // scope 0 at $DIR/ref_deref_project.rs:4:11: 6:2
|
||||
|
@ -1,4 +1,4 @@
|
||||
// compile-flags: -O
|
||||
// compile-flags: -O -Zunsound-mir-opts
|
||||
// EMIT_MIR inst_combine_deref.simple_opt.InstCombine.diff
|
||||
fn simple_opt() -> u64 {
|
||||
let x = 5;
|
||||
|
Loading…
Reference in New Issue
Block a user