aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2025-07-31 13:06:36 +0200
committerRichard Biener <rguenther@suse.de>2025-07-31 14:12:50 +0200
commitff6f7d8e005ae94ffd55f1dba727e28531c3daf3 (patch)
tree87a181282d9466e5f2b665deb6360493abd90617 /gcc
parent0be8ffbc854410b65d45a72e843dc18b13fc7b0f (diff)
downloadgcc-ff6f7d8e005ae94ffd55f1dba727e28531c3daf3.zip
gcc-ff6f7d8e005ae94ffd55f1dba727e28531c3daf3.tar.gz
gcc-ff6f7d8e005ae94ffd55f1dba727e28531c3daf3.tar.bz2
tree-optimization/121320 - UBSAN error in ao_ref_init_from_vn_reference
The multiplication by BITS_PER_UNIT should be done in poly_offset_int. PR tree-optimization/121320 * tree-ssa-sccvn.cc (ao_ref_init_from_vn_reference): Convert op->off to poly_offset_int before multiplying by BITS_PER_UNIT.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-ssa-sccvn.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc
index 45fb79c..a3117da 100644
--- a/gcc/tree-ssa-sccvn.cc
+++ b/gcc/tree-ssa-sccvn.cc
@@ -1219,7 +1219,7 @@ ao_ref_init_from_vn_reference (ao_ref *ref,
offset = 0;
}
else
- offset += pop->off * BITS_PER_UNIT;
+ offset += poly_offset_int (pop->off) * BITS_PER_UNIT;
op0_p = NULL;
break;
}
@@ -1270,7 +1270,7 @@ ao_ref_init_from_vn_reference (ao_ref *ref,
if (maybe_eq (op->off, -1))
max_size = -1;
else
- offset += op->off * BITS_PER_UNIT;
+ offset += poly_offset_int (op->off) * BITS_PER_UNIT;
break;
case REALPART_EXPR: