target.def (can_use_doloop_p): New hook.
authorRichard Sandiford <rdsandiford@googlemail.com>
Sat, 9 Nov 2013 11:42:16 +0000 (11:42 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sat, 9 Nov 2013 11:42:16 +0000 (11:42 +0000)
commit1d0216c8b79931cffcc5599b8a9a4f6eaf86d2b7
tree5b96e2c7a588193d1b4019f9316a1ca13b8376ce
parent12929715b124071e523316c28897c8a05083cf12
target.def (can_use_doloop_p): New hook.

gcc/
* target.def (can_use_doloop_p): New hook.
* doc/tm.texi.in (TARGET_CAN_USE_DOLOOP_P): Add.
* doc/tm.texi: Regenerate.
* doc/md.texi (doloop_begin, doloop_end): Update documentation.
* hooks.h (hook_bool_dint_dint_uint_true): Declare.
* hooks.c (hook_bool_dint_dint_uint_true): New function.
* targhooks.h (can_use_doloop_if_innermost): Declare.
* targhooks.c (can_use_doloop_if_innermost): New function.
* target.h: Include double-int.h.
* loop-doloop.c (doloop_optimize): Call targetm.can_use_doloop_p.
Remove iteration count, maximum iteration count, loop depth and
enter-at-top inputs from doloop_begin and doloop_end.
* config/arc/arc.md (doloop_begin, doloop_end): Update for new
interface.
* config/arc/arc.c (arc_can_use_doloop_p): New function.
(TARGET_CAN_USE_DOLOOP_P): Define.
* config/arm/thumb2.md (doloop_end): Update for new interface.
* config/arm/arm.c (TARGET_CAN_USE_DOLOOP_P): Define.
* config/bfin/bfin.md (doloop_end): Update for new interface.
* config/bfin/bfin.c (bfin_can_use_doloop_p): New function.
(TARGET_CAN_USE_DOLOOP_P): Define.
* config/c6x/c6x.md (doloop_end): Update for new interface.
* config/ia64/ia64.md (doloop_end): Update for new interface.
* config/ia64/ia64.c (TARGET_CAN_USE_DOLOOP_P): Define.
* config/mep/mep.md (doloop_begin, doloop_end): Update for new
interface.
* config/mep/mep.c (mep_emit_doloop): Likewise.
(TARGET_CAN_USE_DOLOOP_P): Define.
* config/rs6000/rs6000.md (doloop_end): Update for new interface.
* config/rs6000/rs6000.c (TARGET_CAN_USE_DOLOOP_P): Define.
* config/s390/s390.md (doloop_end): Update for new interface.
* config/sh/sh.md (doloop_end): Likewise.
* config/spu/spu.md (doloop_end): Likewise.
* config/spu/spu.c (TARGET_CAN_USE_DOLOOP_P): Define.
* config/tilegx/tilegx.md (doloop_end): Update for new interface.
* config/tilegx/tilegx.c (TARGET_CAN_USE_DOLOOP_P): Define.
* config/tilepro/tilepro.md (doloop_end): Update for new interface.
* config/tilepro/tilepro.c (TARGET_CAN_USE_DOLOOP_P): Define.
* config/v850/v850.md (doloop_begin, doloop_end): Update for new
interface.
* config/v850/v850.c (TARGET_CAN_USE_DOLOOP_P): Define.

From-SVN: r204614
34 files changed:
gcc/ChangeLog
gcc/config/arc/arc.c
gcc/config/arc/arc.md
gcc/config/arm/arm.c
gcc/config/arm/thumb2.md
gcc/config/bfin/bfin.c
gcc/config/bfin/bfin.md
gcc/config/c6x/c6x.md
gcc/config/ia64/ia64.c
gcc/config/ia64/ia64.md
gcc/config/mep/mep.c
gcc/config/mep/mep.md
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md
gcc/config/s390/s390.md
gcc/config/sh/sh.md
gcc/config/spu/spu.c
gcc/config/spu/spu.md
gcc/config/tilegx/tilegx.c
gcc/config/tilegx/tilegx.md
gcc/config/tilepro/tilepro.c
gcc/config/tilepro/tilepro.md
gcc/config/v850/v850.c
gcc/config/v850/v850.md
gcc/doc/md.texi
gcc/doc/tm.texi
gcc/doc/tm.texi.in
gcc/hooks.c
gcc/hooks.h
gcc/loop-doloop.c
gcc/target.def
gcc/target.h
gcc/targhooks.c
gcc/targhooks.h