OpenCores
URL https://opencores.org/ocsvn/altor32/altor32/trunk

Subversion Repositories altor32

[/] [altor32/] [trunk/] [gcc-x64/] [or1knd-elf/] [lib/] [gcc/] [or1knd-elf/] [4.8.0/] [plugin/] [include/] [cfg-flags.def] - Blame information for rev 35

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.