2015-05-05 Yvan Roux <yvan.roux@linaro.org>
[official-gcc.git] / gcc / ifcvt.h
blob3e3dc5b7afc65e630402f71efd9f01cc35958428
1 /* If-conversion header file.
2 Copyright (C) 2014-2015 Free Software Foundation, Inc.
4 This file is part of GCC.
6 GCC is free software; you can redistribute it and/or modify it
7 under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
9 any later version.
11 GCC is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
14 License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GCC; see the file COPYING3. If not see
18 <http://www.gnu.org/licenses/>. */
20 #ifndef GCC_IFCVT_H
21 #define GCC_IFCVT_H
23 /* Structure to group all of the information to process IF-THEN and
24 IF-THEN-ELSE blocks for the conditional execution support. */
26 struct ce_if_block
28 basic_block test_bb; /* First test block. */
29 basic_block then_bb; /* THEN block. */
30 basic_block else_bb; /* ELSE block or NULL. */
31 basic_block join_bb; /* Join THEN/ELSE blocks. */
32 basic_block last_test_bb; /* Last bb to hold && or || tests. */
33 int num_multiple_test_blocks; /* # of && and || basic blocks. */
34 int num_and_and_blocks; /* # of && blocks. */
35 int num_or_or_blocks; /* # of || blocks. */
36 int num_multiple_test_insns; /* # of insns in && and || blocks. */
37 int and_and_p; /* Complex test is &&. */
38 int num_then_insns; /* # of insns in THEN block. */
39 int num_else_insns; /* # of insns in ELSE block. */
40 int pass; /* Pass number. */
43 #endif /* GCC_IFCVT_H */