/usr/lib/gcc-cross/powerpc64-linux-gnu/7/plugin/include/cfg-flags.def is in gcc-7-plugin-dev-powerpc64-linux-gnu 7.3.0-16ubuntu3cross1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | /* Flags on basic blocks and edges.
Copyright (C) 2012-2017 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
/* This file defines flags that may appear on basic blocks or on
edges. Source files define DEF_BASIC_BLOCK_FLAG or DEF_EDGE_FLAG
appropriately before including this file. */
#if !defined(DEF_BASIC_BLOCK_FLAG) && !defined(DEF_EDGE_FLAG)
#error "You must define DEF_BASIC_BLOCK_FLAG or DEF_EDGE_FLAG"
#endif
#ifdef DEF_BASIC_BLOCK_FLAG
/* Masks for basic_block.flags.
The format of this file is: DEF_BASIC_BLOCK_FLAG(NAME, IDX).
NAME is the name of the basic block flag. A flag BB_#NAME will be
created and the name is used in dump_edge_info.
IDX is a sequence number that is used to determine the value
of the flag, which is 1 << IDX).
BB_HOT_PARTITION and BB_COLD_PARTITION should be preserved throughout
the compilation, so they are never cleared.
All other flags may be cleared by clear_bb_flags(). It is generally
a bad idea to rely on any flags being up-to-date. */
/* Only set on blocks that have just been created by create_bb. */
DEF_BASIC_BLOCK_FLAG(NEW, 0)
/* Set by find_unreachable_blocks. Do not rely on this being set in any
pass. */
DEF_BASIC_BLOCK_FLAG(REACHABLE, 1)
/* Set for blocks in an irreducible loop by loop analysis. */
DEF_BASIC_BLOCK_FLAG(IRREDUCIBLE_LOOP, 2)
/* Set on blocks that may actually not be single-entry single-exit block. */
DEF_BASIC_BLOCK_FLAG(SUPERBLOCK, 3)
/* Set on basic blocks that the scheduler should not touch. This is used
by SMS to prevent other schedulers from messing with the loop schedule. */
DEF_BASIC_BLOCK_FLAG(DISABLE_SCHEDULE, 4)
/* Set on blocks that should be put in a hot section. */
DEF_BASIC_BLOCK_FLAG(HOT_PARTITION, 5)
/* Set on blocks that should be put in a cold section. */
DEF_BASIC_BLOCK_FLAG(COLD_PARTITION, 6)
/* Set on block that was duplicated. */
DEF_BASIC_BLOCK_FLAG(DUPLICATED, 7)
/* Set if the label at the top of this block is the target of a non-local goto. */
DEF_BASIC_BLOCK_FLAG(NON_LOCAL_GOTO_TARGET, 8)
/* Set on blocks that are in RTL format. */
DEF_BASIC_BLOCK_FLAG(RTL, 9)
/* Set on blocks that are forwarder blocks.
Only used in cfgcleanup.c. */
DEF_BASIC_BLOCK_FLAG(FORWARDER_BLOCK, 10)
/* Set on blocks that cannot be threaded through.
Only used for jump threading. */
DEF_BASIC_BLOCK_FLAG(NONTHREADABLE_BLOCK, 11)
/* Set on blocks that were modified in some way. This bit is set in
df_set_bb_dirty, but not cleared by df_analyze, so it can be used
to test whether a block has been modified prior to a df_analyze call. */
DEF_BASIC_BLOCK_FLAG(MODIFIED, 12)
/* A general visited flag for passes to use. */
DEF_BASIC_BLOCK_FLAG(VISITED, 13)
/* Set on blocks that are in a transaction. This is calculated on
demand, and is available after calling compute_transaction_bits(). */
DEF_BASIC_BLOCK_FLAG(IN_TRANSACTION, 14)
#endif
#ifdef DEF_EDGE_FLAG
/* Masks for edge.flags.
The format of this file is: DEF_EDGE_FLAG(NAME, IDX, STRING).
NAME is the name of the edge flag. A flag EDGE_#NAME will be
created and the name is used in dump_edge_info.
IDX is a sequence number that is used to determine the value
of the flag, which is 1 << IDX). */
/* 'Straight line' flow. In GIMPLE and in cfglayout mode, all normal
edges are fallthru edges. In cfgrtl mode, this flag really means
that control flow falls through to the next basic block in the line. */
DEF_EDGE_FLAG(FALLTHRU, 0)
/* Strange flow, like a computed jump or exception handling. Usually
this means that the edge cannot be split. */
DEF_EDGE_FLAG(ABNORMAL, 1)
/* Edge out of a basic block that ends with a CALL_INSN with abnormal
exit, like an exception or a non-local goto.
ABNORMAL_CALL edges also have ABNORMAL set.
This flag is only used for the RTL CFG. */
DEF_EDGE_FLAG(ABNORMAL_CALL, 2)
/* Exception edge. Exception handling edges represent possible control
transfers from a trapping instruction to an exception handler.
EH edges also have ABNORMAL set for the RTL CFG. */
DEF_EDGE_FLAG(EH, 3)
/* Never merge blocks via this edge. This is used for exception handling,
to prevent merging away edges to the post-landing-pad basic block.
This flag is only used for the RTL CFG. */
DEF_EDGE_FLAG(PRESERVE, 4)
/* Not a real edge. This is used to connect parts of the CFG that do
not halt, such as infinite loops and noreturn functions, to the
EXIT_BLOCK, so that traversing of the reverse CFG is possible. */
DEF_EDGE_FLAG(FAKE, 5)
/* A back edge, marked in a depth-first search of the CFG. Back edges
are hints that this edge may be part of a loop in the CFG. */
DEF_EDGE_FLAG(DFS_BACK, 6)
/* Edge in a part of the CFG that is an irreducible loop. */
DEF_EDGE_FLAG(IRREDUCIBLE_LOOP, 7)
/* Edge taken when controlling predicate is nonzero.
This is only used for the GIMPLE CFG. */
DEF_EDGE_FLAG(TRUE_VALUE, 8)
/* Edge taken when controlling predicate is zero.
This is only used for the GIMPLE CFG. */
DEF_EDGE_FLAG(FALSE_VALUE, 9)
/* Edge is executable. This is only used in GIMPLE SSA-CCP and VRP.
This is only used for the GIMPLE CFG. */
DEF_EDGE_FLAG(EXECUTABLE, 10)
/* Edge crosses between hot and cold sections, when we do partitioning.
This flag is only used for the RTL CFG. */
DEF_EDGE_FLAG(CROSSING, 11)
/* Edge from a sibcall CALL_INSN to exit.
SIBCALL edges also have ABNORMAL set.
This flag is only used for the RTL CFG. */
DEF_EDGE_FLAG(SIBCALL, 12)
/* Candidate for straight line flow. Only used in bb-reorder.c.
This flag is only used for the RTL CFG. */
DEF_EDGE_FLAG(CAN_FALLTHRU, 13)
/* Exit of a loop. This is only used in ifcvt.c.
This flag is only used for the RTL CFG. */
DEF_EDGE_FLAG(LOOP_EXIT, 14)
/* Uninstrumented edge out of a GIMPLE_TRANSACTION statement. */
DEF_EDGE_FLAG(TM_UNINSTRUMENTED, 15)
/* Abort (over) edge out of a GIMPLE_TRANSACTION statement. */
DEF_EDGE_FLAG(TM_ABORT, 16)
/* An edge we should ignore. It should be entirely local to
passes. ie, it is never set on any edge upon the completion
of any pass. */
DEF_EDGE_FLAG(IGNORE, 17)
#endif
/*
Local variables:
mode:c
End:
*/
|