Auto merge of #73513 - oli-obk:const_binop_overflow, r=estebank
Show the values and computation that would overflow a const evaluation or propagation Fixes #71134 In contrast to the example in the issue it doesn't use individual spans for each operand. The effort required to implement that is quite high compared to the little (if at all) benefit it would bring to diagnostics. cc @shepmaster The way this is implemented it is also fairly easy to do the same for overflow panics at runtime, but that should be done in a separate PR since it may have runtime performance implications.
This commit is contained in:
commit
7750c3d46b
@ -380,7 +380,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
|
||||
// checked operation, just a comparison with the minimum
|
||||
// value, so we have to check for the assert message.
|
||||
if !bx.check_overflow() {
|
||||
if let AssertKind::OverflowNeg = *msg {
|
||||
if let AssertKind::OverflowNeg(_) = *msg {
|
||||
const_cond = Some(expected);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,8 @@
|
||||
//!
|
||||
//! [rustc dev guide]: https://rustc-dev-guide.rust-lang.org/mir/index.html
|
||||
|
||||
// ignore-tidy-filelength
|
||||
|
||||
use crate::mir::interpret::{GlobalAlloc, Scalar};
|
||||
use crate::mir::visit::MirVisitable;
|
||||
use crate::ty::adjustment::PointerCast;
|
||||
@ -1246,10 +1248,10 @@ pub enum TerminatorKind<'tcx> {
|
||||
#[derive(Clone, RustcEncodable, RustcDecodable, HashStable, PartialEq)]
|
||||
pub enum AssertKind<O> {
|
||||
BoundsCheck { len: O, index: O },
|
||||
Overflow(BinOp),
|
||||
OverflowNeg,
|
||||
DivisionByZero,
|
||||
RemainderByZero,
|
||||
Overflow(BinOp, O, O),
|
||||
OverflowNeg(O),
|
||||
DivisionByZero(O),
|
||||
RemainderByZero(O),
|
||||
ResumedAfterReturn(GeneratorKind),
|
||||
ResumedAfterPanic(GeneratorKind),
|
||||
}
|
||||
@ -1522,17 +1524,17 @@ impl<O> AssertKind<O> {
|
||||
pub fn description(&self) -> &'static str {
|
||||
use AssertKind::*;
|
||||
match self {
|
||||
Overflow(BinOp::Add) => "attempt to add with overflow",
|
||||
Overflow(BinOp::Sub) => "attempt to subtract with overflow",
|
||||
Overflow(BinOp::Mul) => "attempt to multiply with overflow",
|
||||
Overflow(BinOp::Div) => "attempt to divide with overflow",
|
||||
Overflow(BinOp::Rem) => "attempt to calculate the remainder with overflow",
|
||||
OverflowNeg => "attempt to negate with overflow",
|
||||
Overflow(BinOp::Shr) => "attempt to shift right with overflow",
|
||||
Overflow(BinOp::Shl) => "attempt to shift left with overflow",
|
||||
Overflow(op) => bug!("{:?} cannot overflow", op),
|
||||
DivisionByZero => "attempt to divide by zero",
|
||||
RemainderByZero => "attempt to calculate the remainder with a divisor of zero",
|
||||
Overflow(BinOp::Add, _, _) => "attempt to add with overflow",
|
||||
Overflow(BinOp::Sub, _, _) => "attempt to subtract with overflow",
|
||||
Overflow(BinOp::Mul, _, _) => "attempt to multiply with overflow",
|
||||
Overflow(BinOp::Div, _, _) => "attempt to divide with overflow",
|
||||
Overflow(BinOp::Rem, _, _) => "attempt to calculate the remainder with overflow",
|
||||
OverflowNeg(_) => "attempt to negate with overflow",
|
||||
Overflow(BinOp::Shr, _, _) => "attempt to shift right with overflow",
|
||||
Overflow(BinOp::Shl, _, _) => "attempt to shift left with overflow",
|
||||
Overflow(op, _, _) => bug!("{:?} cannot overflow", op),
|
||||
DivisionByZero(_) => "attempt to divide by zero",
|
||||
RemainderByZero(_) => "attempt to calculate the remainder with a divisor of zero",
|
||||
ResumedAfterReturn(GeneratorKind::Gen) => "generator resumed after completion",
|
||||
ResumedAfterReturn(GeneratorKind::Async(_)) => "`async fn` resumed after completion",
|
||||
ResumedAfterPanic(GeneratorKind::Gen) => "generator resumed after panicking",
|
||||
@ -1546,12 +1548,54 @@ impl<O> AssertKind<O> {
|
||||
where
|
||||
O: Debug,
|
||||
{
|
||||
use AssertKind::*;
|
||||
match self {
|
||||
AssertKind::BoundsCheck { ref len, ref index } => write!(
|
||||
BoundsCheck { ref len, ref index } => write!(
|
||||
f,
|
||||
"\"index out of bounds: the len is {{}} but the index is {{}}\", {:?}, {:?}",
|
||||
len, index
|
||||
),
|
||||
|
||||
OverflowNeg(op) => {
|
||||
write!(f, "\"attempt to negate {{}} which would overflow\", {:?}", op)
|
||||
}
|
||||
DivisionByZero(op) => write!(f, "\"attempt to divide {{}} by zero\", {:?}", op),
|
||||
RemainderByZero(op) => write!(
|
||||
f,
|
||||
"\"attempt to calculate the remainder of {{}} with a divisor of zero\", {:?}",
|
||||
op
|
||||
),
|
||||
Overflow(BinOp::Add, l, r) => write!(
|
||||
f,
|
||||
"\"attempt to compute `{{}} + {{}}` which would overflow\", {:?}, {:?}",
|
||||
l, r
|
||||
),
|
||||
Overflow(BinOp::Sub, l, r) => write!(
|
||||
f,
|
||||
"\"attempt to compute `{{}} - {{}}` which would overflow\", {:?}, {:?}",
|
||||
l, r
|
||||
),
|
||||
Overflow(BinOp::Mul, l, r) => write!(
|
||||
f,
|
||||
"\"attempt to compute `{{}} * {{}}` which would overflow\", {:?}, {:?}",
|
||||
l, r
|
||||
),
|
||||
Overflow(BinOp::Div, l, r) => write!(
|
||||
f,
|
||||
"\"attempt to compute `{{}} / {{}}` which would overflow\", {:?}, {:?}",
|
||||
l, r
|
||||
),
|
||||
Overflow(BinOp::Rem, l, r) => write!(
|
||||
f,
|
||||
"\"attempt to compute the remainder of `{{}} % {{}}` which would overflow\", {:?}, {:?}",
|
||||
l, r
|
||||
),
|
||||
Overflow(BinOp::Shr, _, r) => {
|
||||
write!(f, "\"attempt to shift right by {{}} which would overflow\", {:?}", r)
|
||||
}
|
||||
Overflow(BinOp::Shl, _, r) => {
|
||||
write!(f, "\"attempt to shift left by {{}} which would overflow\", {:?}", r)
|
||||
}
|
||||
_ => write!(f, "\"{}\"", self.description()),
|
||||
}
|
||||
}
|
||||
@ -1564,6 +1608,34 @@ impl<O: fmt::Debug> fmt::Debug for AssertKind<O> {
|
||||
BoundsCheck { ref len, ref index } => {
|
||||
write!(f, "index out of bounds: the len is {:?} but the index is {:?}", len, index)
|
||||
}
|
||||
OverflowNeg(op) => write!(f, "attempt to negate {:#?} which would overflow", op),
|
||||
DivisionByZero(op) => write!(f, "attempt to divide {:#?} by zero", op),
|
||||
RemainderByZero(op) => {
|
||||
write!(f, "attempt to calculate the remainder of {:#?} with a divisor of zero", op)
|
||||
}
|
||||
Overflow(BinOp::Add, l, r) => {
|
||||
write!(f, "attempt to compute `{:#?} + {:#?}` which would overflow", l, r)
|
||||
}
|
||||
Overflow(BinOp::Sub, l, r) => {
|
||||
write!(f, "attempt to compute `{:#?} - {:#?}` which would overflow", l, r)
|
||||
}
|
||||
Overflow(BinOp::Mul, l, r) => {
|
||||
write!(f, "attempt to compute `{:#?} * {:#?}` which would overflow", l, r)
|
||||
}
|
||||
Overflow(BinOp::Div, l, r) => {
|
||||
write!(f, "attempt to compute `{:#?} / {:#?}` which would overflow", l, r)
|
||||
}
|
||||
Overflow(BinOp::Rem, l, r) => write!(
|
||||
f,
|
||||
"attempt to compute the remainder of `{:#?} % {:#?}` which would overflow",
|
||||
l, r
|
||||
),
|
||||
Overflow(BinOp::Shr, _, r) => {
|
||||
write!(f, "attempt to shift right by {:#?} which would overflow", r)
|
||||
}
|
||||
Overflow(BinOp::Shl, _, r) => {
|
||||
write!(f, "attempt to shift left by {:#?} which would overflow", r)
|
||||
}
|
||||
_ => write!(f, "{}", self.description()),
|
||||
}
|
||||
}
|
||||
|
@ -58,15 +58,14 @@ impl<'tcx> TypeFoldable<'tcx> for Terminator<'tcx> {
|
||||
Assert { ref cond, expected, ref msg, target, cleanup } => {
|
||||
use AssertKind::*;
|
||||
let msg = match msg {
|
||||
BoundsCheck { ref len, ref index } => {
|
||||
BoundsCheck { len, index } => {
|
||||
BoundsCheck { len: len.fold_with(folder), index: index.fold_with(folder) }
|
||||
}
|
||||
Overflow(_)
|
||||
| OverflowNeg
|
||||
| DivisionByZero
|
||||
| RemainderByZero
|
||||
| ResumedAfterReturn(_)
|
||||
| ResumedAfterPanic(_) => msg.clone(),
|
||||
Overflow(op, l, r) => Overflow(*op, l.fold_with(folder), r.fold_with(folder)),
|
||||
OverflowNeg(op) => OverflowNeg(op.fold_with(folder)),
|
||||
DivisionByZero(op) => DivisionByZero(op.fold_with(folder)),
|
||||
RemainderByZero(op) => RemainderByZero(op.fold_with(folder)),
|
||||
ResumedAfterReturn(_) | ResumedAfterPanic(_) => msg.clone(),
|
||||
};
|
||||
Assert { cond: cond.fold_with(folder), expected, msg, target, cleanup }
|
||||
}
|
||||
@ -117,12 +116,11 @@ impl<'tcx> TypeFoldable<'tcx> for Terminator<'tcx> {
|
||||
BoundsCheck { ref len, ref index } => {
|
||||
len.visit_with(visitor) || index.visit_with(visitor)
|
||||
}
|
||||
Overflow(_)
|
||||
| OverflowNeg
|
||||
| DivisionByZero
|
||||
| RemainderByZero
|
||||
| ResumedAfterReturn(_)
|
||||
| ResumedAfterPanic(_) => false,
|
||||
Overflow(_, l, r) => l.visit_with(visitor) || r.visit_with(visitor),
|
||||
OverflowNeg(op) | DivisionByZero(op) | RemainderByZero(op) => {
|
||||
op.visit_with(visitor)
|
||||
}
|
||||
ResumedAfterReturn(_) | ResumedAfterPanic(_) => false,
|
||||
}
|
||||
} else {
|
||||
false
|
||||
|
@ -571,7 +571,13 @@ macro_rules! make_mir_visitor {
|
||||
self.visit_operand(len, location);
|
||||
self.visit_operand(index, location);
|
||||
}
|
||||
Overflow(_) | OverflowNeg | DivisionByZero | RemainderByZero |
|
||||
Overflow(_, l, r) => {
|
||||
self.visit_operand(l, location);
|
||||
self.visit_operand(r, location);
|
||||
}
|
||||
OverflowNeg(op) | DivisionByZero(op) | RemainderByZero(op) => {
|
||||
self.visit_operand(op, location);
|
||||
}
|
||||
ResumedAfterReturn(_) | ResumedAfterPanic(_) => {
|
||||
// Nothing to visit
|
||||
}
|
||||
|
111
src/librustc_middle/ty/consts.rs
Normal file
111
src/librustc_middle/ty/consts.rs
Normal file
@ -0,0 +1,111 @@
|
||||
use crate::mir::interpret::truncate;
|
||||
use rustc_target::abi::Size;
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
/// A type for representing any integer. Only used for printing.
|
||||
// FIXME: Use this for the integer-tree representation needed for type level ints and
|
||||
// const generics?
|
||||
pub struct ConstInt {
|
||||
/// Number of bytes of the integer. Only 1, 2, 4, 8, 16 are legal values.
|
||||
size: u8,
|
||||
/// Whether the value is of a signed integer type.
|
||||
signed: bool,
|
||||
/// Whether the value is a `usize` or `isize` type.
|
||||
is_ptr_sized_integral: bool,
|
||||
/// Raw memory of the integer. All bytes beyond the `size` are unused and must be zero.
|
||||
raw: u128,
|
||||
}
|
||||
|
||||
impl ConstInt {
|
||||
pub fn new(raw: u128, size: Size, signed: bool, is_ptr_sized_integral: bool) -> Self {
|
||||
assert!(raw <= truncate(u128::MAX, size));
|
||||
Self { raw, size: size.bytes() as u8, signed, is_ptr_sized_integral }
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Debug for ConstInt {
|
||||
fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
let Self { size, signed, raw, is_ptr_sized_integral } = *self;
|
||||
if signed {
|
||||
let bit_size = size * 8;
|
||||
let min = 1u128 << (bit_size - 1);
|
||||
let max = min - 1;
|
||||
if raw == min {
|
||||
match (size, is_ptr_sized_integral) {
|
||||
(_, true) => write!(fmt, "isize::MIN"),
|
||||
(1, _) => write!(fmt, "i8::MIN"),
|
||||
(2, _) => write!(fmt, "i16::MIN"),
|
||||
(4, _) => write!(fmt, "i32::MIN"),
|
||||
(8, _) => write!(fmt, "i64::MIN"),
|
||||
(16, _) => write!(fmt, "i128::MIN"),
|
||||
_ => bug!("ConstInt 0x{:x} with size = {} and signed = {}", raw, size, signed),
|
||||
}
|
||||
} else if raw == max {
|
||||
match (size, is_ptr_sized_integral) {
|
||||
(_, true) => write!(fmt, "isize::MAX"),
|
||||
(1, _) => write!(fmt, "i8::MAX"),
|
||||
(2, _) => write!(fmt, "i16::MAX"),
|
||||
(4, _) => write!(fmt, "i32::MAX"),
|
||||
(8, _) => write!(fmt, "i64::MAX"),
|
||||
(16, _) => write!(fmt, "i128::MAX"),
|
||||
_ => bug!("ConstInt 0x{:x} with size = {} and signed = {}", raw, size, signed),
|
||||
}
|
||||
} else {
|
||||
match size {
|
||||
1 => write!(fmt, "{}", raw as i8)?,
|
||||
2 => write!(fmt, "{}", raw as i16)?,
|
||||
4 => write!(fmt, "{}", raw as i32)?,
|
||||
8 => write!(fmt, "{}", raw as i64)?,
|
||||
16 => write!(fmt, "{}", raw as i128)?,
|
||||
_ => bug!("ConstInt 0x{:x} with size = {} and signed = {}", raw, size, signed),
|
||||
}
|
||||
if fmt.alternate() {
|
||||
match (size, is_ptr_sized_integral) {
|
||||
(_, true) => write!(fmt, "_isize")?,
|
||||
(1, _) => write!(fmt, "_i8")?,
|
||||
(2, _) => write!(fmt, "_i16")?,
|
||||
(4, _) => write!(fmt, "_i32")?,
|
||||
(8, _) => write!(fmt, "_i64")?,
|
||||
(16, _) => write!(fmt, "_i128")?,
|
||||
_ => bug!(),
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
} else {
|
||||
let max = truncate(u128::MAX, Size::from_bytes(size));
|
||||
if raw == max {
|
||||
match (size, is_ptr_sized_integral) {
|
||||
(_, true) => write!(fmt, "usize::MAX"),
|
||||
(1, _) => write!(fmt, "u8::MAX"),
|
||||
(2, _) => write!(fmt, "u16::MAX"),
|
||||
(4, _) => write!(fmt, "u32::MAX"),
|
||||
(8, _) => write!(fmt, "u64::MAX"),
|
||||
(16, _) => write!(fmt, "u128::MAX"),
|
||||
_ => bug!("ConstInt 0x{:x} with size = {} and signed = {}", raw, size, signed),
|
||||
}
|
||||
} else {
|
||||
match size {
|
||||
1 => write!(fmt, "{}", raw as u8)?,
|
||||
2 => write!(fmt, "{}", raw as u16)?,
|
||||
4 => write!(fmt, "{}", raw as u32)?,
|
||||
8 => write!(fmt, "{}", raw as u64)?,
|
||||
16 => write!(fmt, "{}", raw as u128)?,
|
||||
_ => bug!("ConstInt 0x{:x} with size = {} and signed = {}", raw, size, signed),
|
||||
}
|
||||
if fmt.alternate() {
|
||||
match (size, is_ptr_sized_integral) {
|
||||
(_, true) => write!(fmt, "_usize")?,
|
||||
(1, _) => write!(fmt, "_u8")?,
|
||||
(2, _) => write!(fmt, "_u16")?,
|
||||
(4, _) => write!(fmt, "_u32")?,
|
||||
(8, _) => write!(fmt, "_u64")?,
|
||||
(16, _) => write!(fmt, "_u128")?,
|
||||
_ => bug!(),
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -84,6 +84,8 @@ pub use self::trait_def::TraitDef;
|
||||
|
||||
pub use self::query::queries;
|
||||
|
||||
pub use self::consts::ConstInt;
|
||||
|
||||
pub mod adjustment;
|
||||
pub mod binding;
|
||||
pub mod cast;
|
||||
@ -108,6 +110,7 @@ pub mod trait_def;
|
||||
pub mod util;
|
||||
pub mod walk;
|
||||
|
||||
mod consts;
|
||||
mod context;
|
||||
mod diagnostics;
|
||||
mod instance;
|
||||
|
@ -1,10 +1,8 @@
|
||||
use crate::middle::cstore::{ExternCrate, ExternCrateSource};
|
||||
use crate::mir::interpret::{
|
||||
sign_extend, truncate, AllocId, ConstValue, GlobalAlloc, Pointer, Scalar,
|
||||
};
|
||||
use crate::mir::interpret::{AllocId, ConstValue, GlobalAlloc, Pointer, Scalar};
|
||||
use crate::ty::layout::IntegerExt;
|
||||
use crate::ty::subst::{GenericArg, GenericArgKind, Subst};
|
||||
use crate::ty::{self, DefIdTree, ParamConst, Ty, TyCtxt, TypeFoldable};
|
||||
use crate::ty::{self, ConstInt, DefIdTree, ParamConst, Ty, TyCtxt, TypeFoldable};
|
||||
use rustc_apfloat::ieee::{Double, Single};
|
||||
use rustc_apfloat::Float;
|
||||
use rustc_ast::ast;
|
||||
@ -981,35 +979,14 @@ pub trait PrettyPrinter<'tcx>:
|
||||
}
|
||||
// Int
|
||||
(Scalar::Raw { data, .. }, ty::Uint(ui)) => {
|
||||
let bit_size = Integer::from_attr(&self.tcx(), UnsignedInt(*ui)).size();
|
||||
let max = truncate(u128::MAX, bit_size);
|
||||
|
||||
let ui_str = ui.name_str();
|
||||
if data == max {
|
||||
p!(write("{}::MAX", ui_str))
|
||||
} else {
|
||||
if print_ty { p!(write("{}{}", data, ui_str)) } else { p!(write("{}", data)) }
|
||||
};
|
||||
let size = Integer::from_attr(&self.tcx(), UnsignedInt(*ui)).size();
|
||||
let int = ConstInt::new(data, size, false, ty.is_ptr_sized_integral());
|
||||
if print_ty { p!(write("{:#?}", int)) } else { p!(write("{:?}", int)) }
|
||||
}
|
||||
(Scalar::Raw { data, .. }, ty::Int(i)) => {
|
||||
let size = Integer::from_attr(&self.tcx(), SignedInt(*i)).size();
|
||||
let bit_size = size.bits() as u128;
|
||||
let min = 1u128 << (bit_size - 1);
|
||||
let max = min - 1;
|
||||
|
||||
let i_str = i.name_str();
|
||||
match data {
|
||||
d if d == min => p!(write("{}::MIN", i_str)),
|
||||
d if d == max => p!(write("{}::MAX", i_str)),
|
||||
_ => {
|
||||
let data = sign_extend(data, size) as i128;
|
||||
if print_ty {
|
||||
p!(write("{}{}", data, i_str))
|
||||
} else {
|
||||
p!(write("{}", data))
|
||||
}
|
||||
}
|
||||
}
|
||||
let int = ConstInt::new(data, size, true, ty.is_ptr_sized_integral());
|
||||
if print_ty { p!(write("{:#?}", int)) } else { p!(write("{:?}", int)) }
|
||||
}
|
||||
// Char
|
||||
(Scalar::Raw { data, .. }, ty::Char) if char::from_u32(data as u32).is_some() => {
|
||||
|
@ -2,6 +2,7 @@ use std::error::Error;
|
||||
use std::fmt;
|
||||
|
||||
use rustc_middle::mir::AssertKind;
|
||||
use rustc_middle::ty::ConstInt;
|
||||
use rustc_span::{Span, Symbol};
|
||||
|
||||
use super::InterpCx;
|
||||
@ -13,7 +14,7 @@ pub enum ConstEvalErrKind {
|
||||
NeedsRfc(String),
|
||||
ConstAccessesStatic,
|
||||
ModifiedGlobal,
|
||||
AssertFailure(AssertKind<u64>),
|
||||
AssertFailure(AssertKind<ConstInt>),
|
||||
Panic { msg: Symbol, line: u32, col: u32, file: Symbol },
|
||||
}
|
||||
|
||||
|
@ -248,25 +248,19 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for CompileTimeInterpreter<'mir,
|
||||
_unwind: Option<mir::BasicBlock>,
|
||||
) -> InterpResult<'tcx> {
|
||||
use rustc_middle::mir::AssertKind::*;
|
||||
// Convert `AssertKind<Operand>` to `AssertKind<u64>`.
|
||||
// Convert `AssertKind<Operand>` to `AssertKind<Scalar>`.
|
||||
let eval_to_int =
|
||||
|op| ecx.read_immediate(ecx.eval_operand(op, None)?).map(|x| x.to_const_int());
|
||||
let err = match msg {
|
||||
BoundsCheck { ref len, ref index } => {
|
||||
let len = ecx
|
||||
.read_immediate(ecx.eval_operand(len, None)?)
|
||||
.expect("can't eval len")
|
||||
.to_scalar()?
|
||||
.to_machine_usize(&*ecx)?;
|
||||
let index = ecx
|
||||
.read_immediate(ecx.eval_operand(index, None)?)
|
||||
.expect("can't eval index")
|
||||
.to_scalar()?
|
||||
.to_machine_usize(&*ecx)?;
|
||||
let len = eval_to_int(len)?;
|
||||
let index = eval_to_int(index)?;
|
||||
BoundsCheck { len, index }
|
||||
}
|
||||
Overflow(op) => Overflow(*op),
|
||||
OverflowNeg => OverflowNeg,
|
||||
DivisionByZero => DivisionByZero,
|
||||
RemainderByZero => RemainderByZero,
|
||||
Overflow(op, l, r) => Overflow(*op, eval_to_int(l)?, eval_to_int(r)?),
|
||||
OverflowNeg(op) => OverflowNeg(eval_to_int(op)?),
|
||||
DivisionByZero(op) => DivisionByZero(eval_to_int(op)?),
|
||||
RemainderByZero(op) => RemainderByZero(eval_to_int(op)?),
|
||||
ResumedAfterReturn(generator_kind) => ResumedAfterReturn(*generator_kind),
|
||||
ResumedAfterPanic(generator_kind) => ResumedAfterPanic(*generator_kind),
|
||||
};
|
||||
|
@ -9,7 +9,7 @@ use rustc_hir::def::Namespace;
|
||||
use rustc_macros::HashStable;
|
||||
use rustc_middle::ty::layout::{PrimitiveExt, TyAndLayout};
|
||||
use rustc_middle::ty::print::{FmtPrinter, PrettyPrinter, Printer};
|
||||
use rustc_middle::ty::Ty;
|
||||
use rustc_middle::ty::{ConstInt, Ty};
|
||||
use rustc_middle::{mir, ty};
|
||||
use rustc_target::abi::{Abi, HasDataLayout, LayoutOf, Size, TagEncoding};
|
||||
use rustc_target::abi::{VariantIdx, Variants};
|
||||
@ -207,6 +207,19 @@ impl<'tcx, Tag: Copy> ImmTy<'tcx, Tag> {
|
||||
pub fn from_int(i: impl Into<i128>, layout: TyAndLayout<'tcx>) -> Self {
|
||||
Self::from_scalar(Scalar::from_int(i, layout.size), layout)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn to_const_int(self) -> ConstInt {
|
||||
assert!(self.layout.ty.is_integral());
|
||||
ConstInt::new(
|
||||
self.to_scalar()
|
||||
.expect("to_const_int doesn't work on scalar pairs")
|
||||
.assert_bits(self.layout.size),
|
||||
self.layout.size,
|
||||
self.layout.ty.is_signed(),
|
||||
self.layout.ty.is_ptr_sized_integral(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
|
||||
|
@ -19,7 +19,7 @@ use rustc_middle::mir::{
|
||||
};
|
||||
use rustc_middle::ty::layout::{HasTyCtxt, LayoutError, TyAndLayout};
|
||||
use rustc_middle::ty::subst::{InternalSubsts, Subst};
|
||||
use rustc_middle::ty::{self, ConstKind, Instance, ParamEnv, Ty, TyCtxt, TypeFoldable};
|
||||
use rustc_middle::ty::{self, ConstInt, ConstKind, Instance, ParamEnv, Ty, TyCtxt, TypeFoldable};
|
||||
use rustc_session::lint;
|
||||
use rustc_span::{def_id::DefId, Span};
|
||||
use rustc_target::abi::{HasDataLayout, LayoutOf, Size, TargetDataLayout};
|
||||
@ -449,7 +449,7 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
|
||||
lint: &'static lint::Lint,
|
||||
source_info: SourceInfo,
|
||||
message: &'static str,
|
||||
panic: AssertKind<u64>,
|
||||
panic: AssertKind<ConstInt>,
|
||||
) -> Option<()> {
|
||||
let lint_root = self.lint_root(source_info)?;
|
||||
self.tcx.struct_span_lint_hir(lint, lint_root, source_info.span, |lint| {
|
||||
@ -466,10 +466,10 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
|
||||
arg: &Operand<'tcx>,
|
||||
source_info: SourceInfo,
|
||||
) -> Option<()> {
|
||||
if self.use_ecx(|this| {
|
||||
if let (val, true) = self.use_ecx(|this| {
|
||||
let val = this.ecx.read_immediate(this.ecx.eval_operand(arg, None)?)?;
|
||||
let (_res, overflow, _ty) = this.ecx.overflowing_unary_op(op, val)?;
|
||||
Ok(overflow)
|
||||
Ok((val, overflow))
|
||||
})? {
|
||||
// `AssertKind` only has an `OverflowNeg` variant, so make sure that is
|
||||
// appropriate to use.
|
||||
@ -478,7 +478,7 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
|
||||
lint::builtin::ARITHMETIC_OVERFLOW,
|
||||
source_info,
|
||||
"this arithmetic operation will overflow",
|
||||
AssertKind::OverflowNeg,
|
||||
AssertKind::OverflowNeg(val.to_const_int()),
|
||||
)?;
|
||||
}
|
||||
|
||||
@ -494,29 +494,44 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
|
||||
) -> Option<()> {
|
||||
let r =
|
||||
self.use_ecx(|this| this.ecx.read_immediate(this.ecx.eval_operand(right, None)?))?;
|
||||
let l = self.use_ecx(|this| this.ecx.read_immediate(this.ecx.eval_operand(left, None)?));
|
||||
// Check for exceeding shifts *even if* we cannot evaluate the LHS.
|
||||
if op == BinOp::Shr || op == BinOp::Shl {
|
||||
// We need the type of the LHS. We cannot use `place_layout` as that is the type
|
||||
// of the result, which for checked binops is not the same!
|
||||
let left_ty = left.ty(&self.local_decls, self.tcx);
|
||||
let left_size_bits = self.ecx.layout_of(left_ty).ok()?.size.bits();
|
||||
let left_size = self.ecx.layout_of(left_ty).ok()?.size;
|
||||
let right_size = r.layout.size;
|
||||
let r_bits = r.to_scalar().ok();
|
||||
// This is basically `force_bits`.
|
||||
let r_bits = r_bits.and_then(|r| r.to_bits_or_ptr(right_size, &self.tcx).ok());
|
||||
if r_bits.map_or(false, |b| b >= left_size_bits as u128) {
|
||||
if r_bits.map_or(false, |b| b >= left_size.bits() as u128) {
|
||||
self.report_assert_as_lint(
|
||||
lint::builtin::ARITHMETIC_OVERFLOW,
|
||||
source_info,
|
||||
"this arithmetic operation will overflow",
|
||||
AssertKind::Overflow(op),
|
||||
AssertKind::Overflow(
|
||||
op,
|
||||
match l {
|
||||
Some(l) => l.to_const_int(),
|
||||
// Invent a dummy value, the diagnostic ignores it anyway
|
||||
None => ConstInt::new(
|
||||
1,
|
||||
left_size,
|
||||
left_ty.is_signed(),
|
||||
left_ty.is_ptr_sized_integral(),
|
||||
),
|
||||
},
|
||||
r.to_const_int(),
|
||||
),
|
||||
)?;
|
||||
}
|
||||
}
|
||||
|
||||
let l = l?;
|
||||
|
||||
// The remaining operators are handled through `overflowing_binary_op`.
|
||||
if self.use_ecx(|this| {
|
||||
let l = this.ecx.read_immediate(this.ecx.eval_operand(left, None)?)?;
|
||||
let (_res, overflow, _ty) = this.ecx.overflowing_binary_op(op, l, r)?;
|
||||
Ok(overflow)
|
||||
})? {
|
||||
@ -524,7 +539,7 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
|
||||
lint::builtin::ARITHMETIC_OVERFLOW,
|
||||
source_info,
|
||||
"this arithmetic operation will overflow",
|
||||
AssertKind::Overflow(op),
|
||||
AssertKind::Overflow(op, l.to_const_int(), r.to_const_int()),
|
||||
)?;
|
||||
}
|
||||
|
||||
@ -949,31 +964,26 @@ impl<'mir, 'tcx> MutVisitor<'tcx> for ConstPropagator<'mir, 'tcx> {
|
||||
}
|
||||
Operand::Constant(_) => {}
|
||||
}
|
||||
let mut eval_to_int = |op| {
|
||||
let op = self
|
||||
.eval_operand(op, source_info)
|
||||
.expect("if we got here, it must be const");
|
||||
self.ecx.read_immediate(op).unwrap().to_const_int()
|
||||
};
|
||||
let msg = match msg {
|
||||
AssertKind::DivisionByZero => AssertKind::DivisionByZero,
|
||||
AssertKind::RemainderByZero => AssertKind::RemainderByZero,
|
||||
AssertKind::DivisionByZero(op) => {
|
||||
AssertKind::DivisionByZero(eval_to_int(op))
|
||||
}
|
||||
AssertKind::RemainderByZero(op) => {
|
||||
AssertKind::RemainderByZero(eval_to_int(op))
|
||||
}
|
||||
AssertKind::BoundsCheck { ref len, ref index } => {
|
||||
let len =
|
||||
self.eval_operand(len, source_info).expect("len must be const");
|
||||
let len = self
|
||||
.ecx
|
||||
.read_scalar(len)
|
||||
.unwrap()
|
||||
.to_machine_usize(&self.tcx)
|
||||
.unwrap();
|
||||
let index = self
|
||||
.eval_operand(index, source_info)
|
||||
.expect("index must be const");
|
||||
let index = self
|
||||
.ecx
|
||||
.read_scalar(index)
|
||||
.unwrap()
|
||||
.to_machine_usize(&self.tcx)
|
||||
.unwrap();
|
||||
let len = eval_to_int(len);
|
||||
let index = eval_to_int(index);
|
||||
AssertKind::BoundsCheck { len, index }
|
||||
}
|
||||
// Overflow is are already covered by checks on the binary operators.
|
||||
AssertKind::Overflow(_) | AssertKind::OverflowNeg => return,
|
||||
AssertKind::Overflow(..) | AssertKind::OverflowNeg(_) => return,
|
||||
// Need proper const propagator for these.
|
||||
_ => return,
|
||||
};
|
||||
|
@ -87,7 +87,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
block,
|
||||
Operand::Move(is_min),
|
||||
false,
|
||||
AssertKind::OverflowNeg,
|
||||
AssertKind::OverflowNeg(arg.to_copy()),
|
||||
expr_span,
|
||||
);
|
||||
}
|
||||
@ -288,7 +288,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
block,
|
||||
source_info,
|
||||
result_value,
|
||||
Rvalue::CheckedBinaryOp(op, lhs, rhs),
|
||||
Rvalue::CheckedBinaryOp(op, lhs.to_copy(), rhs.to_copy()),
|
||||
);
|
||||
let val_fld = Field::new(0);
|
||||
let of_fld = Field::new(1);
|
||||
@ -297,7 +297,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
let val = tcx.mk_place_field(result_value, val_fld, ty);
|
||||
let of = tcx.mk_place_field(result_value, of_fld, bool_ty);
|
||||
|
||||
let err = AssertKind::Overflow(op);
|
||||
let err = AssertKind::Overflow(op, lhs, rhs);
|
||||
|
||||
block = self.assert(block, Operand::Move(of), false, err, span);
|
||||
|
||||
@ -308,11 +308,11 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
// and 2. there are two possible failure cases, divide-by-zero and overflow.
|
||||
|
||||
let zero_err = if op == BinOp::Div {
|
||||
AssertKind::DivisionByZero
|
||||
AssertKind::DivisionByZero(lhs.to_copy())
|
||||
} else {
|
||||
AssertKind::RemainderByZero
|
||||
AssertKind::RemainderByZero(lhs.to_copy())
|
||||
};
|
||||
let overflow_err = AssertKind::Overflow(op);
|
||||
let overflow_err = AssertKind::Overflow(op, lhs.to_copy(), rhs.to_copy());
|
||||
|
||||
// Check for / 0
|
||||
let is_zero = self.temp(bool_ty, span);
|
||||
|
@ -481,8 +481,8 @@ pub fn print_const(cx: &DocContext<'_>, n: &'tcx ty::Const<'_>) -> String {
|
||||
_ => {
|
||||
let mut s = n.to_string();
|
||||
// array lengths are obviously usize
|
||||
if s.ends_with("usize") {
|
||||
let n = s.len() - "usize".len();
|
||||
if s.ends_with("_usize") {
|
||||
let n = s.len() - "_usize".len();
|
||||
s.truncate(n);
|
||||
if s.ends_with(": ") {
|
||||
let n = s.len() - ": ".len();
|
||||
|
@ -128,7 +128,7 @@ fn address_of_reborrow() -> () {
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/address-of.rs:4:9: 4:10
|
||||
StorageLive(_2); // scope 0 at $DIR/address-of.rs:4:14: 4:21
|
||||
_2 = [const 0i32; 10]; // scope 0 at $DIR/address-of.rs:4:14: 4:21
|
||||
_2 = [const 0_i32; 10]; // scope 0 at $DIR/address-of.rs:4:14: 4:21
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -139,7 +139,7 @@ fn address_of_reborrow() -> () {
|
||||
FakeRead(ForLet, _1); // scope 0 at $DIR/address-of.rs:4:9: 4:10
|
||||
StorageLive(_3); // scope 1 at $DIR/address-of.rs:5:9: 5:14
|
||||
StorageLive(_4); // scope 1 at $DIR/address-of.rs:5:22: 5:29
|
||||
_4 = [const 0i32; 10]; // scope 1 at $DIR/address-of.rs:5:22: 5:29
|
||||
_4 = [const 0_i32; 10]; // scope 1 at $DIR/address-of.rs:5:22: 5:29
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
|
@ -25,7 +25,7 @@ fn main() -> () {
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/array-index-is-temporary.rs:13:9: 13:14
|
||||
_1 = [const 42u32, const 43u32, const 44u32]; // scope 0 at $DIR/array-index-is-temporary.rs:13:17: 13:29
|
||||
_1 = [const 42_u32, const 43_u32, const 44_u32]; // scope 0 at $DIR/array-index-is-temporary.rs:13:17: 13:29
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -45,7 +45,7 @@ fn main() -> () {
|
||||
// + span: $DIR/array-index-is-temporary.rs:13:26: 13:28
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x0000002c)) }
|
||||
StorageLive(_2); // scope 1 at $DIR/array-index-is-temporary.rs:14:9: 14:14
|
||||
_2 = const 1usize; // scope 1 at $DIR/array-index-is-temporary.rs:14:17: 14:18
|
||||
_2 = const 1_usize; // scope 1 at $DIR/array-index-is-temporary.rs:14:17: 14:18
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
|
@ -25,7 +25,7 @@ fn main() -> () {
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/array-index-is-temporary.rs:13:9: 13:14
|
||||
_1 = [const 42u32, const 43u32, const 44u32]; // scope 0 at $DIR/array-index-is-temporary.rs:13:17: 13:29
|
||||
_1 = [const 42_u32, const 43_u32, const 44_u32]; // scope 0 at $DIR/array-index-is-temporary.rs:13:17: 13:29
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -45,7 +45,7 @@ fn main() -> () {
|
||||
// + span: $DIR/array-index-is-temporary.rs:13:26: 13:28
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x0000002c)) }
|
||||
StorageLive(_2); // scope 1 at $DIR/array-index-is-temporary.rs:14:9: 14:14
|
||||
_2 = const 1usize; // scope 1 at $DIR/array-index-is-temporary.rs:14:17: 14:18
|
||||
_2 = const 1_usize; // scope 1 at $DIR/array-index-is-temporary.rs:14:17: 14:18
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000001))
|
||||
|
@ -21,7 +21,7 @@ fn main() -> () {
|
||||
// + span: $DIR/byte_slice.rs:5:13: 5:19
|
||||
// + literal: Const { ty: &[u8; 3], val: Value(Scalar(alloc0)) }
|
||||
StorageLive(_2); // scope 1 at $DIR/byte_slice.rs:6:9: 6:10
|
||||
_2 = [const 5u8, const 120u8]; // scope 1 at $DIR/byte_slice.rs:6:13: 6:24
|
||||
_2 = [const 5_u8, const 120_u8]; // scope 1 at $DIR/byte_slice.rs:6:13: 6:24
|
||||
// ty::Const
|
||||
// + ty: u8
|
||||
// + val: Value(Scalar(0x05))
|
||||
|
@ -28,7 +28,7 @@
|
||||
bb0: {
|
||||
StorageLive(_2); // scope 0 at $DIR/combine_array_len.rs:5:9: 5:10
|
||||
StorageLive(_3); // scope 0 at $DIR/combine_array_len.rs:5:15: 5:16
|
||||
_3 = const 0usize; // scope 0 at $DIR/combine_array_len.rs:5:15: 5:16
|
||||
_3 = const 0_usize; // scope 0 at $DIR/combine_array_len.rs:5:15: 5:16
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -36,7 +36,7 @@
|
||||
// + span: $DIR/combine_array_len.rs:5:15: 5:16
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x00000000)) }
|
||||
- _4 = Len(_1); // scope 0 at $DIR/combine_array_len.rs:5:13: 5:17
|
||||
+ _4 = const 2usize; // scope 0 at $DIR/combine_array_len.rs:5:13: 5:17
|
||||
+ _4 = const 2_usize; // scope 0 at $DIR/combine_array_len.rs:5:13: 5:17
|
||||
+ // ty::Const
|
||||
+ // + ty: usize
|
||||
+ // + val: Value(Scalar(0x00000002))
|
||||
@ -52,7 +52,7 @@
|
||||
StorageDead(_3); // scope 0 at $DIR/combine_array_len.rs:5:17: 5:18
|
||||
StorageLive(_6); // scope 1 at $DIR/combine_array_len.rs:6:9: 6:10
|
||||
StorageLive(_7); // scope 1 at $DIR/combine_array_len.rs:6:15: 6:16
|
||||
_7 = const 1usize; // scope 1 at $DIR/combine_array_len.rs:6:15: 6:16
|
||||
_7 = const 1_usize; // scope 1 at $DIR/combine_array_len.rs:6:15: 6:16
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -60,7 +60,7 @@
|
||||
// + span: $DIR/combine_array_len.rs:6:15: 6:16
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x00000001)) }
|
||||
- _8 = Len(_1); // scope 1 at $DIR/combine_array_len.rs:6:13: 6:17
|
||||
+ _8 = const 2usize; // scope 1 at $DIR/combine_array_len.rs:6:13: 6:17
|
||||
+ _8 = const 2_usize; // scope 1 at $DIR/combine_array_len.rs:6:13: 6:17
|
||||
+ // ty::Const
|
||||
+ // + ty: usize
|
||||
+ // + val: Value(Scalar(0x00000002))
|
||||
|
@ -28,7 +28,7 @@
|
||||
bb0: {
|
||||
StorageLive(_2); // scope 0 at $DIR/combine_array_len.rs:5:9: 5:10
|
||||
StorageLive(_3); // scope 0 at $DIR/combine_array_len.rs:5:15: 5:16
|
||||
_3 = const 0usize; // scope 0 at $DIR/combine_array_len.rs:5:15: 5:16
|
||||
_3 = const 0_usize; // scope 0 at $DIR/combine_array_len.rs:5:15: 5:16
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000000))
|
||||
@ -36,7 +36,7 @@
|
||||
// + span: $DIR/combine_array_len.rs:5:15: 5:16
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000000)) }
|
||||
- _4 = Len(_1); // scope 0 at $DIR/combine_array_len.rs:5:13: 5:17
|
||||
+ _4 = const 2usize; // scope 0 at $DIR/combine_array_len.rs:5:13: 5:17
|
||||
+ _4 = const 2_usize; // scope 0 at $DIR/combine_array_len.rs:5:13: 5:17
|
||||
+ // ty::Const
|
||||
+ // + ty: usize
|
||||
+ // + val: Value(Scalar(0x0000000000000002))
|
||||
@ -52,7 +52,7 @@
|
||||
StorageDead(_3); // scope 0 at $DIR/combine_array_len.rs:5:17: 5:18
|
||||
StorageLive(_6); // scope 1 at $DIR/combine_array_len.rs:6:9: 6:10
|
||||
StorageLive(_7); // scope 1 at $DIR/combine_array_len.rs:6:15: 6:16
|
||||
_7 = const 1usize; // scope 1 at $DIR/combine_array_len.rs:6:15: 6:16
|
||||
_7 = const 1_usize; // scope 1 at $DIR/combine_array_len.rs:6:15: 6:16
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000001))
|
||||
@ -60,7 +60,7 @@
|
||||
// + span: $DIR/combine_array_len.rs:6:15: 6:16
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000001)) }
|
||||
- _8 = Len(_1); // scope 1 at $DIR/combine_array_len.rs:6:13: 6:17
|
||||
+ _8 = const 2usize; // scope 1 at $DIR/combine_array_len.rs:6:13: 6:17
|
||||
+ _8 = const 2_usize; // scope 1 at $DIR/combine_array_len.rs:6:13: 6:17
|
||||
+ // ty::Const
|
||||
+ // + ty: usize
|
||||
+ // + val: Value(Scalar(0x0000000000000002))
|
||||
|
@ -14,7 +14,7 @@
|
||||
StorageLive(_1); // scope 0 at $DIR/aggregate.rs:5:9: 5:10
|
||||
StorageLive(_2); // scope 0 at $DIR/aggregate.rs:5:13: 5:24
|
||||
StorageLive(_3); // scope 0 at $DIR/aggregate.rs:5:13: 5:22
|
||||
_3 = (const 0i32, const 1i32, const 2i32); // scope 0 at $DIR/aggregate.rs:5:13: 5:22
|
||||
_3 = (const 0_i32, const 1_i32, const 2_i32); // scope 0 at $DIR/aggregate.rs:5:13: 5:22
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -34,8 +34,8 @@
|
||||
// + span: $DIR/aggregate.rs:5:20: 5:21
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000002)) }
|
||||
- _2 = (_3.1: i32); // scope 0 at $DIR/aggregate.rs:5:13: 5:24
|
||||
- _1 = Add(move _2, const 0i32); // scope 0 at $DIR/aggregate.rs:5:13: 5:28
|
||||
+ _2 = const 1i32; // scope 0 at $DIR/aggregate.rs:5:13: 5:24
|
||||
- _1 = Add(move _2, const 0_i32); // scope 0 at $DIR/aggregate.rs:5:13: 5:28
|
||||
+ _2 = const 1_i32; // scope 0 at $DIR/aggregate.rs:5:13: 5:24
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
- // + val: Value(Scalar(0x00000000))
|
||||
@ -45,7 +45,7 @@
|
||||
- // + literal: Const { ty: i32, val: Value(Scalar(0x00000000)) }
|
||||
+ // + span: $DIR/aggregate.rs:5:13: 5:24
|
||||
+ // + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) }
|
||||
+ _1 = const 1i32; // scope 0 at $DIR/aggregate.rs:5:13: 5:28
|
||||
+ _1 = const 1_i32; // scope 0 at $DIR/aggregate.rs:5:13: 5:28
|
||||
+ // ty::Const
|
||||
+ // + ty: i32
|
||||
+ // + val: Value(Scalar(0x00000001))
|
||||
|
@ -15,7 +15,7 @@
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/array_index.rs:5:9: 5:10
|
||||
StorageLive(_2); // scope 0 at $DIR/array_index.rs:5:18: 5:30
|
||||
_2 = [const 0u32, const 1u32, const 2u32, const 3u32]; // scope 0 at $DIR/array_index.rs:5:18: 5:30
|
||||
_2 = [const 0_u32, const 1_u32, const 2_u32, const 3_u32]; // scope 0 at $DIR/array_index.rs:5:18: 5:30
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -41,14 +41,14 @@
|
||||
// + span: $DIR/array_index.rs:5:28: 5:29
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x00000003)) }
|
||||
StorageLive(_3); // scope 0 at $DIR/array_index.rs:5:31: 5:32
|
||||
_3 = const 2usize; // scope 0 at $DIR/array_index.rs:5:31: 5:32
|
||||
_3 = const 2_usize; // scope 0 at $DIR/array_index.rs:5:31: 5:32
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
// mir::Constant
|
||||
// + span: $DIR/array_index.rs:5:31: 5:32
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x00000002)) }
|
||||
_4 = const 4usize; // scope 0 at $DIR/array_index.rs:5:18: 5:33
|
||||
_4 = const 4_usize; // scope 0 at $DIR/array_index.rs:5:18: 5:33
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000004))
|
||||
@ -75,7 +75,7 @@
|
||||
|
||||
bb1: {
|
||||
- _1 = _2[_3]; // scope 0 at $DIR/array_index.rs:5:18: 5:33
|
||||
+ _1 = const 2u32; // scope 0 at $DIR/array_index.rs:5:18: 5:33
|
||||
+ _1 = const 2_u32; // scope 0 at $DIR/array_index.rs:5:18: 5:33
|
||||
+ // ty::Const
|
||||
+ // + ty: u32
|
||||
+ // + val: Value(Scalar(0x00000002))
|
||||
|
@ -15,7 +15,7 @@
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/array_index.rs:5:9: 5:10
|
||||
StorageLive(_2); // scope 0 at $DIR/array_index.rs:5:18: 5:30
|
||||
_2 = [const 0u32, const 1u32, const 2u32, const 3u32]; // scope 0 at $DIR/array_index.rs:5:18: 5:30
|
||||
_2 = [const 0_u32, const 1_u32, const 2_u32, const 3_u32]; // scope 0 at $DIR/array_index.rs:5:18: 5:30
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -41,14 +41,14 @@
|
||||
// + span: $DIR/array_index.rs:5:28: 5:29
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x00000003)) }
|
||||
StorageLive(_3); // scope 0 at $DIR/array_index.rs:5:31: 5:32
|
||||
_3 = const 2usize; // scope 0 at $DIR/array_index.rs:5:31: 5:32
|
||||
_3 = const 2_usize; // scope 0 at $DIR/array_index.rs:5:31: 5:32
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000002))
|
||||
// mir::Constant
|
||||
// + span: $DIR/array_index.rs:5:31: 5:32
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000002)) }
|
||||
_4 = const 4usize; // scope 0 at $DIR/array_index.rs:5:18: 5:33
|
||||
_4 = const 4_usize; // scope 0 at $DIR/array_index.rs:5:18: 5:33
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000004))
|
||||
@ -75,7 +75,7 @@
|
||||
|
||||
bb1: {
|
||||
- _1 = _2[_3]; // scope 0 at $DIR/array_index.rs:5:18: 5:33
|
||||
+ _1 = const 2u32; // scope 0 at $DIR/array_index.rs:5:18: 5:33
|
||||
+ _1 = const 2_u32; // scope 0 at $DIR/array_index.rs:5:18: 5:33
|
||||
+ // ty::Const
|
||||
+ // + ty: u32
|
||||
+ // + val: Value(Scalar(0x00000002))
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/bad_op_div_by_zero.rs:4:9: 4:10
|
||||
_1 = const 0i32; // scope 0 at $DIR/bad_op_div_by_zero.rs:4:13: 4:14
|
||||
_1 = const 0_i32; // scope 0 at $DIR/bad_op_div_by_zero.rs:4:13: 4:14
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -29,8 +29,8 @@
|
||||
StorageLive(_2); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:9: 5:11
|
||||
StorageLive(_3); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:18: 5:19
|
||||
- _3 = _1; // scope 1 at $DIR/bad_op_div_by_zero.rs:5:18: 5:19
|
||||
- _4 = Eq(_3, const 0i32); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
+ _3 = const 0i32; // scope 1 at $DIR/bad_op_div_by_zero.rs:5:18: 5:19
|
||||
- _4 = Eq(_3, const 0_i32); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
+ _3 = const 0_i32; // scope 1 at $DIR/bad_op_div_by_zero.rs:5:18: 5:19
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -45,11 +45,17 @@
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x01)) }
|
||||
assert(!move _4, "attempt to divide by zero") -> bb1; // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
assert(!move _4, "attempt to divide {} by zero", const 1_i32) -> bb1; // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/bad_op_div_by_zero.rs:5:14: 5:15
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) }
|
||||
}
|
||||
|
||||
bb1: {
|
||||
- _5 = Eq(_3, const -1i32); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
- _5 = Eq(_3, const -1_i32); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
+ _5 = const false; // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
// ty::Const
|
||||
- // + ty: i32
|
||||
@ -59,7 +65,7 @@
|
||||
// mir::Constant
|
||||
// + span: $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
- // + literal: Const { ty: i32, val: Value(Scalar(0xffffffff)) }
|
||||
- _6 = Eq(const 1i32, const i32::MIN); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
- _6 = Eq(const 1_i32, const i32::MIN); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ _6 = const false; // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
// ty::Const
|
||||
@ -82,19 +88,25 @@
|
||||
// + span: $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
- // + literal: Const { ty: i32, val: Value(Scalar(0x80000000)) }
|
||||
- _7 = BitAnd(move _5, move _6); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
- assert(!move _7, "attempt to divide with overflow") -> bb2; // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
- assert(!move _7, "attempt to compute `{} / {}` which would overflow", const 1_i32, _3) -> bb2; // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ assert(!const false, "attempt to divide with overflow") -> bb2; // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
+ assert(!const false, "attempt to compute `{} / {}` which would overflow", const 1_i32, _3) -> bb2; // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
+ // ty::Const
|
||||
+ // + ty: bool
|
||||
+ // + val: Value(Scalar(0x00))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/bad_op_div_by_zero.rs:5:14: 5:15
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) }
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_2 = Div(const 1i32, move _3); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
_2 = Div(const 1_i32, move _3); // scope 1 at $DIR/bad_op_div_by_zero.rs:5:14: 5:19
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/bad_op_mod_by_zero.rs:4:9: 4:10
|
||||
_1 = const 0i32; // scope 0 at $DIR/bad_op_mod_by_zero.rs:4:13: 4:14
|
||||
_1 = const 0_i32; // scope 0 at $DIR/bad_op_mod_by_zero.rs:4:13: 4:14
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -29,8 +29,8 @@
|
||||
StorageLive(_2); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:9: 5:11
|
||||
StorageLive(_3); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:18: 5:19
|
||||
- _3 = _1; // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:18: 5:19
|
||||
- _4 = Eq(_3, const 0i32); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
+ _3 = const 0i32; // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:18: 5:19
|
||||
- _4 = Eq(_3, const 0_i32); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
+ _3 = const 0_i32; // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:18: 5:19
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -45,11 +45,17 @@
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x01)) }
|
||||
assert(!move _4, "attempt to calculate the remainder with a divisor of zero") -> bb1; // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
assert(!move _4, "attempt to calculate the remainder of {} with a divisor of zero", const 1_i32) -> bb1; // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/bad_op_mod_by_zero.rs:5:14: 5:15
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) }
|
||||
}
|
||||
|
||||
bb1: {
|
||||
- _5 = Eq(_3, const -1i32); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
- _5 = Eq(_3, const -1_i32); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
+ _5 = const false; // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
// ty::Const
|
||||
- // + ty: i32
|
||||
@ -59,7 +65,7 @@
|
||||
// mir::Constant
|
||||
// + span: $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
- // + literal: Const { ty: i32, val: Value(Scalar(0xffffffff)) }
|
||||
- _6 = Eq(const 1i32, const i32::MIN); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
- _6 = Eq(const 1_i32, const i32::MIN); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ _6 = const false; // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
// ty::Const
|
||||
@ -82,19 +88,25 @@
|
||||
// + span: $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
- // + literal: Const { ty: i32, val: Value(Scalar(0x80000000)) }
|
||||
- _7 = BitAnd(move _5, move _6); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
- assert(!move _7, "attempt to calculate the remainder with overflow") -> bb2; // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
- assert(!move _7, "attempt to compute the remainder of `{} % {}` which would overflow", const 1_i32, _3) -> bb2; // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ assert(!const false, "attempt to calculate the remainder with overflow") -> bb2; // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
+ assert(!const false, "attempt to compute the remainder of `{} % {}` which would overflow", const 1_i32, _3) -> bb2; // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
+ // ty::Const
|
||||
+ // + ty: bool
|
||||
+ // + val: Value(Scalar(0x00))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/bad_op_mod_by_zero.rs:5:14: 5:15
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) }
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_2 = Rem(const 1i32, move _3); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
_2 = Rem(const 1_i32, move _3); // scope 1 at $DIR/bad_op_mod_by_zero.rs:5:14: 5:19
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
|
@ -39,7 +39,7 @@
|
||||
StorageDead(_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:5:35: 5:36
|
||||
StorageLive(_5); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:7:13: 7:15
|
||||
StorageLive(_6); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:7:23: 7:24
|
||||
_6 = const 3usize; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:7:23: 7:24
|
||||
_6 = const 3_usize; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:7:23: 7:24
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
|
@ -39,7 +39,7 @@
|
||||
StorageDead(_3); // scope 0 at $DIR/bad_op_unsafe_oob_for_slices.rs:5:35: 5:36
|
||||
StorageLive(_5); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:7:13: 7:15
|
||||
StorageLive(_6); // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:7:23: 7:24
|
||||
_6 = const 3usize; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:7:23: 7:24
|
||||
_6 = const 3_usize; // scope 2 at $DIR/bad_op_unsafe_oob_for_slices.rs:7:23: 7:24
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000003))
|
||||
|
@ -17,7 +17,7 @@
|
||||
StorageLive(_3); // scope 0 at $DIR/boxes.rs:12:14: 12:22
|
||||
StorageLive(_4); // scope 0 at $DIR/boxes.rs:12:14: 12:22
|
||||
_4 = Box(i32); // scope 0 at $DIR/boxes.rs:12:14: 12:22
|
||||
(*_4) = const 42i32; // scope 0 at $DIR/boxes.rs:12:19: 12:21
|
||||
(*_4) = const 42_i32; // scope 0 at $DIR/boxes.rs:12:19: 12:21
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -27,7 +27,7 @@
|
||||
_3 = move _4; // scope 0 at $DIR/boxes.rs:12:14: 12:22
|
||||
StorageDead(_4); // scope 0 at $DIR/boxes.rs:12:21: 12:22
|
||||
_2 = (*_3); // scope 0 at $DIR/boxes.rs:12:13: 12:22
|
||||
_1 = Add(move _2, const 0i32); // scope 0 at $DIR/boxes.rs:12:13: 12:26
|
||||
_1 = Add(move _2, const 0_i32); // scope 0 at $DIR/boxes.rs:12:13: 12:26
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
|
@ -14,8 +14,8 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/cast.rs:4:9: 4:10
|
||||
- _1 = const 42u8 as u32 (Misc); // scope 0 at $DIR/cast.rs:4:13: 4:24
|
||||
+ _1 = const 42u32; // scope 0 at $DIR/cast.rs:4:13: 4:24
|
||||
- _1 = const 42_u8 as u32 (Misc); // scope 0 at $DIR/cast.rs:4:13: 4:24
|
||||
+ _1 = const 42_u32; // scope 0 at $DIR/cast.rs:4:13: 4:24
|
||||
// ty::Const
|
||||
- // + ty: u8
|
||||
- // + val: Value(Scalar(0x2a))
|
||||
@ -23,7 +23,7 @@
|
||||
- // + span: $DIR/cast.rs:4:13: 4:17
|
||||
- // + literal: Const { ty: u8, val: Value(Scalar(0x2a)) }
|
||||
- StorageLive(_2); // scope 1 at $DIR/cast.rs:6:9: 6:10
|
||||
- _2 = const 42u32 as u8 (Misc); // scope 1 at $DIR/cast.rs:6:13: 6:24
|
||||
- _2 = const 42_u32 as u8 (Misc); // scope 1 at $DIR/cast.rs:6:13: 6:24
|
||||
- // ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -32,7 +32,7 @@
|
||||
+ // + span: $DIR/cast.rs:4:13: 4:24
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x0000002a)) }
|
||||
+ StorageLive(_2); // scope 1 at $DIR/cast.rs:6:9: 6:10
|
||||
+ _2 = const 42u8; // scope 1 at $DIR/cast.rs:6:13: 6:24
|
||||
+ _2 = const 42_u8; // scope 1 at $DIR/cast.rs:6:13: 6:24
|
||||
+ // ty::Const
|
||||
+ // + ty: u8
|
||||
+ // + val: Value(Scalar(0x2a))
|
||||
|
@ -11,8 +11,8 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/checked_add.rs:5:9: 5:10
|
||||
- _2 = CheckedAdd(const 1u32, const 1u32); // scope 0 at $DIR/checked_add.rs:5:18: 5:23
|
||||
+ _2 = (const 2u32, const false); // scope 0 at $DIR/checked_add.rs:5:18: 5:23
|
||||
- _2 = CheckedAdd(const 1_u32, const 1_u32); // scope 0 at $DIR/checked_add.rs:5:18: 5:23
|
||||
+ _2 = (const 2_u32, const false); // scope 0 at $DIR/checked_add.rs:5:18: 5:23
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
- // + val: Value(Scalar(0x00000001))
|
||||
@ -30,21 +30,33 @@
|
||||
// mir::Constant
|
||||
- // + span: $DIR/checked_add.rs:5:22: 5:23
|
||||
- // + literal: Const { ty: u32, val: Value(Scalar(0x00000001)) }
|
||||
- assert(!move (_2.1: bool), "attempt to add with overflow") -> bb1; // scope 0 at $DIR/checked_add.rs:5:18: 5:23
|
||||
- assert(!move (_2.1: bool), "attempt to compute `{} + {}` which would overflow", const 1_u32, const 1_u32) -> bb1; // scope 0 at $DIR/checked_add.rs:5:18: 5:23
|
||||
+ // + span: $DIR/checked_add.rs:5:18: 5:23
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ assert(!const false, "attempt to add with overflow") -> bb1; // scope 0 at $DIR/checked_add.rs:5:18: 5:23
|
||||
+ // ty::Const
|
||||
+ assert(!const false, "attempt to compute `{} + {}` which would overflow", const 1_u32, const 1_u32) -> bb1; // scope 0 at $DIR/checked_add.rs:5:18: 5:23
|
||||
// ty::Const
|
||||
+ // + ty: bool
|
||||
+ // + val: Value(Scalar(0x00))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/checked_add.rs:5:18: 5:23
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ // ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/checked_add.rs:5:18: 5:19
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x00000001)) }
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/checked_add.rs:5:22: 5:23
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x00000001)) }
|
||||
}
|
||||
|
||||
bb1: {
|
||||
- _1 = move (_2.0: u32); // scope 0 at $DIR/checked_add.rs:5:18: 5:23
|
||||
+ _1 = const 2u32; // scope 0 at $DIR/checked_add.rs:5:18: 5:23
|
||||
+ _1 = const 2_u32; // scope 0 at $DIR/checked_add.rs:5:18: 5:23
|
||||
+ // ty::Const
|
||||
+ // + ty: u32
|
||||
+ // + val: Value(Scalar(0x00000002))
|
||||
|
@ -25,17 +25,17 @@
|
||||
- // + span: $DIR/discriminant.rs:11:39: 11:43
|
||||
- // + literal: Const { ty: bool, val: Value(Scalar(0x01)) }
|
||||
- _4 = discriminant(_3); // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
- switchInt(move _4) -> [1isize: bb2, otherwise: bb1]; // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
- switchInt(move _4) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
+ // + span: $DIR/discriminant.rs:11:34: 11:44
|
||||
+ // + literal: Const { ty: std::option::Option<bool>, val: Value(Scalar(0x01)) }
|
||||
+ _4 = const 1isize; // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
+ _4 = const 1_isize; // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
+ // ty::Const
|
||||
+ // + ty: isize
|
||||
+ // + val: Value(Scalar(0x00000001))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/discriminant.rs:11:21: 11:31
|
||||
+ // + literal: Const { ty: isize, val: Value(Scalar(0x00000001)) }
|
||||
+ switchInt(const 1isize) -> [1isize: bb2, otherwise: bb1]; // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
+ switchInt(const 1_isize) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
+ // ty::Const
|
||||
+ // + ty: isize
|
||||
+ // + val: Value(Scalar(0x00000001))
|
||||
@ -45,7 +45,7 @@
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_2 = const 10i32; // scope 0 at $DIR/discriminant.rs:11:59: 11:61
|
||||
_2 = const 10_i32; // scope 0 at $DIR/discriminant.rs:11:59: 11:61
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000000a))
|
||||
@ -60,7 +60,7 @@
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_2 = const 42i32; // scope 0 at $DIR/discriminant.rs:11:47: 11:49
|
||||
_2 = const 42_i32; // scope 0 at $DIR/discriminant.rs:11:47: 11:49
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -71,7 +71,7 @@
|
||||
}
|
||||
|
||||
bb4: {
|
||||
_1 = Add(move _2, const 0i32); // scope 0 at $DIR/discriminant.rs:11:13: 11:68
|
||||
_1 = Add(move _2, const 0_i32); // scope 0 at $DIR/discriminant.rs:11:13: 11:68
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
|
@ -25,17 +25,17 @@
|
||||
- // + span: $DIR/discriminant.rs:11:39: 11:43
|
||||
- // + literal: Const { ty: bool, val: Value(Scalar(0x01)) }
|
||||
- _4 = discriminant(_3); // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
- switchInt(move _4) -> [1isize: bb2, otherwise: bb1]; // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
- switchInt(move _4) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
+ // + span: $DIR/discriminant.rs:11:34: 11:44
|
||||
+ // + literal: Const { ty: std::option::Option<bool>, val: Value(Scalar(0x01)) }
|
||||
+ _4 = const 1isize; // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
+ _4 = const 1_isize; // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
+ // ty::Const
|
||||
+ // + ty: isize
|
||||
+ // + val: Value(Scalar(0x0000000000000001))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/discriminant.rs:11:21: 11:31
|
||||
+ // + literal: Const { ty: isize, val: Value(Scalar(0x0000000000000001)) }
|
||||
+ switchInt(const 1isize) -> [1isize: bb2, otherwise: bb1]; // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
+ switchInt(const 1_isize) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/discriminant.rs:11:21: 11:31
|
||||
+ // ty::Const
|
||||
+ // + ty: isize
|
||||
+ // + val: Value(Scalar(0x0000000000000001))
|
||||
@ -45,7 +45,7 @@
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_2 = const 10i32; // scope 0 at $DIR/discriminant.rs:11:59: 11:61
|
||||
_2 = const 10_i32; // scope 0 at $DIR/discriminant.rs:11:59: 11:61
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000000a))
|
||||
@ -60,7 +60,7 @@
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_2 = const 42i32; // scope 0 at $DIR/discriminant.rs:11:47: 11:49
|
||||
_2 = const 42_i32; // scope 0 at $DIR/discriminant.rs:11:47: 11:49
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -71,7 +71,7 @@
|
||||
}
|
||||
|
||||
bb4: {
|
||||
_1 = Add(move _2, const 0i32); // scope 0 at $DIR/discriminant.rs:11:13: 11:68
|
||||
_1 = Add(move _2, const 0_i32); // scope 0 at $DIR/discriminant.rs:11:13: 11:68
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
|
@ -13,8 +13,8 @@
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/indirect.rs:5:9: 5:10
|
||||
StorageLive(_2); // scope 0 at $DIR/indirect.rs:5:13: 5:25
|
||||
- _2 = const 2u32 as u8 (Misc); // scope 0 at $DIR/indirect.rs:5:13: 5:25
|
||||
+ _2 = const 2u8; // scope 0 at $DIR/indirect.rs:5:13: 5:25
|
||||
- _2 = const 2_u32 as u8 (Misc); // scope 0 at $DIR/indirect.rs:5:13: 5:25
|
||||
+ _2 = const 2_u8; // scope 0 at $DIR/indirect.rs:5:13: 5:25
|
||||
// ty::Const
|
||||
- // + ty: u32
|
||||
- // + val: Value(Scalar(0x00000002))
|
||||
@ -23,10 +23,10 @@
|
||||
// mir::Constant
|
||||
- // + span: $DIR/indirect.rs:5:14: 5:18
|
||||
- // + literal: Const { ty: u32, val: Value(Scalar(0x00000002)) }
|
||||
- _3 = CheckedAdd(move _2, const 1u8); // scope 0 at $DIR/indirect.rs:5:13: 5:29
|
||||
- _3 = CheckedAdd(_2, const 1_u8); // scope 0 at $DIR/indirect.rs:5:13: 5:29
|
||||
+ // + span: $DIR/indirect.rs:5:13: 5:25
|
||||
+ // + literal: Const { ty: u8, val: Value(Scalar(0x02)) }
|
||||
+ _3 = (const 3u8, const false); // scope 0 at $DIR/indirect.rs:5:13: 5:29
|
||||
+ _3 = (const 3_u8, const false); // scope 0 at $DIR/indirect.rs:5:13: 5:29
|
||||
// ty::Const
|
||||
// + ty: u8
|
||||
- // + val: Value(Scalar(0x01))
|
||||
@ -34,27 +34,33 @@
|
||||
// mir::Constant
|
||||
- // + span: $DIR/indirect.rs:5:28: 5:29
|
||||
- // + literal: Const { ty: u8, val: Value(Scalar(0x01)) }
|
||||
- assert(!move (_3.1: bool), "attempt to add with overflow") -> bb1; // scope 0 at $DIR/indirect.rs:5:13: 5:29
|
||||
- assert(!move (_3.1: bool), "attempt to compute `{} + {}` which would overflow", move _2, const 1_u8) -> bb1; // scope 0 at $DIR/indirect.rs:5:13: 5:29
|
||||
+ // + span: $DIR/indirect.rs:5:13: 5:29
|
||||
+ // + literal: Const { ty: u8, val: Value(Scalar(0x03)) }
|
||||
// ty::Const
|
||||
+ // + ty: bool
|
||||
+ // + val: Value(Scalar(0x00))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/indirect.rs:5:13: 5:29
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ assert(!const false, "attempt to compute `{} + {}` which would overflow", move _2, const 1_u8) -> bb1; // scope 0 at $DIR/indirect.rs:5:13: 5:29
|
||||
+ // ty::Const
|
||||
+ // + ty: bool
|
||||
+ // + val: Value(Scalar(0x00))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/indirect.rs:5:13: 5:29
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ assert(!const false, "attempt to add with overflow") -> bb1; // scope 0 at $DIR/indirect.rs:5:13: 5:29
|
||||
+ // ty::Const
|
||||
+ // + ty: bool
|
||||
+ // + val: Value(Scalar(0x00))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/indirect.rs:5:13: 5:29
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
// + ty: u8
|
||||
// + val: Value(Scalar(0x01))
|
||||
// mir::Constant
|
||||
// + span: $DIR/indirect.rs:5:28: 5:29
|
||||
// + literal: Const { ty: u8, val: Value(Scalar(0x01)) }
|
||||
}
|
||||
|
||||
bb1: {
|
||||
- _1 = move (_3.0: u8); // scope 0 at $DIR/indirect.rs:5:13: 5:29
|
||||
+ _1 = const 3u8; // scope 0 at $DIR/indirect.rs:5:13: 5:29
|
||||
+ _1 = const 3_u8; // scope 0 at $DIR/indirect.rs:5:13: 5:29
|
||||
+ // ty::Const
|
||||
+ // + ty: u8
|
||||
+ // + val: Value(Scalar(0x03))
|
||||
|
@ -19,7 +19,7 @@
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/issue-66971.rs:16:13: 16:15
|
||||
+ // + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
|
||||
_2 = (move _3, const 0u8, const 0u8); // scope 0 at $DIR/issue-66971.rs:16:12: 16:22
|
||||
_2 = (move _3, const 0_u8, const 0_u8); // scope 0 at $DIR/issue-66971.rs:16:12: 16:22
|
||||
// ty::Const
|
||||
// + ty: u8
|
||||
// + val: Value(Scalar(0x00))
|
||||
|
@ -11,7 +11,7 @@
|
||||
StorageLive(_1); // scope 0 at $DIR/issue-67019.rs:11:5: 11:20
|
||||
StorageLive(_2); // scope 0 at $DIR/issue-67019.rs:11:10: 11:19
|
||||
StorageLive(_3); // scope 0 at $DIR/issue-67019.rs:11:11: 11:17
|
||||
_3 = (const 1u8, const 2u8); // scope 0 at $DIR/issue-67019.rs:11:11: 11:17
|
||||
_3 = (const 1_u8, const 2_u8); // scope 0 at $DIR/issue-67019.rs:11:11: 11:17
|
||||
// ty::Const
|
||||
// + ty: u8
|
||||
// + val: Value(Scalar(0x01))
|
||||
|
@ -14,14 +14,14 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/mutable_variable.rs:5:9: 5:14
|
||||
_1 = const 42i32; // scope 0 at $DIR/mutable_variable.rs:5:17: 5:19
|
||||
_1 = const 42_i32; // scope 0 at $DIR/mutable_variable.rs:5:17: 5:19
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
// mir::Constant
|
||||
// + span: $DIR/mutable_variable.rs:5:17: 5:19
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x0000002a)) }
|
||||
_1 = const 99i32; // scope 1 at $DIR/mutable_variable.rs:6:5: 6:11
|
||||
_1 = const 99_i32; // scope 1 at $DIR/mutable_variable.rs:6:5: 6:11
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000063))
|
||||
@ -30,7 +30,7 @@
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000063)) }
|
||||
StorageLive(_2); // scope 1 at $DIR/mutable_variable.rs:7:9: 7:10
|
||||
- _2 = _1; // scope 1 at $DIR/mutable_variable.rs:7:13: 7:14
|
||||
+ _2 = const 99i32; // scope 1 at $DIR/mutable_variable.rs:7:13: 7:14
|
||||
+ _2 = const 99_i32; // scope 1 at $DIR/mutable_variable.rs:7:13: 7:14
|
||||
+ // ty::Const
|
||||
+ // + ty: i32
|
||||
+ // + val: Value(Scalar(0x00000063))
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/mutable_variable_aggregate.rs:5:9: 5:14
|
||||
_1 = (const 42i32, const 43i32); // scope 0 at $DIR/mutable_variable_aggregate.rs:5:17: 5:25
|
||||
_1 = (const 42_i32, const 43_i32); // scope 0 at $DIR/mutable_variable_aggregate.rs:5:17: 5:25
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -29,7 +29,7 @@
|
||||
- // + span: $DIR/mutable_variable_aggregate.rs:5:22: 5:24
|
||||
+ // + span: $DIR/mutable_variable_aggregate.rs:5:17: 5:25
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x0000002b)) }
|
||||
(_1.1: i32) = const 99i32; // scope 1 at $DIR/mutable_variable_aggregate.rs:6:5: 6:13
|
||||
(_1.1: i32) = const 99_i32; // scope 1 at $DIR/mutable_variable_aggregate.rs:6:5: 6:13
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000063))
|
||||
@ -38,7 +38,7 @@
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000063)) }
|
||||
StorageLive(_2); // scope 1 at $DIR/mutable_variable_aggregate.rs:7:9: 7:10
|
||||
- _2 = _1; // scope 1 at $DIR/mutable_variable_aggregate.rs:7:13: 7:14
|
||||
+ _2 = (const 42i32, const 99i32); // scope 1 at $DIR/mutable_variable_aggregate.rs:7:13: 7:14
|
||||
+ _2 = (const 42_i32, const 99_i32); // scope 1 at $DIR/mutable_variable_aggregate.rs:7:13: 7:14
|
||||
+ // ty::Const
|
||||
+ // + ty: i32
|
||||
+ // + val: Value(Scalar(0x0000002a))
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/mutable_variable_aggregate_mut_ref.rs:5:9: 5:14
|
||||
_1 = (const 42i32, const 43i32); // scope 0 at $DIR/mutable_variable_aggregate_mut_ref.rs:5:17: 5:25
|
||||
_1 = (const 42_i32, const 43_i32); // scope 0 at $DIR/mutable_variable_aggregate_mut_ref.rs:5:17: 5:25
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -35,7 +35,7 @@
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x0000002b)) }
|
||||
StorageLive(_2); // scope 1 at $DIR/mutable_variable_aggregate_mut_ref.rs:6:9: 6:10
|
||||
_2 = &mut _1; // scope 1 at $DIR/mutable_variable_aggregate_mut_ref.rs:6:13: 6:19
|
||||
((*_2).1: i32) = const 99i32; // scope 2 at $DIR/mutable_variable_aggregate_mut_ref.rs:7:5: 7:13
|
||||
((*_2).1: i32) = const 99_i32; // scope 2 at $DIR/mutable_variable_aggregate_mut_ref.rs:7:5: 7:13
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000063))
|
||||
|
@ -24,14 +24,14 @@
|
||||
}
|
||||
|
||||
bb1: {
|
||||
(_1.1: i32) = const 99i32; // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:6:5: 6:13
|
||||
(_1.1: i32) = const 99_i32; // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:6:5: 6:13
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000063))
|
||||
// mir::Constant
|
||||
// + span: $DIR/mutable_variable_aggregate_partial_read.rs:6:11: 6:13
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000063)) }
|
||||
(_1.0: i32) = const 42i32; // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:7:5: 7:13
|
||||
(_1.0: i32) = const 42_i32; // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:7:5: 7:13
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -40,7 +40,7 @@
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x0000002a)) }
|
||||
StorageLive(_2); // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:8:9: 8:10
|
||||
- _2 = (_1.1: i32); // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:8:13: 8:16
|
||||
+ _2 = const 99i32; // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:8:13: 8:16
|
||||
+ _2 = const 99_i32; // scope 1 at $DIR/mutable_variable_aggregate_partial_read.rs:8:13: 8:16
|
||||
+ // ty::Const
|
||||
+ // + ty: i32
|
||||
+ // + val: Value(Scalar(0x00000063))
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/mutable_variable_no_prop.rs:7:9: 7:14
|
||||
_1 = const 42u32; // scope 0 at $DIR/mutable_variable_no_prop.rs:7:17: 7:19
|
||||
_1 = const 42_u32; // scope 0 at $DIR/mutable_variable_no_prop.rs:7:17: 7:19
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
bb1: {
|
||||
StorageLive(_2); // scope 1 at $DIR/mutable_variable_unprop_assign.rs:6:9: 6:14
|
||||
_2 = (const 1i32, const 2i32); // scope 1 at $DIR/mutable_variable_unprop_assign.rs:6:29: 6:35
|
||||
_2 = (const 1_i32, const 2_i32); // scope 1 at $DIR/mutable_variable_unprop_assign.rs:6:29: 6:35
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
|
@ -24,8 +24,8 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:12:9: 12:10
|
||||
- _2 = CheckedAdd(const 2i32, const 2i32); // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ _2 = (const 4i32, const false); // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
- _2 = CheckedAdd(const 2_i32, const 2_i32); // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ _2 = (const 4_i32, const false); // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
- // + val: Value(Scalar(0x00000002))
|
||||
@ -43,21 +43,33 @@
|
||||
// mir::Constant
|
||||
- // + span: $DIR/optimizes_into_variable.rs:12:17: 12:18
|
||||
- // + literal: Const { ty: i32, val: Value(Scalar(0x00000002)) }
|
||||
- assert(!move (_2.1: bool), "attempt to add with overflow") -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
- assert(!move (_2.1: bool), "attempt to compute `{} + {}` which would overflow", const 2_i32, const 2_i32) -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ // + span: $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ assert(!const false, "attempt to add with overflow") -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ // ty::Const
|
||||
+ assert(!const false, "attempt to compute `{} + {}` which would overflow", const 2_i32, const 2_i32) -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
// ty::Const
|
||||
+ // + ty: bool
|
||||
+ // + val: Value(Scalar(0x00))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ // ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
// mir::Constant
|
||||
// + span: $DIR/optimizes_into_variable.rs:12:13: 12:14
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000002)) }
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
// mir::Constant
|
||||
// + span: $DIR/optimizes_into_variable.rs:12:17: 12:18
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000002)) }
|
||||
}
|
||||
|
||||
bb1: {
|
||||
- _1 = move (_2.0: i32); // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ _1 = const 4i32; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ _1 = const 4_i32; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ // ty::Const
|
||||
+ // + ty: i32
|
||||
+ // + val: Value(Scalar(0x00000004))
|
||||
@ -66,7 +78,7 @@
|
||||
+ // + literal: Const { ty: i32, val: Value(Scalar(0x00000004)) }
|
||||
StorageLive(_3); // scope 1 at $DIR/optimizes_into_variable.rs:13:9: 13:10
|
||||
StorageLive(_4); // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:31
|
||||
_4 = [const 0i32, const 1i32, const 2i32, const 3i32, const 4i32, const 5i32]; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:31
|
||||
_4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:31
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -104,14 +116,14 @@
|
||||
// + span: $DIR/optimizes_into_variable.rs:13:29: 13:30
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000005)) }
|
||||
StorageLive(_5); // scope 1 at $DIR/optimizes_into_variable.rs:13:32: 13:33
|
||||
_5 = const 3usize; // scope 1 at $DIR/optimizes_into_variable.rs:13:32: 13:33
|
||||
_5 = const 3_usize; // scope 1 at $DIR/optimizes_into_variable.rs:13:32: 13:33
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
// mir::Constant
|
||||
// + span: $DIR/optimizes_into_variable.rs:13:32: 13:33
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x00000003)) }
|
||||
_6 = const 6usize; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
_6 = const 6_usize; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000006))
|
||||
@ -138,7 +150,7 @@
|
||||
|
||||
bb2: {
|
||||
- _3 = _4[_5]; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
+ _3 = const 3i32; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
+ _3 = const 3_i32; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
+ // ty::Const
|
||||
+ // + ty: i32
|
||||
+ // + val: Value(Scalar(0x00000003))
|
||||
@ -149,7 +161,7 @@
|
||||
StorageDead(_4); // scope 1 at $DIR/optimizes_into_variable.rs:13:34: 13:35
|
||||
StorageLive(_8); // scope 2 at $DIR/optimizes_into_variable.rs:14:9: 14:10
|
||||
StorageLive(_9); // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:36
|
||||
_9 = Point { x: const 12u32, y: const 42u32 }; // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:36
|
||||
_9 = Point { x: const 12_u32, y: const 42_u32 }; // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:36
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x0000000c))
|
||||
@ -163,7 +175,7 @@
|
||||
// + span: $DIR/optimizes_into_variable.rs:14:32: 14:34
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x0000002a)) }
|
||||
- _8 = (_9.1: u32); // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:38
|
||||
+ _8 = const 42u32; // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:38
|
||||
+ _8 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:38
|
||||
+ // ty::Const
|
||||
+ // + ty: u32
|
||||
+ // + val: Value(Scalar(0x0000002a))
|
||||
|
@ -17,7 +17,7 @@ fn main() -> () {
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:12:9: 12:10
|
||||
_1 = const 4i32; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
_1 = const 4_i32; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000004))
|
||||
@ -25,7 +25,7 @@ fn main() -> () {
|
||||
// + span: $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000004)) }
|
||||
StorageLive(_2); // scope 1 at $DIR/optimizes_into_variable.rs:13:9: 13:10
|
||||
_2 = const 3i32; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
_2 = const 3_i32; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
@ -33,7 +33,7 @@ fn main() -> () {
|
||||
// + span: $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000003)) }
|
||||
StorageLive(_3); // scope 2 at $DIR/optimizes_into_variable.rs:14:9: 14:10
|
||||
_3 = const 42u32; // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:38
|
||||
_3 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:38
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
|
@ -24,8 +24,8 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:12:9: 12:10
|
||||
- _2 = CheckedAdd(const 2i32, const 2i32); // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ _2 = (const 4i32, const false); // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
- _2 = CheckedAdd(const 2_i32, const 2_i32); // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ _2 = (const 4_i32, const false); // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
- // + val: Value(Scalar(0x00000002))
|
||||
@ -43,21 +43,33 @@
|
||||
// mir::Constant
|
||||
- // + span: $DIR/optimizes_into_variable.rs:12:17: 12:18
|
||||
- // + literal: Const { ty: i32, val: Value(Scalar(0x00000002)) }
|
||||
- assert(!move (_2.1: bool), "attempt to add with overflow") -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
- assert(!move (_2.1: bool), "attempt to compute `{} + {}` which would overflow", const 2_i32, const 2_i32) -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ // + span: $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ assert(!const false, "attempt to add with overflow") -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ // ty::Const
|
||||
+ assert(!const false, "attempt to compute `{} + {}` which would overflow", const 2_i32, const 2_i32) -> bb1; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
// ty::Const
|
||||
+ // + ty: bool
|
||||
+ // + val: Value(Scalar(0x00))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ // ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
// mir::Constant
|
||||
// + span: $DIR/optimizes_into_variable.rs:12:13: 12:14
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000002)) }
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
// mir::Constant
|
||||
// + span: $DIR/optimizes_into_variable.rs:12:17: 12:18
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000002)) }
|
||||
}
|
||||
|
||||
bb1: {
|
||||
- _1 = move (_2.0: i32); // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ _1 = const 4i32; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ _1 = const 4_i32; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
+ // ty::Const
|
||||
+ // + ty: i32
|
||||
+ // + val: Value(Scalar(0x00000004))
|
||||
@ -66,7 +78,7 @@
|
||||
+ // + literal: Const { ty: i32, val: Value(Scalar(0x00000004)) }
|
||||
StorageLive(_3); // scope 1 at $DIR/optimizes_into_variable.rs:13:9: 13:10
|
||||
StorageLive(_4); // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:31
|
||||
_4 = [const 0i32, const 1i32, const 2i32, const 3i32, const 4i32, const 5i32]; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:31
|
||||
_4 = [const 0_i32, const 1_i32, const 2_i32, const 3_i32, const 4_i32, const 5_i32]; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:31
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -104,14 +116,14 @@
|
||||
// + span: $DIR/optimizes_into_variable.rs:13:29: 13:30
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000005)) }
|
||||
StorageLive(_5); // scope 1 at $DIR/optimizes_into_variable.rs:13:32: 13:33
|
||||
_5 = const 3usize; // scope 1 at $DIR/optimizes_into_variable.rs:13:32: 13:33
|
||||
_5 = const 3_usize; // scope 1 at $DIR/optimizes_into_variable.rs:13:32: 13:33
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000003))
|
||||
// mir::Constant
|
||||
// + span: $DIR/optimizes_into_variable.rs:13:32: 13:33
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000003)) }
|
||||
_6 = const 6usize; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
_6 = const 6_usize; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000006))
|
||||
@ -138,7 +150,7 @@
|
||||
|
||||
bb2: {
|
||||
- _3 = _4[_5]; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
+ _3 = const 3i32; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
+ _3 = const 3_i32; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
+ // ty::Const
|
||||
+ // + ty: i32
|
||||
+ // + val: Value(Scalar(0x00000003))
|
||||
@ -149,7 +161,7 @@
|
||||
StorageDead(_4); // scope 1 at $DIR/optimizes_into_variable.rs:13:34: 13:35
|
||||
StorageLive(_8); // scope 2 at $DIR/optimizes_into_variable.rs:14:9: 14:10
|
||||
StorageLive(_9); // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:36
|
||||
_9 = Point { x: const 12u32, y: const 42u32 }; // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:36
|
||||
_9 = Point { x: const 12_u32, y: const 42_u32 }; // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:36
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x0000000c))
|
||||
@ -163,7 +175,7 @@
|
||||
// + span: $DIR/optimizes_into_variable.rs:14:32: 14:34
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x0000002a)) }
|
||||
- _8 = (_9.1: u32); // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:38
|
||||
+ _8 = const 42u32; // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:38
|
||||
+ _8 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:38
|
||||
+ // ty::Const
|
||||
+ // + ty: u32
|
||||
+ // + val: Value(Scalar(0x0000002a))
|
||||
|
@ -17,7 +17,7 @@ fn main() -> () {
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:12:9: 12:10
|
||||
_1 = const 4i32; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
_1 = const 4_i32; // scope 0 at $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000004))
|
||||
@ -25,7 +25,7 @@ fn main() -> () {
|
||||
// + span: $DIR/optimizes_into_variable.rs:12:13: 12:18
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000004)) }
|
||||
StorageLive(_2); // scope 1 at $DIR/optimizes_into_variable.rs:13:9: 13:10
|
||||
_2 = const 3i32; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
_2 = const 3_i32; // scope 1 at $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
@ -33,7 +33,7 @@ fn main() -> () {
|
||||
// + span: $DIR/optimizes_into_variable.rs:13:13: 13:34
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000003)) }
|
||||
StorageLive(_3); // scope 2 at $DIR/optimizes_into_variable.rs:14:9: 14:10
|
||||
_3 = const 42u32; // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:38
|
||||
_3 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:14:13: 14:38
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
|
@ -24,7 +24,7 @@
|
||||
// + span: $DIR/read_immutable_static.rs:7:13: 7:16
|
||||
// + literal: Const { ty: &u8, val: Value(Scalar(alloc0)) }
|
||||
- _2 = (*_3); // scope 0 at $DIR/read_immutable_static.rs:7:13: 7:16
|
||||
+ _2 = const 2u8; // scope 0 at $DIR/read_immutable_static.rs:7:13: 7:16
|
||||
+ _2 = const 2_u8; // scope 0 at $DIR/read_immutable_static.rs:7:13: 7:16
|
||||
+ // ty::Const
|
||||
+ // + ty: u8
|
||||
+ // + val: Value(Scalar(0x02))
|
||||
@ -42,14 +42,14 @@
|
||||
// + literal: Const { ty: &u8, val: Value(Scalar(alloc0)) }
|
||||
- _4 = (*_5); // scope 0 at $DIR/read_immutable_static.rs:7:19: 7:22
|
||||
- _1 = Add(move _2, move _4); // scope 0 at $DIR/read_immutable_static.rs:7:13: 7:22
|
||||
+ _4 = const 2u8; // scope 0 at $DIR/read_immutable_static.rs:7:19: 7:22
|
||||
+ _4 = const 2_u8; // scope 0 at $DIR/read_immutable_static.rs:7:19: 7:22
|
||||
+ // ty::Const
|
||||
+ // + ty: u8
|
||||
+ // + val: Value(Scalar(0x02))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/read_immutable_static.rs:7:19: 7:22
|
||||
+ // + literal: Const { ty: u8, val: Value(Scalar(0x02)) }
|
||||
+ _1 = const 4u8; // scope 0 at $DIR/read_immutable_static.rs:7:13: 7:22
|
||||
+ _1 = const 4_u8; // scope 0 at $DIR/read_immutable_static.rs:7:13: 7:22
|
||||
+ // ty::Const
|
||||
+ // + ty: u8
|
||||
+ // + val: Value(Scalar(0x04))
|
||||
|
@ -20,7 +20,7 @@
|
||||
// + literal: Const { ty: &i32, val: Unevaluated(DefId(0:3 ~ ref_deref[317d]::main[0]), [], Some(promoted[0])) }
|
||||
_2 = _4; // scope 0 at $DIR/ref_deref.rs:5:6: 5:10
|
||||
- _1 = (*_2); // scope 0 at $DIR/ref_deref.rs:5:5: 5:10
|
||||
+ _1 = const 4i32; // 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
|
||||
+ // ty::Const
|
||||
+ // + ty: i32
|
||||
+ // + val: Value(Scalar(0x00000004))
|
||||
|
@ -12,7 +12,7 @@
|
||||
StorageLive(_1); // scope 0 at $DIR/ref_deref.rs:5:5: 5:10
|
||||
StorageLive(_2); // scope 0 at $DIR/ref_deref.rs:5:6: 5:10
|
||||
- StorageLive(_3); // scope 0 at $DIR/ref_deref.rs:5:8: 5:9
|
||||
- _3 = const 4i32; // scope 0 at $DIR/ref_deref.rs:5:8: 5:9
|
||||
- _3 = const 4_i32; // scope 0 at $DIR/ref_deref.rs:5:8: 5:9
|
||||
+ _4 = const main::promoted[0]; // scope 0 at $DIR/ref_deref.rs:5:6: 5:10
|
||||
// ty::Const
|
||||
- // + ty: i32
|
||||
|
@ -12,7 +12,7 @@
|
||||
StorageLive(_1); // scope 0 at $DIR/ref_deref_project.rs:5:5: 5:17
|
||||
StorageLive(_2); // scope 0 at $DIR/ref_deref_project.rs:5:6: 5:17
|
||||
- StorageLive(_3); // scope 0 at $DIR/ref_deref_project.rs:5:8: 5:14
|
||||
- _3 = (const 4i32, const 5i32); // scope 0 at $DIR/ref_deref_project.rs:5:8: 5:14
|
||||
- _3 = (const 4_i32, const 5_i32); // scope 0 at $DIR/ref_deref_project.rs:5:8: 5:14
|
||||
+ _4 = const main::promoted[0]; // scope 0 at $DIR/ref_deref_project.rs:5:6: 5:17
|
||||
// ty::Const
|
||||
- // + ty: i32
|
||||
|
@ -17,7 +17,7 @@
|
||||
StorageLive(_1); // scope 0 at $DIR/repeat.rs:6:9: 6:10
|
||||
StorageLive(_2); // scope 0 at $DIR/repeat.rs:6:18: 6:28
|
||||
StorageLive(_3); // scope 0 at $DIR/repeat.rs:6:18: 6:25
|
||||
_3 = [const 42u32; 8]; // scope 0 at $DIR/repeat.rs:6:18: 6:25
|
||||
_3 = [const 42_u32; 8]; // scope 0 at $DIR/repeat.rs:6:18: 6:25
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -25,14 +25,14 @@
|
||||
// + span: $DIR/repeat.rs:6:19: 6:21
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x0000002a)) }
|
||||
StorageLive(_4); // scope 0 at $DIR/repeat.rs:6:26: 6:27
|
||||
_4 = const 2usize; // scope 0 at $DIR/repeat.rs:6:26: 6:27
|
||||
_4 = const 2_usize; // scope 0 at $DIR/repeat.rs:6:26: 6:27
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
// mir::Constant
|
||||
// + span: $DIR/repeat.rs:6:26: 6:27
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x00000002)) }
|
||||
_5 = const 8usize; // scope 0 at $DIR/repeat.rs:6:18: 6:28
|
||||
_5 = const 8_usize; // scope 0 at $DIR/repeat.rs:6:18: 6:28
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000008))
|
||||
@ -59,8 +59,8 @@
|
||||
|
||||
bb1: {
|
||||
- _2 = _3[_4]; // scope 0 at $DIR/repeat.rs:6:18: 6:28
|
||||
- _1 = Add(move _2, const 0u32); // scope 0 at $DIR/repeat.rs:6:18: 6:32
|
||||
+ _2 = const 42u32; // scope 0 at $DIR/repeat.rs:6:18: 6:28
|
||||
- _1 = Add(move _2, const 0_u32); // scope 0 at $DIR/repeat.rs:6:18: 6:32
|
||||
+ _2 = const 42_u32; // scope 0 at $DIR/repeat.rs:6:18: 6:28
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
- // + val: Value(Scalar(0x00000000))
|
||||
@ -70,7 +70,7 @@
|
||||
- // + literal: Const { ty: u32, val: Value(Scalar(0x00000000)) }
|
||||
+ // + span: $DIR/repeat.rs:6:18: 6:28
|
||||
+ // + literal: Const { ty: u32, val: Value(Scalar(0x0000002a)) }
|
||||
+ _1 = const 42u32; // scope 0 at $DIR/repeat.rs:6:18: 6:32
|
||||
+ _1 = const 42_u32; // scope 0 at $DIR/repeat.rs:6:18: 6:32
|
||||
+ // ty::Const
|
||||
+ // + ty: u32
|
||||
+ // + val: Value(Scalar(0x0000002a))
|
||||
|
@ -17,7 +17,7 @@
|
||||
StorageLive(_1); // scope 0 at $DIR/repeat.rs:6:9: 6:10
|
||||
StorageLive(_2); // scope 0 at $DIR/repeat.rs:6:18: 6:28
|
||||
StorageLive(_3); // scope 0 at $DIR/repeat.rs:6:18: 6:25
|
||||
_3 = [const 42u32; 8]; // scope 0 at $DIR/repeat.rs:6:18: 6:25
|
||||
_3 = [const 42_u32; 8]; // scope 0 at $DIR/repeat.rs:6:18: 6:25
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -25,14 +25,14 @@
|
||||
// + span: $DIR/repeat.rs:6:19: 6:21
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x0000002a)) }
|
||||
StorageLive(_4); // scope 0 at $DIR/repeat.rs:6:26: 6:27
|
||||
_4 = const 2usize; // scope 0 at $DIR/repeat.rs:6:26: 6:27
|
||||
_4 = const 2_usize; // scope 0 at $DIR/repeat.rs:6:26: 6:27
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000002))
|
||||
// mir::Constant
|
||||
// + span: $DIR/repeat.rs:6:26: 6:27
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000002)) }
|
||||
_5 = const 8usize; // scope 0 at $DIR/repeat.rs:6:18: 6:28
|
||||
_5 = const 8_usize; // scope 0 at $DIR/repeat.rs:6:18: 6:28
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000008))
|
||||
@ -59,8 +59,8 @@
|
||||
|
||||
bb1: {
|
||||
- _2 = _3[_4]; // scope 0 at $DIR/repeat.rs:6:18: 6:28
|
||||
- _1 = Add(move _2, const 0u32); // scope 0 at $DIR/repeat.rs:6:18: 6:32
|
||||
+ _2 = const 42u32; // scope 0 at $DIR/repeat.rs:6:18: 6:28
|
||||
- _1 = Add(move _2, const 0_u32); // scope 0 at $DIR/repeat.rs:6:18: 6:32
|
||||
+ _2 = const 42_u32; // scope 0 at $DIR/repeat.rs:6:18: 6:28
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
- // + val: Value(Scalar(0x00000000))
|
||||
@ -70,7 +70,7 @@
|
||||
- // + literal: Const { ty: u32, val: Value(Scalar(0x00000000)) }
|
||||
+ // + span: $DIR/repeat.rs:6:18: 6:28
|
||||
+ // + literal: Const { ty: u32, val: Value(Scalar(0x0000002a)) }
|
||||
+ _1 = const 42u32; // scope 0 at $DIR/repeat.rs:6:18: 6:32
|
||||
+ _1 = const 42_u32; // scope 0 at $DIR/repeat.rs:6:18: 6:32
|
||||
+ // ty::Const
|
||||
+ // + ty: u32
|
||||
+ // + val: Value(Scalar(0x0000002a))
|
||||
|
@ -6,8 +6,8 @@
|
||||
let mut _1: (u32, bool); // in scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
|
||||
bb0: {
|
||||
- _1 = CheckedAdd(const 2u32, const 2u32); // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
+ _1 = (const 4u32, const false); // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
- _1 = CheckedAdd(const 2_u32, const 2_u32); // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
+ _1 = (const 4_u32, const false); // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
- // + val: Value(Scalar(0x00000002))
|
||||
@ -25,21 +25,33 @@
|
||||
// mir::Constant
|
||||
- // + span: $DIR/return_place.rs:6:9: 6:10
|
||||
- // + literal: Const { ty: u32, val: Value(Scalar(0x00000002)) }
|
||||
- assert(!move (_1.1: bool), "attempt to add with overflow") -> bb1; // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
- assert(!move (_1.1: bool), "attempt to compute `{} + {}` which would overflow", const 2_u32, const 2_u32) -> bb1; // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
+ // + span: $DIR/return_place.rs:6:5: 6:10
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ assert(!const false, "attempt to add with overflow") -> bb1; // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
+ // ty::Const
|
||||
+ assert(!const false, "attempt to compute `{} + {}` which would overflow", const 2_u32, const 2_u32) -> bb1; // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
// ty::Const
|
||||
+ // + ty: bool
|
||||
+ // + val: Value(Scalar(0x00))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/return_place.rs:6:5: 6:10
|
||||
+ // + literal: Const { ty: bool, val: Value(Scalar(0x00)) }
|
||||
+ // ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
// mir::Constant
|
||||
// + span: $DIR/return_place.rs:6:5: 6:6
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x00000002)) }
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
// mir::Constant
|
||||
// + span: $DIR/return_place.rs:6:9: 6:10
|
||||
// + literal: Const { ty: u32, val: Value(Scalar(0x00000002)) }
|
||||
}
|
||||
|
||||
bb1: {
|
||||
- _0 = move (_1.0: u32); // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
+ _0 = const 4u32; // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
+ _0 = const 4_u32; // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
+ // ty::Const
|
||||
+ // + ty: u32
|
||||
+ // + val: Value(Scalar(0x00000004))
|
||||
|
@ -4,7 +4,7 @@ fn add() -> u32 {
|
||||
let mut _0: u32; // return place in scope 0 at $DIR/return_place.rs:5:13: 5:16
|
||||
|
||||
bb0: {
|
||||
_0 = const 4u32; // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
_0 = const 4_u32; // scope 0 at $DIR/return_place.rs:6:5: 6:10
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000004))
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/scalar_literal_propagation.rs:3:9: 3:10
|
||||
_1 = const 1u32; // scope 0 at $DIR/scalar_literal_propagation.rs:3:13: 3:14
|
||||
_1 = const 1_u32; // scope 0 at $DIR/scalar_literal_propagation.rs:3:13: 3:14
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -23,14 +23,14 @@
|
||||
StorageLive(_3); // scope 1 at $DIR/scalar_literal_propagation.rs:4:13: 4:14
|
||||
- _3 = _1; // scope 1 at $DIR/scalar_literal_propagation.rs:4:13: 4:14
|
||||
- _2 = const consume(move _3) -> bb1; // scope 1 at $DIR/scalar_literal_propagation.rs:4:5: 4:15
|
||||
+ _3 = const 1u32; // scope 1 at $DIR/scalar_literal_propagation.rs:4:13: 4:14
|
||||
+ _3 = const 1_u32; // scope 1 at $DIR/scalar_literal_propagation.rs:4:13: 4:14
|
||||
// ty::Const
|
||||
+ // + ty: u32
|
||||
+ // + val: Value(Scalar(0x00000001))
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/scalar_literal_propagation.rs:4:13: 4:14
|
||||
+ // + literal: Const { ty: u32, val: Value(Scalar(0x00000001)) }
|
||||
+ _2 = const consume(const 1u32) -> bb1; // scope 1 at $DIR/scalar_literal_propagation.rs:4:5: 4:15
|
||||
+ _2 = const consume(const 1_u32) -> bb1; // scope 1 at $DIR/scalar_literal_propagation.rs:4:5: 4:15
|
||||
+ // ty::Const
|
||||
// + ty: fn(u32) {consume}
|
||||
// + val: Value(Scalar(<ZST>))
|
||||
|
@ -30,7 +30,7 @@
|
||||
_2 = move _3 as &[u32] (Pointer(Unsize)); // scope 0 at $DIR/slice_len.rs:5:6: 5:19
|
||||
StorageDead(_3); // scope 0 at $DIR/slice_len.rs:5:18: 5:19
|
||||
StorageLive(_6); // scope 0 at $DIR/slice_len.rs:5:31: 5:32
|
||||
_6 = const 1usize; // scope 0 at $DIR/slice_len.rs:5:31: 5:32
|
||||
_6 = const 1_usize; // scope 0 at $DIR/slice_len.rs:5:31: 5:32
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -40,7 +40,7 @@
|
||||
- _7 = Len((*_2)); // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
- _8 = Lt(_6, _7); // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
- assert(move _8, "index out of bounds: the len is {} but the index is {}", move _7, _6) -> bb1; // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
+ _7 = const 3usize; // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
+ _7 = const 3_usize; // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
+ // ty::Const
|
||||
+ // + ty: usize
|
||||
+ // + val: Value(Scalar(0x00000003))
|
||||
@ -65,7 +65,7 @@
|
||||
|
||||
bb1: {
|
||||
- _1 = (*_2)[_6]; // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
+ _1 = const 2u32; // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
+ _1 = const 2_u32; // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
+ // ty::Const
|
||||
+ // + ty: u32
|
||||
+ // + val: Value(Scalar(0x00000002))
|
||||
|
@ -30,7 +30,7 @@
|
||||
_2 = move _3 as &[u32] (Pointer(Unsize)); // scope 0 at $DIR/slice_len.rs:5:6: 5:19
|
||||
StorageDead(_3); // scope 0 at $DIR/slice_len.rs:5:18: 5:19
|
||||
StorageLive(_6); // scope 0 at $DIR/slice_len.rs:5:31: 5:32
|
||||
_6 = const 1usize; // scope 0 at $DIR/slice_len.rs:5:31: 5:32
|
||||
_6 = const 1_usize; // scope 0 at $DIR/slice_len.rs:5:31: 5:32
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000001))
|
||||
@ -40,7 +40,7 @@
|
||||
- _7 = Len((*_2)); // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
- _8 = Lt(_6, _7); // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
- assert(move _8, "index out of bounds: the len is {} but the index is {}", move _7, _6) -> bb1; // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
+ _7 = const 3usize; // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
+ _7 = const 3_usize; // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
+ // ty::Const
|
||||
+ // + ty: usize
|
||||
+ // + val: Value(Scalar(0x0000000000000003))
|
||||
@ -65,7 +65,7 @@
|
||||
|
||||
bb1: {
|
||||
- _1 = (*_2)[_6]; // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
+ _1 = const 2u32; // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
+ _1 = const 2_u32; // scope 0 at $DIR/slice_len.rs:5:5: 5:33
|
||||
+ // ty::Const
|
||||
+ // + ty: u32
|
||||
+ // + val: Value(Scalar(0x00000002))
|
||||
|
@ -7,15 +7,15 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/switch_int.rs:7:11: 7:12
|
||||
_1 = const 1i32; // scope 0 at $DIR/switch_int.rs:7:11: 7:12
|
||||
_1 = const 1_i32; // scope 0 at $DIR/switch_int.rs:7:11: 7:12
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/switch_int.rs:7:11: 7:12
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) }
|
||||
- switchInt(_1) -> [1i32: bb2, otherwise: bb1]; // scope 0 at $DIR/switch_int.rs:8:9: 8:10
|
||||
+ switchInt(const 1i32) -> [1i32: bb2, otherwise: bb1]; // scope 0 at $DIR/switch_int.rs:8:9: 8:10
|
||||
- switchInt(_1) -> [1_i32: bb2, otherwise: bb1]; // scope 0 at $DIR/switch_int.rs:8:9: 8:10
|
||||
+ switchInt(const 1_i32) -> [1_i32: bb2, otherwise: bb1]; // scope 0 at $DIR/switch_int.rs:8:9: 8:10
|
||||
+ // ty::Const
|
||||
+ // + ty: i32
|
||||
+ // + val: Value(Scalar(0x00000001))
|
||||
@ -25,7 +25,7 @@
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_0 = const foo(const -1i32) -> bb3; // scope 0 at $DIR/switch_int.rs:9:14: 9:21
|
||||
_0 = const foo(const -1_i32) -> bb3; // scope 0 at $DIR/switch_int.rs:9:14: 9:21
|
||||
// ty::Const
|
||||
// + ty: fn(i32) {foo}
|
||||
// + val: Value(Scalar(<ZST>))
|
||||
@ -41,7 +41,7 @@
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_0 = const foo(const 0i32) -> bb3; // scope 0 at $DIR/switch_int.rs:8:14: 8:20
|
||||
_0 = const foo(const 0_i32) -> bb3; // scope 0 at $DIR/switch_int.rs:8:14: 8:20
|
||||
// ty::Const
|
||||
// + ty: fn(i32) {foo}
|
||||
// + val: Value(Scalar(<ZST>))
|
||||
|
@ -7,14 +7,14 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/switch_int.rs:7:11: 7:12
|
||||
_1 = const 1i32; // scope 0 at $DIR/switch_int.rs:7:11: 7:12
|
||||
_1 = const 1_i32; // scope 0 at $DIR/switch_int.rs:7:11: 7:12
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/switch_int.rs:7:11: 7:12
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) }
|
||||
- switchInt(const 1i32) -> [1i32: bb2, otherwise: bb1]; // scope 0 at $DIR/switch_int.rs:8:9: 8:10
|
||||
- switchInt(const 1_i32) -> [1_i32: bb2, otherwise: bb1]; // scope 0 at $DIR/switch_int.rs:8:9: 8:10
|
||||
- // ty::Const
|
||||
- // + ty: i32
|
||||
- // + val: Value(Scalar(0x00000001))
|
||||
@ -25,7 +25,7 @@
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_0 = const foo(const -1i32) -> bb3; // scope 0 at $DIR/switch_int.rs:9:14: 9:21
|
||||
_0 = const foo(const -1_i32) -> bb3; // scope 0 at $DIR/switch_int.rs:9:14: 9:21
|
||||
// ty::Const
|
||||
// + ty: fn(i32) {foo}
|
||||
// + val: Value(Scalar(<ZST>))
|
||||
@ -41,7 +41,7 @@
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_0 = const foo(const 0i32) -> bb3; // scope 0 at $DIR/switch_int.rs:8:14: 8:20
|
||||
_0 = const foo(const 0_i32) -> bb3; // scope 0 at $DIR/switch_int.rs:8:14: 8:20
|
||||
// ty::Const
|
||||
// + ty: fn(i32) {foo}
|
||||
// + val: Value(Scalar(<ZST>))
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/tuple_literal_propagation.rs:3:9: 3:10
|
||||
_1 = (const 1u32, const 2u32); // scope 0 at $DIR/tuple_literal_propagation.rs:3:13: 3:19
|
||||
_1 = (const 1_u32, const 2_u32); // scope 0 at $DIR/tuple_literal_propagation.rs:3:13: 3:19
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -30,7 +30,7 @@
|
||||
StorageLive(_2); // scope 1 at $DIR/tuple_literal_propagation.rs:5:5: 5:15
|
||||
StorageLive(_3); // scope 1 at $DIR/tuple_literal_propagation.rs:5:13: 5:14
|
||||
- _3 = _1; // scope 1 at $DIR/tuple_literal_propagation.rs:5:13: 5:14
|
||||
+ _3 = (const 1u32, const 2u32); // scope 1 at $DIR/tuple_literal_propagation.rs:5:13: 5:14
|
||||
+ _3 = (const 1_u32, const 2_u32); // scope 1 at $DIR/tuple_literal_propagation.rs:5:13: 5:14
|
||||
+ // ty::Const
|
||||
+ // + ty: u32
|
||||
+ // + val: Value(Scalar(0x00000001))
|
||||
|
@ -19,8 +19,8 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/const_prop_miscompile.rs:12:9: 12:14
|
||||
- _1 = (const 1i32,); // scope 0 at $DIR/const_prop_miscompile.rs:12:17: 12:21
|
||||
+ _1 = const (1i32,); // scope 0 at $DIR/const_prop_miscompile.rs:12:17: 12:21
|
||||
- _1 = (const 1_i32,); // scope 0 at $DIR/const_prop_miscompile.rs:12:17: 12:21
|
||||
+ _1 = const (1_i32,); // scope 0 at $DIR/const_prop_miscompile.rs:12:17: 12:21
|
||||
// ty::Const
|
||||
- // + ty: i32
|
||||
+ // + ty: (i32,)
|
||||
@ -33,7 +33,7 @@
|
||||
StorageLive(_2); // scope 1 at $DIR/const_prop_miscompile.rs:13:5: 15:6
|
||||
StorageLive(_3); // scope 2 at $DIR/const_prop_miscompile.rs:14:10: 14:22
|
||||
_3 = &raw mut (_1.0: i32); // scope 2 at $DIR/const_prop_miscompile.rs:14:10: 14:22
|
||||
(*_3) = const 5i32; // scope 2 at $DIR/const_prop_miscompile.rs:14:9: 14:26
|
||||
(*_3) = const 5_i32; // scope 2 at $DIR/const_prop_miscompile.rs:14:9: 14:26
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000005))
|
||||
@ -52,7 +52,7 @@
|
||||
StorageLive(_4); // scope 1 at $DIR/const_prop_miscompile.rs:16:9: 16:10
|
||||
StorageLive(_5); // scope 1 at $DIR/const_prop_miscompile.rs:16:13: 16:20
|
||||
_5 = (_1.0: i32); // scope 1 at $DIR/const_prop_miscompile.rs:16:15: 16:18
|
||||
_4 = Eq(move _5, const 5i32); // scope 1 at $DIR/const_prop_miscompile.rs:16:13: 16:25
|
||||
_4 = Eq(move _5, const 5_i32); // scope 1 at $DIR/const_prop_miscompile.rs:16:13: 16:25
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000005))
|
||||
|
@ -16,8 +16,8 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/const_prop_miscompile.rs:5:9: 5:14
|
||||
- _1 = (const 1i32,); // scope 0 at $DIR/const_prop_miscompile.rs:5:17: 5:21
|
||||
+ _1 = const (1i32,); // scope 0 at $DIR/const_prop_miscompile.rs:5:17: 5:21
|
||||
- _1 = (const 1_i32,); // scope 0 at $DIR/const_prop_miscompile.rs:5:17: 5:21
|
||||
+ _1 = const (1_i32,); // scope 0 at $DIR/const_prop_miscompile.rs:5:17: 5:21
|
||||
// ty::Const
|
||||
- // + ty: i32
|
||||
+ // + ty: (i32,)
|
||||
@ -29,7 +29,7 @@
|
||||
+ // + literal: Const { ty: (i32,), val: Value(Scalar(0x00000001)) }
|
||||
StorageLive(_2); // scope 1 at $DIR/const_prop_miscompile.rs:6:6: 6:14
|
||||
_2 = &mut (_1.0: i32); // scope 1 at $DIR/const_prop_miscompile.rs:6:6: 6:14
|
||||
(*_2) = const 5i32; // scope 1 at $DIR/const_prop_miscompile.rs:6:5: 6:18
|
||||
(*_2) = const 5_i32; // scope 1 at $DIR/const_prop_miscompile.rs:6:5: 6:18
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000005))
|
||||
@ -40,7 +40,7 @@
|
||||
StorageLive(_3); // scope 1 at $DIR/const_prop_miscompile.rs:7:9: 7:10
|
||||
StorageLive(_4); // scope 1 at $DIR/const_prop_miscompile.rs:7:13: 7:20
|
||||
_4 = (_1.0: i32); // scope 1 at $DIR/const_prop_miscompile.rs:7:15: 7:18
|
||||
_3 = Eq(move _4, const 5i32); // scope 1 at $DIR/const_prop_miscompile.rs:7:13: 7:25
|
||||
_3 = Eq(move _4, const 5_i32); // scope 1 at $DIR/const_prop_miscompile.rs:7:13: 7:25
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000005))
|
||||
|
@ -12,7 +12,7 @@
|
||||
bb0: {
|
||||
StorageLive(_2); // scope 0 at $DIR/copy_propagation_arg.rs:28:9: 28:10
|
||||
_2 = _1; // scope 0 at $DIR/copy_propagation_arg.rs:28:13: 28:14
|
||||
_1 = const 123i32; // scope 1 at $DIR/copy_propagation_arg.rs:29:5: 29:12
|
||||
_1 = const 123_i32; // scope 1 at $DIR/copy_propagation_arg.rs:29:5: 29:12
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000007b))
|
||||
|
@ -23,7 +23,7 @@
|
||||
bb1: {
|
||||
StorageDead(_3); // scope 0 at $DIR/copy_propagation_arg.rs:16:12: 16:13
|
||||
StorageDead(_2); // scope 0 at $DIR/copy_propagation_arg.rs:16:13: 16:14
|
||||
_1 = const 5u8; // scope 0 at $DIR/copy_propagation_arg.rs:17:5: 17:10
|
||||
_1 = const 5_u8; // scope 0 at $DIR/copy_propagation_arg.rs:17:5: 17:10
|
||||
// ty::Const
|
||||
// + ty: u8
|
||||
// + val: Value(Scalar(0x05))
|
||||
|
@ -19,11 +19,11 @@ fn match_tuple(_1: (u32, bool, std::option::Option<i32>, u32)) -> u32 {
|
||||
|
||||
bb0: {
|
||||
FakeRead(ForMatchedPlace, _1); // scope 0 at $DIR/exponential-or.rs:7:11: 7:12
|
||||
switchInt((_1.0: u32)) -> [1u32: bb2, 4u32: bb2, otherwise: bb1]; // scope 0 at $DIR/exponential-or.rs:8:15: 8:16
|
||||
switchInt((_1.0: u32)) -> [1_u32: bb2, 4_u32: bb2, otherwise: bb1]; // scope 0 at $DIR/exponential-or.rs:8:15: 8:16
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_0 = const 0u32; // scope 0 at $DIR/exponential-or.rs:9:14: 9:15
|
||||
_0 = const 0_u32; // scope 0 at $DIR/exponential-or.rs:9:14: 9:15
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -35,15 +35,15 @@ fn match_tuple(_1: (u32, bool, std::option::Option<i32>, u32)) -> u32 {
|
||||
|
||||
bb2: {
|
||||
_2 = discriminant((_1.2: std::option::Option<i32>)); // scope 0 at $DIR/exponential-or.rs:8:37: 8:48
|
||||
switchInt(move _2) -> [0isize: bb4, 1isize: bb3, otherwise: bb1]; // scope 0 at $DIR/exponential-or.rs:8:37: 8:48
|
||||
switchInt(move _2) -> [0_isize: bb4, 1_isize: bb3, otherwise: bb1]; // scope 0 at $DIR/exponential-or.rs:8:37: 8:48
|
||||
}
|
||||
|
||||
bb3: {
|
||||
switchInt((((_1.2: std::option::Option<i32>) as Some).0: i32)) -> [1i32: bb4, 8i32: bb4, otherwise: bb1]; // scope 0 at $DIR/exponential-or.rs:8:42: 8:43
|
||||
switchInt((((_1.2: std::option::Option<i32>) as Some).0: i32)) -> [1_i32: bb4, 8_i32: bb4, otherwise: bb1]; // scope 0 at $DIR/exponential-or.rs:8:42: 8:43
|
||||
}
|
||||
|
||||
bb4: {
|
||||
_5 = Le(const 6u32, (_1.3: u32)); // scope 0 at $DIR/exponential-or.rs:8:62: 8:67
|
||||
_5 = Le(const 6_u32, (_1.3: u32)); // scope 0 at $DIR/exponential-or.rs:8:62: 8:67
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000006))
|
||||
@ -54,7 +54,7 @@ fn match_tuple(_1: (u32, bool, std::option::Option<i32>, u32)) -> u32 {
|
||||
}
|
||||
|
||||
bb5: {
|
||||
_6 = Le((_1.3: u32), const 9u32); // scope 0 at $DIR/exponential-or.rs:8:62: 8:67
|
||||
_6 = Le((_1.3: u32), const 9_u32); // scope 0 at $DIR/exponential-or.rs:8:62: 8:67
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000009))
|
||||
@ -65,7 +65,7 @@ fn match_tuple(_1: (u32, bool, std::option::Option<i32>, u32)) -> u32 {
|
||||
}
|
||||
|
||||
bb6: {
|
||||
_3 = Le(const 13u32, (_1.3: u32)); // scope 0 at $DIR/exponential-or.rs:8:70: 8:77
|
||||
_3 = Le(const 13_u32, (_1.3: u32)); // scope 0 at $DIR/exponential-or.rs:8:70: 8:77
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x0000000d))
|
||||
@ -76,7 +76,7 @@ fn match_tuple(_1: (u32, bool, std::option::Option<i32>, u32)) -> u32 {
|
||||
}
|
||||
|
||||
bb7: {
|
||||
_4 = Le((_1.3: u32), const 16u32); // scope 0 at $DIR/exponential-or.rs:8:70: 8:77
|
||||
_4 = Le((_1.3: u32), const 16_u32); // scope 0 at $DIR/exponential-or.rs:8:70: 8:77
|
||||
// ty::Const
|
||||
// + ty: u32
|
||||
// + val: Value(Scalar(0x00000010))
|
||||
|
@ -34,7 +34,7 @@ fn main::{{closure}}#0(_1: *mut [generator@$DIR/generator-drop-cleanup.rs:10:15:
|
||||
|
||||
bb0: {
|
||||
_9 = discriminant((*_1)); // scope 0 at $DIR/generator-drop-cleanup.rs:10:15: 13:6
|
||||
switchInt(move _9) -> [0u32: bb7, 3u32: bb11, otherwise: bb12]; // scope 0 at $DIR/generator-drop-cleanup.rs:10:15: 13:6
|
||||
switchInt(move _9) -> [0_u32: bb7, 3_u32: bb11, otherwise: bb12]; // scope 0 at $DIR/generator-drop-cleanup.rs:10:15: 13:6
|
||||
}
|
||||
|
||||
bb1 (cleanup): {
|
||||
|
@ -21,7 +21,7 @@ yields ()
|
||||
|
||||
bb0: {
|
||||
StorageLive(_3); // scope 0 at $DIR/generator-storage-dead-unwind.rs:23:13: 23:14
|
||||
_3 = Foo(const 5i32); // scope 0 at $DIR/generator-storage-dead-unwind.rs:23:17: 23:23
|
||||
_3 = Foo(const 5_i32); // scope 0 at $DIR/generator-storage-dead-unwind.rs:23:17: 23:23
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000005))
|
||||
@ -29,7 +29,7 @@ yields ()
|
||||
// + span: $DIR/generator-storage-dead-unwind.rs:23:21: 23:22
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000005)) }
|
||||
StorageLive(_4); // scope 1 at $DIR/generator-storage-dead-unwind.rs:24:13: 24:14
|
||||
_4 = Bar(const 6i32); // scope 1 at $DIR/generator-storage-dead-unwind.rs:24:17: 24:23
|
||||
_4 = Bar(const 6_i32); // scope 1 at $DIR/generator-storage-dead-unwind.rs:24:17: 24:23
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000006))
|
||||
|
@ -32,7 +32,7 @@ fn main::{{closure}}#0(_1: std::pin::Pin<&mut [generator@$DIR/generator-tiny.rs:
|
||||
|
||||
bb0: {
|
||||
_11 = discriminant((*(_1.0: &mut [generator@$DIR/generator-tiny.rs:19:16: 25:6 {u8, HasDrop, ()}]))); // scope 0 at $DIR/generator-tiny.rs:19:16: 25:6
|
||||
switchInt(move _11) -> [0u32: bb1, 3u32: bb5, otherwise: bb6]; // scope 0 at $DIR/generator-tiny.rs:19:16: 25:6
|
||||
switchInt(move _11) -> [0_u32: bb1, 3_u32: bb5, otherwise: bb6]; // scope 0 at $DIR/generator-tiny.rs:19:16: 25:6
|
||||
}
|
||||
|
||||
bb1: {
|
||||
|
@ -25,14 +25,14 @@ fn bar() -> bool {
|
||||
// + literal: Const { ty: fn(i32, i32) -> bool {foo}, val: Value(Scalar(<ZST>)) }
|
||||
StorageLive(_2); // scope 1 at $DIR/inline-any-operand.rs:12:5: 12:6
|
||||
_2 = _1; // scope 1 at $DIR/inline-any-operand.rs:12:5: 12:6
|
||||
_3 = const 1i32; // scope 1 at $DIR/inline-any-operand.rs:12:5: 12:13
|
||||
_3 = const 1_i32; // scope 1 at $DIR/inline-any-operand.rs:12:5: 12:13
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/inline-any-operand.rs:12:7: 12:8
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) }
|
||||
_4 = const -1i32; // scope 1 at $DIR/inline-any-operand.rs:12:5: 12:13
|
||||
_4 = const -1_i32; // scope 1 at $DIR/inline-any-operand.rs:12:5: 12:13
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0xffffffff))
|
||||
|
@ -19,7 +19,7 @@
|
||||
_2 = Box(std::vec::Vec<u32>); // scope 0 at $DIR/inline-into-box-place.rs:8:29: 8:43
|
||||
- (*_2) = const std::vec::Vec::<u32>::new() -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/inline-into-box-place.rs:8:33: 8:43
|
||||
+ _4 = &mut (*_2); // scope 0 at $DIR/inline-into-box-place.rs:8:33: 8:43
|
||||
+ ((*_4).0: alloc::raw_vec::RawVec<u32>) = const alloc::raw_vec::RawVec::<u32> { ptr: std::ptr::Unique::<u32> { pointer: {0x4 as *const u32}, _marker: std::marker::PhantomData::<u32> }, cap: 0usize, alloc: std::alloc::Global }; // scope 2 at $SRC_DIR/liballoc/vec.rs:LL:COL
|
||||
+ ((*_4).0: alloc::raw_vec::RawVec<u32>) = const alloc::raw_vec::RawVec::<u32> { ptr: std::ptr::Unique::<u32> { pointer: {0x4 as *const u32}, _marker: std::marker::PhantomData::<u32> }, cap: 0_usize, alloc: std::alloc::Global }; // scope 2 at $SRC_DIR/liballoc/vec.rs:LL:COL
|
||||
// ty::Const
|
||||
- // + ty: fn() -> std::vec::Vec<u32> {std::vec::Vec::<u32>::new}
|
||||
- // + val: Value(Scalar(<ZST>))
|
||||
@ -39,7 +39,7 @@
|
||||
+ // + span: $SRC_DIR/liballoc/vec.rs:LL:COL
|
||||
+ // + user_ty: UserType(0)
|
||||
+ // + literal: Const { ty: alloc::raw_vec::RawVec<u32>, val: Value(ByRef { alloc: Allocation { bytes: [4, 0, 0, 0, 0, 0, 0, 0], relocations: Relocations(SortedMap { data: [] }), init_mask: InitMask { blocks: [255], len: Size { raw: 8 } }, size: Size { raw: 8 }, align: Align { pow2: 2 }, mutability: Not, extra: () }, offset: Size { raw: 0 } }) }
|
||||
+ ((*_4).1: usize) = const 0usize; // scope 2 at $SRC_DIR/liballoc/vec.rs:LL:COL
|
||||
+ ((*_4).1: usize) = const 0_usize; // scope 2 at $SRC_DIR/liballoc/vec.rs:LL:COL
|
||||
+ // ty::Const
|
||||
+ // + ty: usize
|
||||
+ // + val: Value(Scalar(0x00000000))
|
||||
|
@ -19,7 +19,7 @@
|
||||
_2 = Box(std::vec::Vec<u32>); // scope 0 at $DIR/inline-into-box-place.rs:8:29: 8:43
|
||||
- (*_2) = const std::vec::Vec::<u32>::new() -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/inline-into-box-place.rs:8:33: 8:43
|
||||
+ _4 = &mut (*_2); // scope 0 at $DIR/inline-into-box-place.rs:8:33: 8:43
|
||||
+ ((*_4).0: alloc::raw_vec::RawVec<u32>) = const alloc::raw_vec::RawVec::<u32> { ptr: std::ptr::Unique::<u32> { pointer: {0x4 as *const u32}, _marker: std::marker::PhantomData::<u32> }, cap: 0usize, alloc: std::alloc::Global }; // scope 2 at $SRC_DIR/liballoc/vec.rs:LL:COL
|
||||
+ ((*_4).0: alloc::raw_vec::RawVec<u32>) = const alloc::raw_vec::RawVec::<u32> { ptr: std::ptr::Unique::<u32> { pointer: {0x4 as *const u32}, _marker: std::marker::PhantomData::<u32> }, cap: 0_usize, alloc: std::alloc::Global }; // scope 2 at $SRC_DIR/liballoc/vec.rs:LL:COL
|
||||
// ty::Const
|
||||
- // + ty: fn() -> std::vec::Vec<u32> {std::vec::Vec::<u32>::new}
|
||||
- // + val: Value(Scalar(<ZST>))
|
||||
@ -39,7 +39,7 @@
|
||||
+ // + span: $SRC_DIR/liballoc/vec.rs:LL:COL
|
||||
+ // + user_ty: UserType(0)
|
||||
+ // + literal: Const { ty: alloc::raw_vec::RawVec<u32>, val: Value(ByRef { alloc: Allocation { bytes: [4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], relocations: Relocations(SortedMap { data: [] }), init_mask: InitMask { blocks: [65535], len: Size { raw: 16 } }, size: Size { raw: 16 }, align: Align { pow2: 3 }, mutability: Not, extra: () }, offset: Size { raw: 0 } }) }
|
||||
+ ((*_4).1: usize) = const 0usize; // scope 2 at $SRC_DIR/liballoc/vec.rs:LL:COL
|
||||
+ ((*_4).1: usize) = const 0_usize; // scope 2 at $SRC_DIR/liballoc/vec.rs:LL:COL
|
||||
+ // ty::Const
|
||||
+ // + ty: usize
|
||||
+ // + val: Value(Scalar(0x0000000000000000))
|
||||
|
@ -13,7 +13,7 @@
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/inline-specialization.rs:5:9: 5:10
|
||||
- _1 = const <std::vec::Vec<()> as Foo>::bar() -> bb1; // scope 0 at $DIR/inline-specialization.rs:5:13: 5:38
|
||||
+ _1 = const 123u32; // scope 2 at $DIR/inline-specialization.rs:14:31: 14:34
|
||||
+ _1 = const 123_u32; // scope 2 at $DIR/inline-specialization.rs:14:31: 14:34
|
||||
// ty::Const
|
||||
- // + ty: fn() -> u32 {<std::vec::Vec<()> as Foo>::bar}
|
||||
- // + val: Value(Scalar(<ZST>))
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
bb0: {
|
||||
+ StorageLive(_1); // scope 0 at $DIR/instrument_coverage.rs:18:1: 20:2
|
||||
+ _1 = const std::intrinsics::count_code_region(const 0u32) -> bb2; // scope 0 at $DIR/instrument_coverage.rs:18:1: 20:2
|
||||
+ _1 = const std::intrinsics::count_code_region(const 0_u32) -> bb2; // scope 0 at $DIR/instrument_coverage.rs:18:1: 20:2
|
||||
+ // ty::Const
|
||||
+ // + ty: unsafe extern "rust-intrinsic" fn(u32) {std::intrinsics::count_code_region}
|
||||
+ // + val: Value(Scalar(<ZST>))
|
||||
|
@ -11,7 +11,7 @@
|
||||
bb0: {
|
||||
- falseUnwind -> [real: bb1, cleanup: bb2]; // scope 0 at $DIR/instrument_coverage.rs:10:5: 14:6
|
||||
+ StorageLive(_4); // scope 0 at $DIR/instrument_coverage.rs:9:1: 15:2
|
||||
+ _4 = const std::intrinsics::count_code_region(const 0u32) -> bb7; // scope 0 at $DIR/instrument_coverage.rs:9:1: 15:2
|
||||
+ _4 = const std::intrinsics::count_code_region(const 0_u32) -> bb7; // scope 0 at $DIR/instrument_coverage.rs:9:1: 15:2
|
||||
+ // ty::Const
|
||||
+ // + ty: unsafe extern "rust-intrinsic" fn(u32) {std::intrinsics::count_code_region}
|
||||
+ // + val: Value(Scalar(<ZST>))
|
||||
|
@ -5,7 +5,20 @@
|
||||
let mut _1: (usize, bool); // in scope 0 at $DIR/issue-41697.rs:18:19: 18:22
|
||||
|
||||
bb0: {
|
||||
_1 = CheckedAdd(const 1usize, const 1usize); // scope 0 at $DIR/issue-41697.rs:18:19: 18:22
|
||||
_1 = CheckedAdd(const 1_usize, const 1_usize); // scope 0 at $DIR/issue-41697.rs:18:19: 18:22
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/issue-41697.rs:18:19: 18:20
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x00000001)) }
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/issue-41697.rs:18:21: 18:22
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x00000001)) }
|
||||
assert(!move (_1.1: bool), "attempt to compute `{} + {}` which would overflow", const 1_usize, const 1_usize) -> [success: bb2, unwind: bb1]; // scope 0 at $DIR/issue-41697.rs:18:19: 18:22
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -18,7 +31,6 @@
|
||||
// mir::Constant
|
||||
// + span: $DIR/issue-41697.rs:18:21: 18:22
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x00000001)) }
|
||||
assert(!move (_1.1: bool), "attempt to add with overflow") -> [success: bb2, unwind: bb1]; // scope 0 at $DIR/issue-41697.rs:18:19: 18:22
|
||||
}
|
||||
|
||||
bb1 (cleanup): {
|
||||
|
@ -5,7 +5,20 @@
|
||||
let mut _1: (usize, bool); // in scope 0 at $DIR/issue-41697.rs:18:19: 18:22
|
||||
|
||||
bb0: {
|
||||
_1 = CheckedAdd(const 1usize, const 1usize); // scope 0 at $DIR/issue-41697.rs:18:19: 18:22
|
||||
_1 = CheckedAdd(const 1_usize, const 1_usize); // scope 0 at $DIR/issue-41697.rs:18:19: 18:22
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/issue-41697.rs:18:19: 18:20
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000001)) }
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000001))
|
||||
// mir::Constant
|
||||
// + span: $DIR/issue-41697.rs:18:21: 18:22
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000001)) }
|
||||
assert(!move (_1.1: bool), "attempt to compute `{} + {}` which would overflow", const 1_usize, const 1_usize) -> [success: bb2, unwind: bb1]; // scope 0 at $DIR/issue-41697.rs:18:19: 18:22
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000001))
|
||||
@ -18,7 +31,6 @@
|
||||
// mir::Constant
|
||||
// + span: $DIR/issue-41697.rs:18:21: 18:22
|
||||
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000001)) }
|
||||
assert(!move (_1.1: bool), "attempt to add with overflow") -> [success: bb2, unwind: bb1]; // scope 0 at $DIR/issue-41697.rs:18:19: 18:22
|
||||
}
|
||||
|
||||
bb1 (cleanup): {
|
||||
|
@ -96,7 +96,7 @@ fn main() -> () {
|
||||
bb8: {
|
||||
StorageDead(_3); // scope 1 at $DIR/issue-41888.rs:9:19: 9:20
|
||||
_5 = discriminant(_1); // scope 1 at $DIR/issue-41888.rs:10:16: 10:24
|
||||
switchInt(move _5) -> [0isize: bb10, otherwise: bb9]; // scope 1 at $DIR/issue-41888.rs:10:16: 10:24
|
||||
switchInt(move _5) -> [0_isize: bb10, otherwise: bb9]; // scope 1 at $DIR/issue-41888.rs:10:16: 10:24
|
||||
}
|
||||
|
||||
bb9: {
|
||||
@ -250,7 +250,7 @@ fn main() -> () {
|
||||
|
||||
bb20: {
|
||||
_10 = discriminant(_1); // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
switchInt(move _10) -> [0isize: bb15, otherwise: bb18]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
switchInt(move _10) -> [0_isize: bb15, otherwise: bb18]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb21: {
|
||||
@ -259,7 +259,7 @@ fn main() -> () {
|
||||
|
||||
bb22 (cleanup): {
|
||||
_11 = discriminant(_1); // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
switchInt(move _11) -> [0isize: bb17, otherwise: bb19]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
switchInt(move _11) -> [0_isize: bb17, otherwise: bb19]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb23 (cleanup): {
|
||||
|
@ -58,7 +58,7 @@ fn main() -> () {
|
||||
}
|
||||
|
||||
bb7: {
|
||||
_2 = const 4i32; // scope 0 at $DIR/issue-49232.rs:9:26: 9:27
|
||||
_2 = const 4_i32; // scope 0 at $DIR/issue-49232.rs:9:26: 9:27
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000004))
|
||||
|
@ -46,7 +46,7 @@ fn test() -> std::option::Option<std::boxed::Box<u32>> {
|
||||
bb2: {
|
||||
StorageDead(_4); // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
_5 = discriminant(_3); // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
switchInt(move _5) -> [0isize: bb4, 1isize: bb6, otherwise: bb5]; // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
switchInt(move _5) -> [0_isize: bb4, 1_isize: bb6, otherwise: bb5]; // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
}
|
||||
|
||||
bb3 (cleanup): {
|
||||
|
@ -9,7 +9,7 @@ fn foo(_1: [(Never, u32); 1]) -> u32 {
|
||||
|
||||
bb0: {
|
||||
StorageLive(_2); // scope 0 at $DIR/issue-72181.rs:16:43: 16:44
|
||||
_2 = const 0usize; // scope 0 at $DIR/issue-72181.rs:16:43: 16:44
|
||||
_2 = const 0_usize; // scope 0 at $DIR/issue-72181.rs:16:43: 16:44
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
|
@ -39,7 +39,7 @@ fn main() -> () {
|
||||
StorageDead(_1); // scope 0 at $DIR/issue-72181.rs:24:34: 24:35
|
||||
StorageLive(_2); // scope 1 at $DIR/issue-72181.rs:26:9: 26:10
|
||||
StorageLive(_3); // scope 1 at $DIR/issue-72181.rs:26:14: 26:27
|
||||
_3 = Foo { a: const 42u64 }; // scope 1 at $DIR/issue-72181.rs:26:14: 26:27
|
||||
_3 = Foo { a: const 42_u64 }; // scope 1 at $DIR/issue-72181.rs:26:14: 26:27
|
||||
// ty::Const
|
||||
// + ty: u64
|
||||
// + val: Value(Scalar(0x000000000000002a))
|
||||
@ -47,7 +47,7 @@ fn main() -> () {
|
||||
// + span: $DIR/issue-72181.rs:26:23: 26:25
|
||||
// + literal: Const { ty: u64, val: Value(Scalar(0x000000000000002a)) }
|
||||
StorageLive(_4); // scope 1 at $DIR/issue-72181.rs:26:29: 26:42
|
||||
_4 = Foo { a: const 10u64 }; // scope 1 at $DIR/issue-72181.rs:26:29: 26:42
|
||||
_4 = Foo { a: const 10_u64 }; // scope 1 at $DIR/issue-72181.rs:26:29: 26:42
|
||||
// ty::Const
|
||||
// + ty: u64
|
||||
// + val: Value(Scalar(0x000000000000000a))
|
||||
@ -60,7 +60,7 @@ fn main() -> () {
|
||||
FakeRead(ForLet, _2); // scope 1 at $DIR/issue-72181.rs:26:9: 26:10
|
||||
StorageLive(_5); // scope 2 at $DIR/issue-72181.rs:27:13: 27:30
|
||||
StorageLive(_6); // scope 4 at $DIR/issue-72181.rs:27:24: 27:25
|
||||
_6 = const 0usize; // scope 4 at $DIR/issue-72181.rs:27:24: 27:25
|
||||
_6 = const 0_usize; // scope 4 at $DIR/issue-72181.rs:27:24: 27:25
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
|
@ -9,7 +9,7 @@ fn foo(_1: [(Never, u32); 1]) -> u32 {
|
||||
|
||||
bb0: {
|
||||
StorageLive(_2); // scope 0 at $DIR/issue-72181.rs:16:43: 16:44
|
||||
_2 = const 0usize; // scope 0 at $DIR/issue-72181.rs:16:43: 16:44
|
||||
_2 = const 0_usize; // scope 0 at $DIR/issue-72181.rs:16:43: 16:44
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000000))
|
||||
|
@ -39,7 +39,7 @@ fn main() -> () {
|
||||
StorageDead(_1); // scope 0 at $DIR/issue-72181.rs:24:34: 24:35
|
||||
StorageLive(_2); // scope 1 at $DIR/issue-72181.rs:26:9: 26:10
|
||||
StorageLive(_3); // scope 1 at $DIR/issue-72181.rs:26:14: 26:27
|
||||
_3 = Foo { a: const 42u64 }; // scope 1 at $DIR/issue-72181.rs:26:14: 26:27
|
||||
_3 = Foo { a: const 42_u64 }; // scope 1 at $DIR/issue-72181.rs:26:14: 26:27
|
||||
// ty::Const
|
||||
// + ty: u64
|
||||
// + val: Value(Scalar(0x000000000000002a))
|
||||
@ -47,7 +47,7 @@ fn main() -> () {
|
||||
// + span: $DIR/issue-72181.rs:26:23: 26:25
|
||||
// + literal: Const { ty: u64, val: Value(Scalar(0x000000000000002a)) }
|
||||
StorageLive(_4); // scope 1 at $DIR/issue-72181.rs:26:29: 26:42
|
||||
_4 = Foo { a: const 10u64 }; // scope 1 at $DIR/issue-72181.rs:26:29: 26:42
|
||||
_4 = Foo { a: const 10_u64 }; // scope 1 at $DIR/issue-72181.rs:26:29: 26:42
|
||||
// ty::Const
|
||||
// + ty: u64
|
||||
// + val: Value(Scalar(0x000000000000000a))
|
||||
@ -60,7 +60,7 @@ fn main() -> () {
|
||||
FakeRead(ForLet, _2); // scope 1 at $DIR/issue-72181.rs:26:9: 26:10
|
||||
StorageLive(_5); // scope 2 at $DIR/issue-72181.rs:27:13: 27:30
|
||||
StorageLive(_6); // scope 4 at $DIR/issue-72181.rs:27:24: 27:25
|
||||
_6 = const 0usize; // scope 4 at $DIR/issue-72181.rs:27:24: 27:25
|
||||
_6 = const 0_usize; // scope 4 at $DIR/issue-72181.rs:27:24: 27:25
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000000))
|
||||
|
@ -67,7 +67,7 @@ fn main() -> () {
|
||||
|
||||
bb6: {
|
||||
StorageLive(_6); // scope 0 at $DIR/loop_test.rs:14:13: 14:14
|
||||
_6 = const 1i32; // scope 0 at $DIR/loop_test.rs:14:17: 14:18
|
||||
_6 = const 1_i32; // scope 0 at $DIR/loop_test.rs:14:17: 14:18
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
|
@ -54,7 +54,7 @@ fn complicated_match(_1: bool, _2: (bool, bool, std::string::String)) -> i32 {
|
||||
}
|
||||
|
||||
bb5: {
|
||||
_0 = const 1i32; // scope 1 at $DIR/match-arm-scopes.rs:16:77: 16:78
|
||||
_0 = const 1_i32; // scope 1 at $DIR/match-arm-scopes.rs:16:77: 16:78
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -82,7 +82,7 @@ fn complicated_match(_1: bool, _2: (bool, bool, std::string::String)) -> i32 {
|
||||
}
|
||||
|
||||
bb8: {
|
||||
_0 = const 3i32; // scope 0 at $DIR/match-arm-scopes.rs:16:59: 16:60
|
||||
_0 = const 3_i32; // scope 0 at $DIR/match-arm-scopes.rs:16:59: 16:60
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
@ -142,7 +142,7 @@ fn complicated_match(_1: bool, _2: (bool, bool, std::string::String)) -> i32 {
|
||||
}
|
||||
|
||||
bb16: {
|
||||
_0 = const 3i32; // scope 0 at $DIR/match-arm-scopes.rs:16:59: 16:60
|
||||
_0 = const 3_i32; // scope 0 at $DIR/match-arm-scopes.rs:16:59: 16:60
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
@ -181,7 +181,7 @@ fn complicated_match(_1: bool, _2: (bool, bool, std::string::String)) -> i32 {
|
||||
}
|
||||
|
||||
bb20: {
|
||||
_0 = const 2i32; // scope 2 at $DIR/match-arm-scopes.rs:17:41: 17:42
|
||||
_0 = const 2_i32; // scope 2 at $DIR/match-arm-scopes.rs:17:41: 17:42
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
|
@ -67,7 +67,7 @@ fn complicated_match(_1: bool, _2: (bool, bool, std::string::String)) -> i32 {
|
||||
}
|
||||
|
||||
bb8: {
|
||||
_0 = const 1i32; // scope 1 at $DIR/match-arm-scopes.rs:16:77: 16:78
|
||||
_0 = const 1_i32; // scope 1 at $DIR/match-arm-scopes.rs:16:77: 16:78
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -102,7 +102,7 @@ fn complicated_match(_1: bool, _2: (bool, bool, std::string::String)) -> i32 {
|
||||
}
|
||||
|
||||
bb12: {
|
||||
_0 = const 3i32; // scope 0 at $DIR/match-arm-scopes.rs:16:59: 16:60
|
||||
_0 = const 3_i32; // scope 0 at $DIR/match-arm-scopes.rs:16:59: 16:60
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
@ -173,7 +173,7 @@ fn complicated_match(_1: bool, _2: (bool, bool, std::string::String)) -> i32 {
|
||||
}
|
||||
|
||||
bb21: {
|
||||
_0 = const 3i32; // scope 0 at $DIR/match-arm-scopes.rs:16:59: 16:60
|
||||
_0 = const 3_i32; // scope 0 at $DIR/match-arm-scopes.rs:16:59: 16:60
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
@ -216,7 +216,7 @@ fn complicated_match(_1: bool, _2: (bool, bool, std::string::String)) -> i32 {
|
||||
}
|
||||
|
||||
bb25: {
|
||||
_0 = const 2i32; // scope 2 at $DIR/match-arm-scopes.rs:17:41: 17:42
|
||||
_0 = const 2_i32; // scope 2 at $DIR/match-arm-scopes.rs:17:41: 17:42
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
|
@ -26,7 +26,7 @@ fn full_tested_match() -> () {
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/match_false_edges.rs:15:13: 19:6
|
||||
StorageLive(_2); // scope 0 at $DIR/match_false_edges.rs:15:19: 15:27
|
||||
_2 = std::option::Option::<i32>::Some(const 42i32); // scope 0 at $DIR/match_false_edges.rs:15:19: 15:27
|
||||
_2 = std::option::Option::<i32>::Some(const 42_i32); // scope 0 at $DIR/match_false_edges.rs:15:19: 15:27
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -35,7 +35,7 @@ fn full_tested_match() -> () {
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x0000002a)) }
|
||||
FakeRead(ForMatchedPlace, _2); // scope 0 at $DIR/match_false_edges.rs:15:19: 15:27
|
||||
_3 = discriminant(_2); // scope 0 at $DIR/match_false_edges.rs:16:9: 16:16
|
||||
switchInt(move _3) -> [0isize: bb2, 1isize: bb3, otherwise: bb5]; // scope 0 at $DIR/match_false_edges.rs:16:9: 16:16
|
||||
switchInt(move _3) -> [0_isize: bb2, 1_isize: bb3, otherwise: bb5]; // scope 0 at $DIR/match_false_edges.rs:16:9: 16:16
|
||||
}
|
||||
|
||||
bb1 (cleanup): {
|
||||
@ -43,7 +43,7 @@ fn full_tested_match() -> () {
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_1 = (const 3i32, const 3i32); // scope 0 at $DIR/match_false_edges.rs:18:17: 18:23
|
||||
_1 = (const 3_i32, const 3_i32); // scope 0 at $DIR/match_false_edges.rs:18:17: 18:23
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
@ -104,7 +104,7 @@ fn full_tested_match() -> () {
|
||||
_5 = ((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:16:14: 16:15
|
||||
StorageLive(_8); // scope 2 at $DIR/match_false_edges.rs:16:35: 16:36
|
||||
_8 = _5; // scope 2 at $DIR/match_false_edges.rs:16:35: 16:36
|
||||
_1 = (const 1i32, move _8); // scope 2 at $DIR/match_false_edges.rs:16:31: 16:37
|
||||
_1 = (const 1_i32, move _8); // scope 2 at $DIR/match_false_edges.rs:16:31: 16:37
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -128,7 +128,7 @@ fn full_tested_match() -> () {
|
||||
_9 = ((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:17:14: 17:15
|
||||
StorageLive(_10); // scope 3 at $DIR/match_false_edges.rs:17:24: 17:25
|
||||
_10 = _9; // scope 3 at $DIR/match_false_edges.rs:17:24: 17:25
|
||||
_1 = (const 2i32, move _10); // scope 3 at $DIR/match_false_edges.rs:17:20: 17:26
|
||||
_1 = (const 2_i32, move _10); // scope 3 at $DIR/match_false_edges.rs:17:20: 17:26
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
|
@ -25,7 +25,7 @@ fn full_tested_match2() -> () {
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/match_false_edges.rs:26:13: 30:6
|
||||
StorageLive(_2); // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27
|
||||
_2 = std::option::Option::<i32>::Some(const 42i32); // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27
|
||||
_2 = std::option::Option::<i32>::Some(const 42_i32); // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000002a))
|
||||
@ -34,7 +34,7 @@ fn full_tested_match2() -> () {
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x0000002a)) }
|
||||
FakeRead(ForMatchedPlace, _2); // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27
|
||||
_3 = discriminant(_2); // scope 0 at $DIR/match_false_edges.rs:27:9: 27:16
|
||||
switchInt(move _3) -> [0isize: bb2, 1isize: bb3, otherwise: bb5]; // scope 0 at $DIR/match_false_edges.rs:27:9: 27:16
|
||||
switchInt(move _3) -> [0_isize: bb2, 1_isize: bb3, otherwise: bb5]; // scope 0 at $DIR/match_false_edges.rs:27:9: 27:16
|
||||
}
|
||||
|
||||
bb1 (cleanup): {
|
||||
@ -54,7 +54,7 @@ fn full_tested_match2() -> () {
|
||||
_9 = ((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:29:14: 29:15
|
||||
StorageLive(_10); // scope 3 at $DIR/match_false_edges.rs:29:24: 29:25
|
||||
_10 = _9; // scope 3 at $DIR/match_false_edges.rs:29:24: 29:25
|
||||
_1 = (const 2i32, move _10); // scope 3 at $DIR/match_false_edges.rs:29:20: 29:26
|
||||
_1 = (const 2_i32, move _10); // scope 3 at $DIR/match_false_edges.rs:29:20: 29:26
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
@ -96,7 +96,7 @@ fn full_tested_match2() -> () {
|
||||
_5 = ((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:27:14: 27:15
|
||||
StorageLive(_8); // scope 2 at $DIR/match_false_edges.rs:27:35: 27:36
|
||||
_8 = _5; // scope 2 at $DIR/match_false_edges.rs:27:35: 27:36
|
||||
_1 = (const 1i32, move _8); // scope 2 at $DIR/match_false_edges.rs:27:31: 27:37
|
||||
_1 = (const 1_i32, move _8); // scope 2 at $DIR/match_false_edges.rs:27:31: 27:37
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -116,7 +116,7 @@ fn full_tested_match2() -> () {
|
||||
}
|
||||
|
||||
bb10: {
|
||||
_1 = (const 3i32, const 3i32); // scope 0 at $DIR/match_false_edges.rs:28:17: 28:23
|
||||
_1 = (const 3_i32, const 3_i32); // scope 0 at $DIR/match_false_edges.rs:28:17: 28:23
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
|
@ -36,7 +36,7 @@ fn main() -> () {
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/match_false_edges.rs:35:13: 40:6
|
||||
StorageLive(_2); // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26
|
||||
_2 = std::option::Option::<i32>::Some(const 1i32); // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26
|
||||
_2 = std::option::Option::<i32>::Some(const 1_i32); // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -45,7 +45,7 @@ fn main() -> () {
|
||||
// + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) }
|
||||
FakeRead(ForMatchedPlace, _2); // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26
|
||||
_4 = discriminant(_2); // scope 0 at $DIR/match_false_edges.rs:36:9: 36:17
|
||||
switchInt(move _4) -> [1isize: bb3, otherwise: bb2]; // scope 0 at $DIR/match_false_edges.rs:36:9: 36:17
|
||||
switchInt(move _4) -> [1_isize: bb3, otherwise: bb2]; // scope 0 at $DIR/match_false_edges.rs:36:9: 36:17
|
||||
}
|
||||
|
||||
bb1 (cleanup): {
|
||||
@ -63,7 +63,7 @@ fn main() -> () {
|
||||
bb4: {
|
||||
StorageLive(_14); // scope 0 at $DIR/match_false_edges.rs:39:9: 39:11
|
||||
_14 = _2; // scope 0 at $DIR/match_false_edges.rs:39:9: 39:11
|
||||
_1 = const 4i32; // scope 5 at $DIR/match_false_edges.rs:39:15: 39:16
|
||||
_1 = const 4_i32; // scope 5 at $DIR/match_false_edges.rs:39:15: 39:16
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000004))
|
||||
@ -102,7 +102,7 @@ fn main() -> () {
|
||||
FakeRead(ForGuardBinding, _7); // scope 0 at $DIR/match_false_edges.rs:36:27: 36:28
|
||||
StorageLive(_6); // scope 0 at $DIR/match_false_edges.rs:36:14: 36:16
|
||||
_6 = ((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:36:14: 36:16
|
||||
_1 = const 1i32; // scope 2 at $DIR/match_false_edges.rs:36:32: 36:33
|
||||
_1 = const 1_i32; // scope 2 at $DIR/match_false_edges.rs:36:32: 36:33
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -123,7 +123,7 @@ fn main() -> () {
|
||||
bb10: {
|
||||
StorageLive(_9); // scope 0 at $DIR/match_false_edges.rs:37:9: 37:11
|
||||
_9 = _2; // scope 0 at $DIR/match_false_edges.rs:37:9: 37:11
|
||||
_1 = const 2i32; // scope 3 at $DIR/match_false_edges.rs:37:15: 37:16
|
||||
_1 = const 2_i32; // scope 3 at $DIR/match_false_edges.rs:37:15: 37:16
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
@ -161,7 +161,7 @@ fn main() -> () {
|
||||
FakeRead(ForGuardBinding, _11); // scope 0 at $DIR/match_false_edges.rs:38:28: 38:29
|
||||
StorageLive(_10); // scope 0 at $DIR/match_false_edges.rs:38:14: 38:15
|
||||
_10 = ((_2 as Some).0: i32); // scope 0 at $DIR/match_false_edges.rs:38:14: 38:15
|
||||
_1 = const 3i32; // scope 4 at $DIR/match_false_edges.rs:38:33: 38:34
|
||||
_1 = const 3_i32; // scope 4 at $DIR/match_false_edges.rs:38:33: 38:34
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
|
@ -20,7 +20,7 @@ fn main() -> () {
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/match_test.rs:7:9: 7:10
|
||||
_1 = const 3i32; // scope 0 at $DIR/match_test.rs:7:13: 7:14
|
||||
_1 = const 3_i32; // scope 0 at $DIR/match_test.rs:7:13: 7:14
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
@ -39,7 +39,7 @@ fn main() -> () {
|
||||
FakeRead(ForLet, _2); // scope 1 at $DIR/match_test.rs:8:9: 8:10
|
||||
StorageLive(_3); // scope 2 at $DIR/match_test.rs:12:5: 17:6
|
||||
FakeRead(ForMatchedPlace, _1); // scope 2 at $DIR/match_test.rs:12:11: 12:12
|
||||
_6 = Le(const 0i32, _1); // scope 2 at $DIR/match_test.rs:13:9: 13:14
|
||||
_6 = Le(const 0_i32, _1); // scope 2 at $DIR/match_test.rs:13:9: 13:14
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -50,7 +50,7 @@ fn main() -> () {
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_7 = Lt(_1, const 10i32); // scope 2 at $DIR/match_test.rs:13:9: 13:14
|
||||
_7 = Lt(_1, const 10_i32); // scope 2 at $DIR/match_test.rs:13:9: 13:14
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000000a))
|
||||
@ -65,7 +65,7 @@ fn main() -> () {
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_3 = const 3i32; // scope 2 at $DIR/match_test.rs:16:14: 16:15
|
||||
_3 = const 3_i32; // scope 2 at $DIR/match_test.rs:16:14: 16:15
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000003))
|
||||
@ -76,7 +76,7 @@ fn main() -> () {
|
||||
}
|
||||
|
||||
bb4: {
|
||||
_4 = Le(const 10i32, _1); // scope 2 at $DIR/match_test.rs:14:9: 14:16
|
||||
_4 = Le(const 10_i32, _1); // scope 2 at $DIR/match_test.rs:14:9: 14:16
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x0000000a))
|
||||
@ -87,7 +87,7 @@ fn main() -> () {
|
||||
}
|
||||
|
||||
bb5: {
|
||||
_5 = Le(_1, const 20i32); // scope 2 at $DIR/match_test.rs:14:9: 14:16
|
||||
_5 = Le(_1, const 20_i32); // scope 2 at $DIR/match_test.rs:14:9: 14:16
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000014))
|
||||
@ -102,7 +102,7 @@ fn main() -> () {
|
||||
}
|
||||
|
||||
bb7: {
|
||||
switchInt(_1) -> [-1i32: bb8, otherwise: bb3]; // scope 2 at $DIR/match_test.rs:15:9: 15:11
|
||||
switchInt(_1) -> [-1_i32: bb8, otherwise: bb3]; // scope 2 at $DIR/match_test.rs:15:9: 15:11
|
||||
}
|
||||
|
||||
bb8: {
|
||||
@ -119,7 +119,7 @@ fn main() -> () {
|
||||
bb10: {
|
||||
StorageDead(_9); // scope 2 at $DIR/match_test.rs:13:24: 13:25
|
||||
FakeRead(ForMatchGuard, _8); // scope 2 at $DIR/match_test.rs:13:18: 13:19
|
||||
_3 = const 0i32; // scope 2 at $DIR/match_test.rs:13:23: 13:24
|
||||
_3 = const 0_i32; // scope 2 at $DIR/match_test.rs:13:23: 13:24
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -135,7 +135,7 @@ fn main() -> () {
|
||||
}
|
||||
|
||||
bb12: {
|
||||
_3 = const 1i32; // scope 2 at $DIR/match_test.rs:14:20: 14:21
|
||||
_3 = const 1_i32; // scope 2 at $DIR/match_test.rs:14:20: 14:21
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -146,7 +146,7 @@ fn main() -> () {
|
||||
}
|
||||
|
||||
bb13: {
|
||||
_3 = const 2i32; // scope 2 at $DIR/match_test.rs:15:15: 15:16
|
||||
_3 = const 2_i32; // scope 2 at $DIR/match_test.rs:15:15: 15:16
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000002))
|
||||
|
@ -14,7 +14,7 @@ fn unwrap(_1: std::option::Option<T>) -> T {
|
||||
|
||||
bb0: {
|
||||
_2 = discriminant(_1); // scope 0 at $DIR/no-drop-for-inactive-variant.rs:9:9: 9:16
|
||||
switchInt(move _2) -> [0isize: bb2, 1isize: bb4, otherwise: bb3]; // scope 0 at $DIR/no-drop-for-inactive-variant.rs:9:9: 9:16
|
||||
switchInt(move _2) -> [0_isize: bb2, 1_isize: bb4, otherwise: bb3]; // scope 0 at $DIR/no-drop-for-inactive-variant.rs:9:9: 9:16
|
||||
}
|
||||
|
||||
bb1 (cleanup): {
|
||||
|
@ -17,8 +17,8 @@
|
||||
|
||||
bb0: {
|
||||
- StorageLive(_2); // scope 0 at $DIR/nrvo-simple.rs:3:9: 3:16
|
||||
- _2 = [const 0u8; 1024]; // scope 0 at $DIR/nrvo-simple.rs:3:19: 3:28
|
||||
+ _0 = [const 0u8; 1024]; // scope 0 at $DIR/nrvo-simple.rs:3:19: 3:28
|
||||
- _2 = [const 0_u8; 1024]; // scope 0 at $DIR/nrvo-simple.rs:3:19: 3:28
|
||||
+ _0 = [const 0_u8; 1024]; // scope 0 at $DIR/nrvo-simple.rs:3:19: 3:28
|
||||
// ty::Const
|
||||
// + ty: u8
|
||||
// + val: Value(Scalar(0x00))
|
||||
|
@ -16,7 +16,7 @@ fn main() -> () {
|
||||
StorageLive(_1); // scope 0 at $DIR/packed-struct-drop-aligned.rs:6:9: 6:14
|
||||
StorageLive(_2); // scope 0 at $DIR/packed-struct-drop-aligned.rs:6:24: 6:42
|
||||
StorageLive(_3); // scope 0 at $DIR/packed-struct-drop-aligned.rs:6:32: 6:41
|
||||
_3 = Droppy(const 0usize); // scope 0 at $DIR/packed-struct-drop-aligned.rs:6:32: 6:41
|
||||
_3 = Droppy(const 0_usize); // scope 0 at $DIR/packed-struct-drop-aligned.rs:6:32: 6:41
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -29,7 +29,7 @@ fn main() -> () {
|
||||
StorageDead(_2); // scope 0 at $DIR/packed-struct-drop-aligned.rs:6:42: 6:43
|
||||
StorageLive(_4); // scope 1 at $DIR/packed-struct-drop-aligned.rs:7:11: 7:29
|
||||
StorageLive(_5); // scope 1 at $DIR/packed-struct-drop-aligned.rs:7:19: 7:28
|
||||
_5 = Droppy(const 0usize); // scope 1 at $DIR/packed-struct-drop-aligned.rs:7:19: 7:28
|
||||
_5 = Droppy(const 0_usize); // scope 1 at $DIR/packed-struct-drop-aligned.rs:7:19: 7:28
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
|
@ -16,7 +16,7 @@ fn main() -> () {
|
||||
StorageLive(_1); // scope 0 at $DIR/packed-struct-drop-aligned.rs:6:9: 6:14
|
||||
StorageLive(_2); // scope 0 at $DIR/packed-struct-drop-aligned.rs:6:24: 6:42
|
||||
StorageLive(_3); // scope 0 at $DIR/packed-struct-drop-aligned.rs:6:32: 6:41
|
||||
_3 = Droppy(const 0usize); // scope 0 at $DIR/packed-struct-drop-aligned.rs:6:32: 6:41
|
||||
_3 = Droppy(const 0_usize); // scope 0 at $DIR/packed-struct-drop-aligned.rs:6:32: 6:41
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000000))
|
||||
@ -29,7 +29,7 @@ fn main() -> () {
|
||||
StorageDead(_2); // scope 0 at $DIR/packed-struct-drop-aligned.rs:6:42: 6:43
|
||||
StorageLive(_4); // scope 1 at $DIR/packed-struct-drop-aligned.rs:7:11: 7:29
|
||||
StorageLive(_5); // scope 1 at $DIR/packed-struct-drop-aligned.rs:7:19: 7:28
|
||||
_5 = Droppy(const 0usize); // scope 1 at $DIR/packed-struct-drop-aligned.rs:7:19: 7:28
|
||||
_5 = Droppy(const 0_usize); // scope 1 at $DIR/packed-struct-drop-aligned.rs:7:19: 7:28
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000000))
|
||||
|
@ -16,11 +16,11 @@
|
||||
- FakeRead(ForMatchedPlace, _1); // scope 0 at $DIR/remove_fake_borrows.rs:7:11: 7:12
|
||||
+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:7:11: 7:12
|
||||
_3 = discriminant(_1); // scope 0 at $DIR/remove_fake_borrows.rs:8:9: 8:16
|
||||
switchInt(move _3) -> [1isize: bb2, otherwise: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:8:9: 8:16
|
||||
switchInt(move _3) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:8:9: 8:16
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_0 = const 1i32; // scope 0 at $DIR/remove_fake_borrows.rs:9:14: 9:15
|
||||
_0 = const 1_i32; // scope 0 at $DIR/remove_fake_borrows.rs:9:14: 9:15
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000001))
|
||||
@ -31,7 +31,7 @@
|
||||
}
|
||||
|
||||
bb2: {
|
||||
switchInt((*(*((_1 as Some).0: &&i32)))) -> [0i32: bb3, otherwise: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:8:14: 8:15
|
||||
switchInt((*(*((_1 as Some).0: &&i32)))) -> [0_i32: bb3, otherwise: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:8:14: 8:15
|
||||
}
|
||||
|
||||
bb3: {
|
||||
@ -62,7 +62,7 @@
|
||||
+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:8:20: 8:21
|
||||
+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:8:20: 8:21
|
||||
+ nop; // scope 0 at $DIR/remove_fake_borrows.rs:8:20: 8:21
|
||||
_0 = const 0i32; // scope 0 at $DIR/remove_fake_borrows.rs:8:25: 8:26
|
||||
_0 = const 0_i32; // scope 0 at $DIR/remove_fake_borrows.rs:8:25: 8:26
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
|
@ -56,7 +56,7 @@ fn main() -> () {
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/retag.rs:30:9: 30:14
|
||||
_1 = const 0i32; // scope 0 at $DIR/retag.rs:30:17: 30:18
|
||||
_1 = const 0_i32; // scope 0 at $DIR/retag.rs:30:17: 30:18
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -67,7 +67,7 @@ fn main() -> () {
|
||||
StorageLive(_3); // scope 1 at $DIR/retag.rs:32:13: 32:14
|
||||
StorageLive(_4); // scope 1 at $DIR/retag.rs:32:17: 32:24
|
||||
StorageLive(_5); // scope 1 at $DIR/retag.rs:32:17: 32:24
|
||||
_5 = Test(const 0i32); // scope 1 at $DIR/retag.rs:32:17: 32:24
|
||||
_5 = Test(const 0_i32); // scope 1 at $DIR/retag.rs:32:17: 32:24
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -170,7 +170,7 @@ fn main() -> () {
|
||||
StorageLive(_19); // scope 7 at $DIR/retag.rs:47:5: 47:24
|
||||
StorageLive(_20); // scope 7 at $DIR/retag.rs:47:5: 47:12
|
||||
StorageLive(_21); // scope 7 at $DIR/retag.rs:47:5: 47:12
|
||||
_21 = Test(const 0i32); // scope 7 at $DIR/retag.rs:47:5: 47:12
|
||||
_21 = Test(const 0_i32); // scope 7 at $DIR/retag.rs:47:5: 47:12
|
||||
// ty::Const
|
||||
// + ty: i32
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
|
@ -18,7 +18,7 @@ fn match_bool(_1: bool) -> usize {
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_0 = const 20usize; // scope 0 at $DIR/simple-match.rs:8:14: 8:16
|
||||
_0 = const 20_usize; // scope 0 at $DIR/simple-match.rs:8:14: 8:16
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x00000014))
|
||||
@ -29,7 +29,7 @@ fn match_bool(_1: bool) -> usize {
|
||||
}
|
||||
|
||||
bb4: {
|
||||
_0 = const 10usize; // scope 0 at $DIR/simple-match.rs:7:17: 7:19
|
||||
_0 = const 10_usize; // scope 0 at $DIR/simple-match.rs:7:17: 7:19
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000a))
|
||||
|
@ -18,7 +18,7 @@ fn match_bool(_1: bool) -> usize {
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_0 = const 20usize; // scope 0 at $DIR/simple-match.rs:8:14: 8:16
|
||||
_0 = const 20_usize; // scope 0 at $DIR/simple-match.rs:8:14: 8:16
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x0000000000000014))
|
||||
@ -29,7 +29,7 @@ fn match_bool(_1: bool) -> usize {
|
||||
}
|
||||
|
||||
bb4: {
|
||||
_0 = const 10usize; // scope 0 at $DIR/simple-match.rs:7:17: 7:19
|
||||
_0 = const 10_usize; // scope 0 at $DIR/simple-match.rs:7:17: 7:19
|
||||
// ty::Const
|
||||
// + ty: usize
|
||||
// + val: Value(Scalar(0x000000000000000a))
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/simplify-arm-identity.rs:18:9: 18:10
|
||||
((_1 as Foo).0: u8) = const 0u8; // scope 0 at $DIR/simplify-arm-identity.rs:18:18: 18:29
|
||||
((_1 as Foo).0: u8) = const 0_u8; // scope 0 at $DIR/simplify-arm-identity.rs:18:18: 18:29
|
||||
// ty::Const
|
||||
// + ty: u8
|
||||
// + val: Value(Scalar(0x00))
|
||||
@ -28,7 +28,7 @@
|
||||
// + literal: Const { ty: u8, val: Value(Scalar(0x00)) }
|
||||
discriminant(_1) = 0; // scope 0 at $DIR/simplify-arm-identity.rs:18:18: 18:29
|
||||
StorageLive(_2); // scope 1 at $DIR/simplify-arm-identity.rs:19:18: 22:6
|
||||
_3 = const 0isize; // scope 1 at $DIR/simplify-arm-identity.rs:20:9: 20:20
|
||||
_3 = const 0_isize; // scope 1 at $DIR/simplify-arm-identity.rs:20:9: 20:20
|
||||
// ty::Const
|
||||
// + ty: isize
|
||||
// + val: Value(Scalar(0x00000000))
|
||||
@ -39,7 +39,7 @@
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_2 = const Dst::Foo(0u8); // scope 1 at $DIR/simplify-arm-identity.rs:21:21: 21:32
|
||||
_2 = const Dst::Foo(0_u8); // scope 1 at $DIR/simplify-arm-identity.rs:21:21: 21:32
|
||||
// ty::Const
|
||||
// + ty: Dst
|
||||
// + val: Value(Scalar(0x00))
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/simplify-arm-identity.rs:18:9: 18:10
|
||||
((_1 as Foo).0: u8) = const 0u8; // scope 0 at $DIR/simplify-arm-identity.rs:18:18: 18:29
|
||||
((_1 as Foo).0: u8) = const 0_u8; // scope 0 at $DIR/simplify-arm-identity.rs:18:18: 18:29
|
||||
// ty::Const
|
||||
// + ty: u8
|
||||
// + val: Value(Scalar(0x00))
|
||||
@ -28,7 +28,7 @@
|
||||
// + literal: Const { ty: u8, val: Value(Scalar(0x00)) }
|
||||
discriminant(_1) = 0; // scope 0 at $DIR/simplify-arm-identity.rs:18:18: 18:29
|
||||
StorageLive(_2); // scope 1 at $DIR/simplify-arm-identity.rs:19:18: 22:6
|
||||
_3 = const 0isize; // scope 1 at $DIR/simplify-arm-identity.rs:20:9: 20:20
|
||||
_3 = const 0_isize; // scope 1 at $DIR/simplify-arm-identity.rs:20:9: 20:20
|
||||
// ty::Const
|
||||
// + ty: isize
|
||||
// + val: Value(Scalar(0x0000000000000000))
|
||||
@ -39,7 +39,7 @@
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_2 = const Dst::Foo(0u8); // scope 1 at $DIR/simplify-arm-identity.rs:21:21: 21:32
|
||||
_2 = const Dst::Foo(0_u8); // scope 1 at $DIR/simplify-arm-identity.rs:21:21: 21:32
|
||||
// ty::Const
|
||||
// + ty: Dst
|
||||
// + val: Value(Scalar(0x00))
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
bb0: {
|
||||
_2 = discriminant(_1); // scope 0 at $DIR/simplify-arm.rs:11:9: 11:16
|
||||
switchInt(move _2) -> [0isize: bb1, 1isize: bb3, otherwise: bb2]; // scope 0 at $DIR/simplify-arm.rs:11:9: 11:16
|
||||
switchInt(move _2) -> [0_isize: bb1, 1_isize: bb3, otherwise: bb2]; // scope 0 at $DIR/simplify-arm.rs:11:9: 11:16
|
||||
}
|
||||
|
||||
bb1: {
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
bb0: {
|
||||
_2 = discriminant(_1); // scope 0 at $DIR/simplify-arm.rs:11:9: 11:16
|
||||
switchInt(move _2) -> [0isize: bb1, 1isize: bb3, otherwise: bb2]; // scope 0 at $DIR/simplify-arm.rs:11:9: 11:16
|
||||
switchInt(move _2) -> [0_isize: bb1, 1_isize: bb3, otherwise: bb2]; // scope 0 at $DIR/simplify-arm.rs:11:9: 11:16
|
||||
}
|
||||
|
||||
bb1: {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user