Add unsigned type iv_cand for iv_use with non mode-precision type
authorBin Cheng <bin.cheng@linux.alibaba.com>
Thu, 9 Apr 2020 08:42:48 +0000 (16:42 +0800)
committerBin Cheng <bin.cheng@linux.alibaba.com>
Thu, 9 Apr 2020 08:42:48 +0000 (16:42 +0800)
commited80b385418f97ef087f3f2bbe1abecffb5c9775
tree2e2fac8703977db8d148db11dbd3931b73013f7f
parent926d39c3816772acde857a8510480d9b287ef760
Add unsigned type iv_cand for iv_use with non mode-precision type

Precisely,  for iv_use if it's not integer/pointer type, or non-mode
precision type, add candidate for the corresponding scev in unsigned
type with the same precision, rather than its original type.

gcc/
    PR tree-optimization/93674
    * tree-ssa-loop-ivopts.c (langhooks.h): New include.
    (add_iv_candidate_for_use): For iv_use of non integer or pointer type,
    or non-mode precision type, add candidate in unsigned type with the
    same precision.

gcc/testsuite/
    PR tree-optimization/93674
    * g++.dg/pr93674.C: New test.
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/pr93674.C [new file with mode: 0644]
gcc/tree-ssa-loop-ivopts.c