Skip to content

Commit 89b5934

Browse files
committed
[PollyACC] Fix declaration/stub definition mismatch. NFC.
external.c defines stub functions that are never used because of how Polly uses PPCG. Unfortunately, they are declared as functions without return values or parameters which does not match their declarations. Since they are never called, this was usually not a problem, but an LTO build gets confused with differently declared functions, or in case of pet_options_args, a global variable declaration that is defined as a function Resolve by including the declaring headers in external.c which forces the declaration and definition to match at compile-time. This fixes llvm.org/50021
1 parent 5c40c99 commit 89b5934

File tree

1 file changed

+89
-78
lines changed

1 file changed

+89
-78
lines changed

polly/lib/External/ppcg/external.c

+89-78
Original file line numberDiff line numberDiff line change
@@ -1,181 +1,192 @@
1-
#include "assert.h"
2-
#include "stdio.h"
3-
#include "stdlib.h"
1+
#include <assert.h>
2+
#include <stdio.h>
3+
#include <stdlib.h>
4+
#include <pet.h>
5+
#include "cpu.h"
6+
#include "opencl.h"
7+
48

59
#define die() { \
610
fprintf(stderr, "Dummy function %s called\n", __FUNCTION__); \
711
abort(); \
812
}
913

10-
void pet_scop_compute_outer_to_any(){
14+
__isl_give isl_union_map *pet_scop_compute_outer_to_any(
15+
__isl_keep pet_scop *scop) {
1116
die();
1217
}
13-
void pet_scop_compute_outer_to_inner(){
18+
__isl_give isl_union_map *pet_scop_compute_outer_to_inner(
19+
__isl_keep pet_scop *scop) {
1420
die();
1521
}
16-
void pet_tree_get_type(){
22+
enum pet_tree_type pet_tree_get_type(__isl_keep pet_tree *tree) {
1723
die();
1824
}
19-
void pet_tree_foreach_access_expr(){
25+
int pet_tree_foreach_access_expr(__isl_keep pet_tree *tree,
26+
int (*fn)(__isl_keep pet_expr *expr, void *user), void *user) {
2027
die();
2128
}
22-
void pet_expr_get_ctx(){
29+
isl_ctx *pet_expr_get_ctx(__isl_keep pet_expr *expr) {
2330
die();
2431
}
25-
void pet_expr_access_is_read(){
32+
isl_bool pet_expr_access_is_read(__isl_keep pet_expr *expr) {
2633
die();
2734
}
28-
void pet_expr_access_is_write(){
35+
isl_bool pet_expr_access_is_write(__isl_keep pet_expr *expr) {
2936
die();
3037
}
31-
void pet_expr_access_get_tagged_may_read(){
38+
__isl_give isl_union_map *pet_expr_access_get_tagged_may_read(
39+
__isl_keep pet_expr *expr) {
3240
die();
3341
}
34-
void pet_expr_access_get_tagged_may_write(){
42+
__isl_give isl_union_map *pet_expr_access_get_tagged_may_write(
43+
__isl_keep pet_expr *expr) {
3544
die();
3645
}
37-
void pet_expr_access_get_must_write(){
46+
__isl_give isl_union_map *pet_expr_access_get_must_write(
47+
__isl_keep pet_expr *expr) {
3848
die();
3949
}
40-
void pet_expr_access_get_index(){
50+
__isl_give isl_multi_pw_aff *pet_expr_access_get_index(
51+
__isl_keep pet_expr *expr) {
4152
die();
4253
}
43-
void pet_expr_access_get_ref_id(){
54+
__isl_give isl_id *pet_expr_access_get_ref_id(__isl_keep pet_expr *expr) {
4455
die();
4556
}
46-
void print_cpu(){
57+
__isl_give isl_printer *print_cpu(__isl_take isl_printer *p,
58+
struct ppcg_scop *ps, struct ppcg_options *options) {
4759
die();
4860
}
4961

50-
void pet_stmt_print_body(){
51-
die();
52-
}
53-
void pet_loc_get_start(){
54-
die();
55-
}
56-
void pet_loc_get_end(){
57-
die();
58-
}
59-
void pet_scop_collect_tagged_may_reads(){
60-
die();
61-
}
62-
void pet_scop_collect_may_reads(){
62+
__isl_give isl_printer *pet_stmt_print_body(struct pet_stmt *stmt,
63+
__isl_take isl_printer *p, __isl_keep isl_id_to_ast_expr *ref2expr) {
6364
die();
6465
}
65-
void pet_scop_collect_tagged_may_writes(){
66+
unsigned pet_loc_get_start(__isl_keep pet_loc *loc) {
6667
die();
6768
}
68-
void pet_scop_collect_may_writes(){
69+
unsigned pet_loc_get_end(__isl_keep pet_loc *loc) {
6970
die();
7071
}
71-
void pet_scop_collect_tagged_must_writes(){
72+
int pet_transform_C_source(isl_ctx *ctx, const char *input, FILE *output,
73+
__isl_give isl_printer *(*transform)(__isl_take isl_printer *p,
74+
__isl_take pet_scop *scop, void *user), void *user) {
7275
die();
7376
}
74-
void pet_scop_collect_must_writes(){
77+
__isl_give isl_printer *pet_scop_print_original(__isl_keep pet_scop *scop,
78+
__isl_take isl_printer *p) {
7579
die();
7680
}
77-
void pet_scop_collect_tagged_must_kills(){
81+
__isl_null pet_scop *pet_scop_free(__isl_take pet_scop *scop) {
7882
die();
7983
}
80-
void pet_transform_C_source(){
84+
__isl_give pet_scop *pet_scop_align_params(__isl_take pet_scop *scop) {
8185
die();
8286
}
83-
void pet_scop_print_original(){
87+
int pet_scop_can_build_ast_exprs(__isl_keep pet_scop *scop) {
8488
die();
8589
}
86-
void pet_scop_free(){
90+
int pet_scop_has_data_dependent_conditions(__isl_keep pet_scop *scop) {
8791
die();
8892
}
89-
void pet_scop_align_params(){
93+
int pet_tree_foreach_expr(__isl_keep pet_tree *tree,
94+
int (*fn)(__isl_keep pet_expr *expr, void *user), void *user) {
9095
die();
9196
}
92-
void pet_scop_can_build_ast_exprs(){
97+
int pet_expr_foreach_call_expr(__isl_keep pet_expr *expr,
98+
int (*fn)(__isl_keep pet_expr *expr, void *user), void *user) {
9399
die();
94100
}
95-
void pet_scop_has_data_dependent_conditions(){
101+
int pet_stmt_is_kill(struct pet_stmt *stmt) {
96102
die();
97103
}
98-
void pet_tree_foreach_expr(){
104+
struct isl_args pet_options_args;
105+
const char *ppcg_version(void) {
99106
die();
100107
}
101-
void pet_expr_foreach_call_expr(){
108+
int pet_options_set_encapsulate_dynamic_control(isl_ctx *ctx, int val) {
102109
die();
103110
}
104-
void pet_stmt_is_kill(){
111+
int generate_opencl(isl_ctx *ctx, struct ppcg_options *options,
112+
const char *input, const char *output) {
105113
die();
106114
}
107-
void pet_options_args() {
115+
int generate_cpu(isl_ctx *ctx, struct ppcg_options *options,
116+
const char *input, const char *output) {
108117
die();
109118
}
110-
void ppcg_print_guarded() {
119+
__isl_give isl_id_to_ast_expr *pet_stmt_build_ast_exprs(struct pet_stmt *stmt,
120+
__isl_keep isl_ast_build *build,
121+
__isl_give isl_multi_pw_aff *(*fn_index)(
122+
__isl_take isl_multi_pw_aff *mpa, __isl_keep isl_id *id,
123+
void *user), void *user_index,
124+
__isl_give isl_ast_expr *(*fn_expr)(__isl_take isl_ast_expr *expr,
125+
__isl_keep isl_id *id, void *user), void *user_expr) {
111126
die();
112127
}
113-
void ppcg_version() {
128+
__isl_give isl_union_map *pet_scop_get_tagged_may_reads(
129+
__isl_keep pet_scop *scop) {
114130
die();
115131
}
116-
void pet_options_set_encapsulate_dynamic_control() {
132+
__isl_give isl_union_map *pet_scop_get_may_reads(__isl_keep pet_scop *scop) {
117133
die();
118134
}
119-
void generate_opencl() {
135+
__isl_give isl_union_map *pet_scop_get_may_writes(__isl_keep pet_scop *scop) {
120136
die();
121137
}
122-
void generate_cpu() {
138+
__isl_give isl_union_map *pet_scop_get_must_writes(__isl_keep pet_scop *scop) {
123139
die();
124140
}
125-
void pet_stmt_build_ast_exprs() {
141+
__isl_give isl_union_map *pet_scop_get_tagged_may_writes(
142+
__isl_keep pet_scop *scop) {
126143
die();
127144
}
128-
void pet_scop_get_tagged_may_reads() {
145+
__isl_give isl_union_map *pet_scop_get_tagged_must_writes(
146+
__isl_keep pet_scop *scop) {
129147
die();
130148
}
131-
void pet_scop_get_may_reads() {
132-
die();
133-
}
134-
void pet_scop_get_may_writes() {
135-
die();
136-
}
137-
void pet_scop_get_must_writes() {
138-
die();
139-
}
140-
void pet_scop_get_tagged_may_writes() {
141-
die();
142-
}
143-
void pet_scop_get_tagged_must_writes() {
144-
die();
145-
}
146-
void pet_scop_get_must_kills() {
149+
__isl_give isl_union_map *pet_scop_get_must_kills(__isl_keep pet_scop *scop) {
147150
die();
148151
}
149-
void pet_scop_get_tagged_must_kills() {
152+
__isl_give isl_union_map *pet_scop_get_tagged_must_kills(
153+
__isl_keep pet_scop *scop) {
150154
die();
151155
}
152-
void pet_expr_call_get_name() {
156+
__isl_keep const char *pet_expr_call_get_name(__isl_keep pet_expr *expr) {
153157
die();
154158
}
155-
void pet_expr_call_set_name() {
159+
__isl_give pet_expr *pet_expr_call_set_name(__isl_take pet_expr *expr,
160+
__isl_keep const char *name) {
156161
die();
157162
}
158-
void pet_expr_get_arg() {
163+
__isl_give pet_expr *pet_expr_get_arg(__isl_keep pet_expr *expr, int pos) {
159164
die();
160165
}
161-
void pet_expr_new_cast() {
166+
__isl_give pet_expr *pet_expr_new_cast(const char *type_name,
167+
__isl_take pet_expr *arg) {
162168
die();
163169
}
164-
void pet_expr_set_arg() {
170+
__isl_give pet_expr *pet_expr_set_arg(__isl_take pet_expr *expr, int pos,
171+
__isl_take pet_expr *arg) {
165172
die();
166173
}
167-
void pet_tree_copy() {
174+
__isl_give pet_tree *pet_tree_copy(__isl_keep pet_tree *tree) {
168175
die();
169176
}
170-
void pet_tree_free() {
177+
__isl_null pet_tree *pet_tree_free(__isl_take pet_tree *tree) {
171178
die();
172179
}
173-
void pet_tree_map_call_expr() {
180+
__isl_give pet_tree *pet_tree_map_call_expr(__isl_take pet_tree *tree,
181+
__isl_give pet_expr *(*fn)(__isl_take pet_expr *expr, void *user),
182+
void *user) {
174183
die();
175184
}
176-
void pet_expr_access_get_may_read() {
185+
__isl_give isl_union_map *pet_expr_access_get_may_read(
186+
__isl_keep pet_expr *expr) {
177187
die();
178188
}
179-
void pet_expr_access_get_may_write() {
189+
__isl_give isl_union_map *pet_expr_access_get_may_write(
190+
__isl_keep pet_expr *expr) {
180191
die();
181192
}

0 commit comments

Comments
 (0)