Simplify repeat expressions.
This commit is contained in:
parent
48d2157a89
commit
f110f22060
3 changed files with 18 additions and 8 deletions
|
@ -499,11 +499,17 @@ impl<'body, 'tcx> VnState<'body, 'tcx> {
|
||||||
ProjectionElem::Field(f, ty)
|
ProjectionElem::Field(f, ty)
|
||||||
}
|
}
|
||||||
ProjectionElem::Index(idx) => {
|
ProjectionElem::Index(idx) => {
|
||||||
|
if let Value::Repeat(inner, _) = self.get(value) {
|
||||||
|
return Some(*inner);
|
||||||
|
}
|
||||||
let idx = self.locals[idx]?;
|
let idx = self.locals[idx]?;
|
||||||
ProjectionElem::Index(idx)
|
ProjectionElem::Index(idx)
|
||||||
}
|
}
|
||||||
ProjectionElem::ConstantIndex { offset, min_length, from_end } => {
|
ProjectionElem::ConstantIndex { offset, min_length, from_end } => {
|
||||||
match self.get(value) {
|
match self.get(value) {
|
||||||
|
Value::Repeat(inner, _) => {
|
||||||
|
return Some(*inner);
|
||||||
|
}
|
||||||
Value::Aggregate(ty, _, operands) if ty.is_array() => {
|
Value::Aggregate(ty, _, operands) if ty.is_array() => {
|
||||||
let offset = if from_end {
|
let offset = if from_end {
|
||||||
operands.len() - offset as usize
|
operands.len() - offset as usize
|
||||||
|
|
|
@ -41,8 +41,9 @@
|
||||||
|
|
||||||
bb1: {
|
bb1: {
|
||||||
- _6 = _3[_7];
|
- _6 = _3[_7];
|
||||||
+ _6 = _3[0 of 1];
|
- _5 = opaque::<T>(move _6) -> [return: bb2, unwind unreachable];
|
||||||
_5 = opaque::<T>(move _6) -> [return: bb2, unwind unreachable];
|
+ _6 = _1;
|
||||||
|
+ _5 = opaque::<T>(_1) -> [return: bb2, unwind unreachable];
|
||||||
}
|
}
|
||||||
|
|
||||||
bb2: {
|
bb2: {
|
||||||
|
@ -63,8 +64,9 @@
|
||||||
|
|
||||||
bb3: {
|
bb3: {
|
||||||
- _11 = _3[_12];
|
- _11 = _3[_12];
|
||||||
+ _11 = _3[_2];
|
- _10 = opaque::<T>(move _11) -> [return: bb4, unwind unreachable];
|
||||||
_10 = opaque::<T>(move _11) -> [return: bb4, unwind unreachable];
|
+ _11 = _1;
|
||||||
|
+ _10 = opaque::<T>(_1) -> [return: bb4, unwind unreachable];
|
||||||
}
|
}
|
||||||
|
|
||||||
bb4: {
|
bb4: {
|
||||||
|
|
|
@ -41,8 +41,9 @@
|
||||||
|
|
||||||
bb1: {
|
bb1: {
|
||||||
- _6 = _3[_7];
|
- _6 = _3[_7];
|
||||||
+ _6 = _3[0 of 1];
|
- _5 = opaque::<T>(move _6) -> [return: bb2, unwind continue];
|
||||||
_5 = opaque::<T>(move _6) -> [return: bb2, unwind continue];
|
+ _6 = _1;
|
||||||
|
+ _5 = opaque::<T>(_1) -> [return: bb2, unwind continue];
|
||||||
}
|
}
|
||||||
|
|
||||||
bb2: {
|
bb2: {
|
||||||
|
@ -63,8 +64,9 @@
|
||||||
|
|
||||||
bb3: {
|
bb3: {
|
||||||
- _11 = _3[_12];
|
- _11 = _3[_12];
|
||||||
+ _11 = _3[_2];
|
- _10 = opaque::<T>(move _11) -> [return: bb4, unwind continue];
|
||||||
_10 = opaque::<T>(move _11) -> [return: bb4, unwind continue];
|
+ _11 = _1;
|
||||||
|
+ _10 = opaque::<T>(_1) -> [return: bb4, unwind continue];
|
||||||
}
|
}
|
||||||
|
|
||||||
bb4: {
|
bb4: {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue