Fix constant-offset folding to use the correct operand for stores.
This commit is contained in:
committed by
Benjamin Bouvier
parent
2de5542139
commit
f1db50aa76
@@ -16,3 +16,17 @@ ebb0(v0: i64):
|
|||||||
; nextln: [RexOp1ldDisp8#808b] v2 = load.i64 notrap aligned v0+16
|
; nextln: [RexOp1ldDisp8#808b] v2 = load.i64 notrap aligned v0+16
|
||||||
; nextln: [Op1ret#c3] return v2
|
; nextln: [Op1ret#c3] return v2
|
||||||
; nextln: }
|
; nextln: }
|
||||||
|
|
||||||
|
function u0:1(i64, i64 vmctx) {
|
||||||
|
ebb0(v3: i64, v0: i64):
|
||||||
|
v1 = iadd_imm.i64 v0, 16
|
||||||
|
[RexOp1stDisp8#8089] store.i64 notrap aligned v3, v1
|
||||||
|
[Op1ret#c3] return
|
||||||
|
}
|
||||||
|
|
||||||
|
; sameln: function u0:1(i64, i64 vmctx) fast {
|
||||||
|
; nextln: ebb0(v3: i64, v0: i64):
|
||||||
|
; nextln: v1 = iadd_imm v0, 16
|
||||||
|
; nextln: [RexOp1stDisp8#8089] store notrap aligned v3, v0+16
|
||||||
|
; nextln: [Op1ret#c3] return
|
||||||
|
; nextln: }
|
||||||
|
|||||||
@@ -329,7 +329,7 @@ fn optimize_complex_addresses(pos: &mut EncCursor, inst: Inst, isa: &TargetIsa)
|
|||||||
..
|
..
|
||||||
} => {
|
} => {
|
||||||
if let Some(imm) = offset.try_add_i64(imm.into()) {
|
if let Some(imm) = offset.try_add_i64(imm.into()) {
|
||||||
store_args[0] = arg;
|
store_args[1] = arg;
|
||||||
*offset = imm;
|
*offset = imm;
|
||||||
} else {
|
} else {
|
||||||
// Overflow.
|
// Overflow.
|
||||||
|
|||||||
Reference in New Issue
Block a user