Hi All, Here is a patch that cures the issues with non-correct vuse for scalar statements during code motion, i.e. if vuse of scalar statement is vdef of masked store which has been sunk to new basic block, we must fix it up. The patch also fixed almost all remarks pointed out by Jacub.
Bootstrapping and regression testing on v86-64 did not show any new failures. Is it OK for trunk? ChangeLog: 2016-02-04 Yuri Rumyantsev <ysrum...@gmail.com> PR tree-optimization/69652 * tree-vect-loop.c (optimize_mask_stores): Move declaration of STMT1 to nested loop, introduce new SCALAR_VUSE vector to keep vuse of all skipped scalar statements, introduce variable LAST_VUSE that has vuse of LAST_STORE, add assertion that SCALAR_VUSE is empty in the begining of current masked store processing, did source re-formatting, skip parsing of debug gimples, stop processing when call or gimple with volatile operand habe been encountered, save scalar statement with vuse in SCALAR_VUSE, skip processing debug statements in IMM_USE iterator, change vuse of all saved scalar statements to LAST_VUSE if it makes sence. gcc/testsuite/ChangeLog: * gcc.dg/torture/pr69652.c: New test.
patch
Description: Binary data