Ping: https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01642.html
On 10/23/2017 08:42 PM, Martin Sebor wrote:
Attached is a reworked solution to enhance -Wrestrict while avoiding changing tree-vrp.c or any other VRP machinery. Richard, in considering you suggestions I realized that the ao_ref struct isn't general enough to detect the kinds of problems I needed to etect (storing bit-offsets in HOST_WIDE_INT means out-of-bounds offsets cannot be represented or detected, leading to either false positives or false negatives). Instead, the solution adds a couple of small classes to builtins.c to overcome this limitation (I'm contemplating moving them along with -Wstringop-overflow to a separate file to keep builtins.c from getting too much bigger). The detection of out-of-bounds offsets and overlapping accesses is relatively simple but the rest of the changes are somewhat involved because of the computation of the offsets and sizes of the overlaps. Jeff, as per your suggestion/request in an earlier review (bug 81117) I've renamed some of the existing functions to better reflect their new function (including renaming strlen_optimize_stmt in tree-ssa-strlen.c to strlen_check_and_optimize_stmt). There's quite a bit of churn due to some of this renaming. I don't think this renaming makes the review too difficult but if you feel differently I can [be persuaded to] split it out into a separate patch. To validate the patch I compiled the Linux kernel and Binutils/GDB. There's one false positive I'm working on resolving that's caused by an incorrect interpretation of an offset in a range whose lower bound is greater than its upper bound. This it so say that while I'm aware the patch isn't perfect it already works reasonably well in practice and I think it's close enough to review. Thanks Martin