Hi.
This is second part of the UBSAN. Richard Sandiford help me to wrap the offset
into poly_uint64. The offset is neither logically signed nor logically unsigned.
Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
Ready to be installed?
Martin
gcc/ChangeLog:
2018-04-03 Martin Liska <[email protected]>
PR tree-optimization/82491
* rtl.h (strip_offset_and_add): Replace += suboffset with
poly_uint64 () + suboffset.
---
gcc/rtl.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/rtl.h b/gcc/rtl.h
index f31b4ade9d3..0341ba01614 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -4339,7 +4339,7 @@ strip_offset_and_add (rtx x, poly_int64_pod *offset)
{
poly_int64 suboffset;
x = strip_offset (x, &suboffset);
- *offset += suboffset;
+ *offset = poly_uint64 (*offset) + suboffset;
}
return x;
}