]>
Commit | Line | Data |
---|---|---|
b53978a3 | 1 | /* Static Single Assignment (SSA) definitions for GNU C-Compiler |
fd9305ef | 2 | Copyright (C) 2000, 2001 Free Software Foundation, Inc. |
b53978a3 JO |
3 | Written by Jeffrey D. Oldham <oldham@codesourcery.com>. |
4 | ||
1322177d | 5 | This file is part of GCC. |
b53978a3 | 6 | |
1322177d LB |
7 | GCC is free software; you can redistribute it and/or modify it under |
8 | the terms of the GNU General Public License as published by the Free | |
9 | Software Foundation; either version 2, or (at your option) any later | |
10 | version. | |
b53978a3 | 11 | |
1322177d LB |
12 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 | for more details. | |
b53978a3 JO |
16 | |
17 | You should have received a copy of the GNU General Public License | |
1322177d LB |
18 | along with GCC; see the file COPYING. If not, write to the Free |
19 | Software Foundation, 59 Temple Place - Suite 330, Boston, MA | |
20 | 02111-1307, USA. */ | |
b53978a3 JO |
21 | |
22 | ||
23 | /* Main SSA routines. */ | |
24 | extern void convert_to_ssa PARAMS ((void)); | |
25 | extern void convert_from_ssa PARAMS ((void)); | |
26 | typedef int (*successor_phi_fn) PARAMS ((rtx, int, int, void *)); | |
27 | extern int for_each_successor_phi PARAMS ((basic_block bb, | |
28 | successor_phi_fn, | |
29 | void *)); | |
316dcdf6 | 30 | void compute_dominance_frontiers PARAMS ((sbitmap *frontiers, int *idom)); |
fd9305ef JL |
31 | extern int remove_phi_alternative PARAMS ((rtx, basic_block)); |
32 | ||
b53978a3 JO |
33 | |
34 | /* Optimizations. */ | |
fd9305ef | 35 | /* In ssa-dce.c */ |
62d285ff | 36 | extern void ssa_eliminate_dead_code PARAMS ((void)); |
b53978a3 | 37 | |
af5c573a JL |
38 | /* In ssa-ccp.c */ |
39 | extern void ssa_const_prop PARAMS ((void)); | |
40 | ||
41 | ||
b53978a3 JO |
42 | /* SSA definitions and uses. */ |
43 | /* This flag is set when the CFG is in SSA form. */ | |
44 | extern int in_ssa_form; | |
45 | ||
46 | /* Element I is the single instruction that sets register I. */ | |
47 | extern varray_type ssa_definition; | |
48 | ||
49 | /* Element I is an INSN_LIST of instructions that use register I. */ | |
50 | extern varray_type ssa_uses; | |
51 | ||
52 | ||
53 | /* Specify which hard registers should be converted. */ | |
54 | ||
55 | /* All pseudo-registers (having register number >= | |
56 | FIRST_PSEUDO_REGISTER) and hard registers satisfying | |
57 | CONVERT_HARD_REGISTER_TO_SSA_P are converted to SSA form. */ | |
58 | ||
59 | /* Given a hard register number REG_NO, return nonzero if and only if | |
60 | the register should be converted to SSA. */ | |
61 | ||
62 | #ifndef CONVERT_HARD_REGISTER_TO_SSA_P | |
63 | #define CONVERT_HARD_REGISTER_TO_SSA_P(REG_NO) (0) /* default of no hard registers */ | |
64 | #endif /* CONVERT_HARD_REGISTER_TO_SSA_P */ | |
65 | ||
66 | /* Given a register number REG_NO, return nonzero if and only if the | |
67 | register should be converted to SSA. */ | |
68 | ||
69 | #define CONVERT_REGISTER_TO_SSA_P(REG_NO) \ | |
70 | ((!HARD_REGISTER_NUM_P (REG_NO)) || \ | |
71 | (CONVERT_HARD_REGISTER_TO_SSA_P (REG_NO))) |