[ldist] Don't add lib calls with -fno-tree-loop-distribute-patterns
authorTom de Vries <tdevries@suse.de>
Mon, 31 Jan 2022 16:05:28 +0000 (17:05 +0100)
committerTom de Vries <tdevries@suse.de>
Tue, 1 Feb 2022 07:12:24 +0000 (08:12 +0100)
commit2989516651579dc045e968d7517857c581e3a2dd
treef9621a228dd4d3d1b0cd5fddec46a58b8f54b2ed
parent1bb52662574f6c98de48a5db8c180786e4a53039
[ldist] Don't add lib calls with -fno-tree-loop-distribute-patterns

As mentioned in PR56888 comment 21:
...
-fno-tree-loop-distribute-patterns is the reliable way to not
transform loops into library calls.
...

However, since commit 6f966f06146 ("ldist: Recognize strlen and rawmemchr like
loops") a strlen or rawmemchr library call may be introduced by ldist.

This caused regressions in testcases
gcc.c-torture/execute/builtins/strlen{,-2,-3}.c for nvptx.

Fix this by not calling transform_reduction_loop from
loop_distribution::execute for -fno-tree-loop-distribute-patterns.

Tested regressed test-cases as well as gcc.dg/tree-ssa/ldist-*.c on
nvptx.

gcc/ChangeLog:

2022-01-31  Tom de Vries  <tdevries@suse.de>

* tree-loop-distribution.cc (generate_reduction_builtin_1): Check for
-ftree-loop-distribute-patterns.
(loop_distribution::execute): Don't call transform_reduction_loop for
-fno-tree-loop-distribute-patterns.

gcc/testsuite/ChangeLog:

2022-01-31  Tom de Vries  <tdevries@suse.de>

* gcc.dg/tree-ssa/ldist-strlen-4.c: New test.
gcc/testsuite/gcc.dg/tree-ssa/ldist-strlen-4.c [new file with mode: 0644]
gcc/tree-loop-distribution.cc