[Bug target/61837] missed loop invariant expression optimization

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jul 29 00:43:24 GMT 2021


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61837

--- Comment #12 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jiu Fu Guo <guojiufu@gcc.gnu.org>:

https://gcc.gnu.org/g:aafa38b5bfed5e3eff258aa5354ed928f4986709

commit r12-2585-gaafa38b5bfed5e3eff258aa5354ed928f4986709
Author: Jiufu Guo <guojiufu@linux.ibm.com>
Date:   Thu Jul 15 17:21:00 2021 +0800

    Use preferred mode for doloop IV [PR61837]

    Currently, doloop.xx variable is using the type as niter which may be
    shorter than word size.  For some targets, it would be better to use
    word size type.  For example, on 64bit system, to access 32bit value,
    subreg maybe used.  Then using 64bit type maybe better for niter if
    it can be present in both 32bit and 64bit.

    This patch add target hook to query preferred mode for doloop IV,
    and update mode accordingly.

    gcc/ChangeLog:

    2021-07-29  Jiufu Guo  <guojiufu@linux.ibm.com>

            PR target/61837
            * config/rs6000/rs6000.c (TARGET_PREFERRED_DOLOOP_MODE): New hook.
            (rs6000_preferred_doloop_mode): New hook.
            * doc/tm.texi: Regenerate.
            * doc/tm.texi.in: Add hook preferred_doloop_mode.
            * target.def (preferred_doloop_mode): New hook.
            * targhooks.c (default_preferred_doloop_mode): New hook.
            * targhooks.h (default_preferred_doloop_mode): New hook.
            * tree-ssa-loop-ivopts.c (compute_doloop_base_on_mode): New
function.
            (add_iv_candidate_for_doloop): Call targetm.preferred_doloop_mode
            and compute_doloop_base_on_mode.

    gcc/testsuite/ChangeLog:

    2021-07-29  Jiufu Guo  <guojiufu@linux.ibm.com>

            PR target/61837
            * gcc.target/powerpc/pr61837.c: New test.


More information about the Gcc-bugs mailing list