[gimple] Move can_duplicate_bb_p to gimple_can_duplicate_bb_p
authorTom de Vries <tdevries@suse.de>
Wed, 7 Oct 2020 05:22:53 +0000 (07:22 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 14 Oct 2020 12:37:03 +0000 (14:37 +0200)
commit17d5739a6b103cdd3315f5d0e09fe8faa6620a03
treeb6f7b76c6622ee165aacb1e445fa7e54f14dd7a6
parent9068711f210e02a2b80f46813e47f338718c94dc
[gimple] Move can_duplicate_bb_p to gimple_can_duplicate_bb_p

The function gimple_can_duplicate_bb_p currently always returns true.

The presence of can_duplicate_bb_p in tracer.c however suggests that
there are cases when bb's indeed cannot be duplicated.

Move the implementation of can_duplicate_bb_p to gimple_can_duplicate_bb_p.

Bootstrapped and reg-tested on x86_64-linux.

Build x86_64-linux with nvptx accelerator and tested libgomp.

No issues found.

As corner-case check, bootstrapped and reg-tested a patch that makes
gimple_can_duplicate_bb_p always return false, resulting in
PR97333 - "[gimple_can_duplicate_bb_p == false, tree-ssa-threadupdate]
ICE in duplicate_block, at cfghooks.c:1093".

gcc/ChangeLog:

2020-10-09  Tom de Vries  <tdevries@suse.de>

* tracer.c (cached_can_duplicate_bb_p, analyze_bb): Use
can_duplicate_block_p.
(can_duplicate_insn_p, can_duplicate_bb_no_insn_iter_p)
(can_duplicate_bb_p): Move and merge ...
* tree-cfg.c (gimple_can_duplicate_bb_p): ... here.
gcc/tracer.c
gcc/tree-cfg.c