This patchset improves folding in cases where input lengths and/or destination sizes may not be constant but are range bound.
Tested on x86_64 with a full bootstrap build and verified that there are no regressions resulting from this patchset. Also tested a build of bash, which results in 3 __memcpy_chk calls being optimized away completely in addition to a couple of memmove and strcpy chk variants being transformed into regular calls. Siddhesh Poyarekar (3): gimple-fold: Transform stp*cpy_chk to str*cpy directly gimple-fold: Use ranges to simplify _chk calls gimple-fold: Use ranges to simplify strncat and snprintf gcc/gimple-fold.c | 312 +++++++++--------------- gcc/testsuite/gcc.dg/Wobjsize-1.c | 5 +- gcc/testsuite/gcc.dg/fold-stringops-1.c | 23 ++ gcc/testsuite/gcc.dg/fold-stringops-2.c | 63 +++++ gcc/testsuite/gcc.dg/fold-stringops-3.c | 18 ++ 5 files changed, 220 insertions(+), 201 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/fold-stringops-1.c create mode 100644 gcc/testsuite/gcc.dg/fold-stringops-2.c create mode 100644 gcc/testsuite/gcc.dg/fold-stringops-3.c -- 2.31.1