This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Canonical forms of edges and fallthroughs
- From: Kyrill Tkachov <kyrylo dot tkachov at foss dot arm dot com>
- To: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Fri, 29 Apr 2016 11:52:03 +0100
- Subject: Canonical forms of edges and fallthroughs
- Authentication-results: sourceware.org; auth=none
Hi all,
I'm looking at an issue in RTL ifcvt and I'm trying to understand the way edges between
basic blocks are treated and in particular what is the canonical use of EDGE_FALLTHRU.
Is it governed by the conditional jump condition?
In find_if_header in ifcvt.c there is a comment that says:
/* The THEN edge is canonically the one that falls through. */
But I'm encountering a case where the jump expression from the test block is:
(set (pc)
(if_then_else (eq (reg:CC 66 cc)
(const_int 0 [0]))
(label_ref:DI 22)
(pc)))
that is, the fallthrough happens when the condition is false. Does that make this
basic block sequence non-canonical?
Thanks,
Kyrill