diff options
author | Richard Biener <rguenther@suse.de> | 2021-11-18 13:40:32 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2021-11-19 09:35:21 +0100 |
commit | 0fc859f5efcb4624a8b4ffdbf34d63972af179a8 (patch) | |
tree | edca5ac944ef0ed42fce6f17db03cb5f7b0c9558 /gcc/tree-loop-distribution.c | |
parent | 09d462146b3107c665265b11ad925c61a91c6efb (diff) | |
download | gcc-0fc859f5efcb4624a8b4ffdbf34d63972af179a8.zip gcc-0fc859f5efcb4624a8b4ffdbf34d63972af179a8.tar.gz gcc-0fc859f5efcb4624a8b4ffdbf34d63972af179a8.tar.bz2 |
tree-optimization/102436 - restore loop store motion
This restores a case of conditional store motion we fail to handle
after the rewrite. We can recognize the special case of all
stores in a loop happening in a single conditionally executed
block which ensures stores are not re-ordered by executing them
in different loop iterations. Separating out the case avoids
complicating the already complex main path.
2021-11-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/102436
* tree-ssa-loop-im.c (execute_sm_if_changed): Add mode
to just create the if structure and return the then block.
(execute_sm): Add flag to indicate the var will re-use
another flag var.
(hoist_memory_references): Support a single conditional
block with all stores as special case.
* gcc.dg/torture/20211118-1.c: New testcase.
* gcc.dg/tree-ssa/ssa-lim-18.c: Likewise.
Diffstat (limited to 'gcc/tree-loop-distribution.c')
0 files changed, 0 insertions, 0 deletions