summaryrefslogtreecommitdiff
path: root/gcc/loop-doloop.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/loop-doloop.c')
-rw-r--r--gcc/loop-doloop.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/loop-doloop.c b/gcc/loop-doloop.c
index dd15aab919f..c40777b82c4 100644
--- a/gcc/loop-doloop.c
+++ b/gcc/loop-doloop.c
@@ -203,12 +203,16 @@ doloop_valid_p (struct loop *loop, struct niter_desc *desc)
{
/* Different targets have different necessities for low-overhead
looping. Call the back end for each instruction within the loop
- to let it decide whether the insn is valid. */
- if (!targetm.insn_valid_within_doloop (insn))
- {
+ to let it decide whether the insn prohibits a low-overhead loop.
+ It will then return the cause for it to emit to the dump file. */
+ const char * invalid = targetm.invalid_within_doloop (insn);
+ if (invalid)
+ {
+ if (dump_file)
+ fprintf (dump_file, "Doloop: %s\n", invalid);
result = false;
goto cleanup;
- }
+ }
}
}
result = true;