1 /* Compatibility layer for using upstream CLooG versions with
3 Copyright (C) 2010, 2011 Free Software Foundation, Inc.
4 Contributed by Andreas Simbuerger <simbuerg@fim.uni-passau.de>.
6 This file is part of GCC.
8 GCC is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3, or (at your option)
13 GCC is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with GCC; see the file COPYING3. If not see
20 <http://www.gnu.org/licenses/>. */
22 #ifndef GRAPHITE_CLOOG_COMPAT_H
23 #define GRAPHITE_CLOOG_COMPAT_H
25 /* Restore compatibility to CLooG Legacy. */
27 typedef const struct clast_expr
*clast_name_p
;
29 typedef const char *clast_name_p
;
33 #define cloog_initialize()
34 #define cloog_finalize()
39 /* CloogOptions compatibility. */
40 #define build_cloog_prog(SCOP, PROG, OPT)\
41 build_cloog_prog (SCOP, PROG)
42 #define cloog_program_extract_scalars(PROG, SCATT, OPT)\
43 cloog_program_extract_scalars (PROG, SCATT)
44 #define cloog_program_scatter(PROG, SCATT, OPT)\
45 cloog_program_scatter (PROG, SCATT)
47 /* CLAST compatibility. */
48 #define clast_expr_term expr_term
49 #define clast_expr_red expr_red
50 #define clast_expr_bin expr_bin
51 #define clast_pprint pprint
53 /* CloogState compatibility. */
54 #define CloogState void
55 #define cloog_state_malloc() NULL
56 #define cloog_state_free(STATE)
57 #define cloog_loop_malloc(STATE) cloog_loop_malloc ()
58 #define cloog_options_malloc(STATE) cloog_options_malloc ()
59 #define cloog_statement_alloc(STATE, INDEX) cloog_statement_alloc (INDEX)
60 #define new_Cloog_Domain_from_ppl_Pointset_Powerset(PSPS, NB, STATE)\
61 new_Cloog_Domain_from_ppl_Pointset_Powerset (PSPS)
62 #define new_Cloog_Domain_from_ppl_Polyhedron(POLY, NB, STATE)\
63 new_Cloog_Domain_from_ppl_Polyhedron (POLY)
64 #define cloog_domain_from_cloog_matrix(STATE, MAT, NB)\
65 cloog_domain_matrix2domain (MAT)
67 /* CloogScatteringList compatibility. */
68 #define CloogScatteringList CloogDomainList
69 #define CloogScattering CloogDomain
70 #define cloog_set_next_scattering cloog_set_next_domain
71 #define cloog_set_scattering cloog_set_domain
72 #define cloog_scattering cloog_domain
73 #define cloog_next_scattering cloog_next_domain
74 #define cloog_scattering_free cloog_domain_free
75 #define cloog_program_dump_cloog(DUMPFILE, PROGRAM, SCATTERINGLIST)\
76 cloog_program_dump_cloog (DUMPFILE, PROGRAM)
80 /* Adapt CLooG accessors from CLooG legacy to
81 newer CLooG versions. */
86 cloog_statement_usr (CloogStatement
*cs
)
91 static inline CloogScattering
*
92 cloog_scattering (CloogScatteringList
*sl
)
98 cloog_set_scattering (CloogScatteringList
*sl
, CloogScattering
*scatt
)
103 static inline CloogScatteringList
*
104 cloog_next_scattering (CloogScatteringList
*sl
)
110 cloog_set_next_scattering (CloogScatteringList
*sl
, CloogScatteringList
*next
)
116 cloog_program_nb_scattdims (CloogProgram
*prog
)
118 return prog
->nb_scattdims
;
122 cloog_program_set_nb_scattdims (CloogProgram
*prog
, int nb_scattdims
)
124 prog
->nb_scattdims
= nb_scattdims
;
127 static inline CloogNames
*
128 cloog_program_names (CloogProgram
*prog
)
134 cloog_program_set_names (CloogProgram
*prog
, CloogNames
*names
)
140 cloog_program_set_context (CloogProgram
*prog
, CloogDomain
*domain
)
142 prog
->context
= domain
;
146 cloog_program_set_loop (CloogProgram
*prog
, CloogLoop
*loop
)
151 static inline CloogBlockList
*
152 cloog_program_blocklist (CloogProgram
*prog
)
154 return prog
->blocklist
;
158 cloog_program_set_blocklist (CloogProgram
*prog
, CloogBlockList
*bl
)
160 prog
->blocklist
= bl
;
164 cloog_program_scaldims (CloogProgram
*prog
)
166 return prog
->scaldims
;
170 cloog_program_set_scaldims (CloogProgram
*prog
, int *s
)
176 cloog_names_nb_parameters (CloogNames
*names
)
178 return names
->nb_parameters
;
182 cloog_names_set_nb_parameters (CloogNames
*names
, int nb_parameters
)
184 names
->nb_parameters
= nb_parameters
;
187 static inline char **
188 cloog_names_parameters (CloogNames
*names
)
190 return names
->parameters
;
194 cloog_names_set_parameters (CloogNames
*names
, char **parameters
)
196 names
->parameters
= parameters
;
200 cloog_names_set_nb_iterators (CloogNames
*names
, int nb_iterators
)
202 names
->nb_iterators
= nb_iterators
;
206 cloog_names_set_iterators (CloogNames
*names
, char **iterators
)
208 names
->iterators
= iterators
;
212 cloog_names_set_nb_scattering (CloogNames
*names
, int nb_scattering
)
214 names
->nb_scattering
= nb_scattering
;
218 cloog_names_set_scattering (CloogNames
*names
, char **scattering
)
220 names
->scattering
= scattering
;
224 cloog_statement_set_usr (CloogStatement
*cs
, void *u
)
230 cloog_loop_set_next (CloogLoop
*loop
, CloogLoop
*next
)
236 cloog_loop_set_domain (CloogLoop
*loop
, CloogDomain
*domain
)
238 loop
->domain
= domain
;
242 cloog_loop_set_block (CloogLoop
*loop
, CloogBlock
*block
)
247 static inline CloogBlockList
*
248 cloog_block_list_next (CloogBlockList
*bl
)
254 cloog_block_list_set_next (CloogBlockList
*bl
, CloogBlockList
*next
)
260 cloog_block_list_set_block (CloogBlockList
*bl
, CloogBlock
*block
)
265 static inline int cloog_matrix_ncolumns (CloogMatrix
* m
)
270 static inline int cloog_matrix_nrows (CloogMatrix
* m
)
274 #endif /* CLOOG_ORG */
275 #endif /* GRAPHITE_CLOOG_COMPAT_H */