[polly] 89b5934 - [PollyACC] Fix declaration/stub definition mismatch. NFC.

Michael Kruse via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 21 09:52:56 PDT 2021


Author: Michael Kruse
Date: 2021-04-21T11:52:43-05:00
New Revision: 89b59345ee29d2cc1afa1f60445916ae2e74be6d

URL: https://github.com/llvm/llvm-project/commit/89b59345ee29d2cc1afa1f60445916ae2e74be6d
DIFF: https://github.com/llvm/llvm-project/commit/89b59345ee29d2cc1afa1f60445916ae2e74be6d.diff

LOG: [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

Added: 
    

Modified: 
    polly/lib/External/ppcg/external.c

Removed: 
    


################################################################################
diff  --git a/polly/lib/External/ppcg/external.c b/polly/lib/External/ppcg/external.c
index 3a63ffbd97e5..c5ef6320e64f 100644
--- a/polly/lib/External/ppcg/external.c
+++ b/polly/lib/External/ppcg/external.c
@@ -1,181 +1,192 @@
-#include "assert.h"
-#include "stdio.h"
-#include "stdlib.h"
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <pet.h>
+#include "cpu.h"
+#include "opencl.h"
+
 
 #define die() { \
   fprintf(stderr, "Dummy function %s called\n", __FUNCTION__); \
   abort(); \
 }
 
-void pet_scop_compute_outer_to_any(){
+__isl_give isl_union_map *pet_scop_compute_outer_to_any(
+  __isl_keep pet_scop *scop) {
   die();
 }
-void pet_scop_compute_outer_to_inner(){
+__isl_give isl_union_map *pet_scop_compute_outer_to_inner(
+  __isl_keep pet_scop *scop) {
   die();
 }
-void pet_tree_get_type(){
+enum pet_tree_type pet_tree_get_type(__isl_keep pet_tree *tree) {
   die();
 }
-void pet_tree_foreach_access_expr(){
+int pet_tree_foreach_access_expr(__isl_keep pet_tree *tree,
+  int (*fn)(__isl_keep pet_expr *expr, void *user), void *user) {
   die();
 }
-void pet_expr_get_ctx(){
+isl_ctx *pet_expr_get_ctx(__isl_keep pet_expr *expr) {
   die();
 }
-void pet_expr_access_is_read(){
+isl_bool pet_expr_access_is_read(__isl_keep pet_expr *expr) {
   die();
 }
-void pet_expr_access_is_write(){
+isl_bool pet_expr_access_is_write(__isl_keep pet_expr *expr) {
   die();
 }
-void pet_expr_access_get_tagged_may_read(){
+__isl_give isl_union_map *pet_expr_access_get_tagged_may_read(
+  __isl_keep pet_expr *expr) {
   die();
 }
-void pet_expr_access_get_tagged_may_write(){
+__isl_give isl_union_map *pet_expr_access_get_tagged_may_write(
+  __isl_keep pet_expr *expr) {
   die();
 }
-void pet_expr_access_get_must_write(){
+__isl_give isl_union_map *pet_expr_access_get_must_write(
+  __isl_keep pet_expr *expr) {
   die();
 }
-void pet_expr_access_get_index(){
+__isl_give isl_multi_pw_aff *pet_expr_access_get_index(
+  __isl_keep pet_expr *expr) {
   die();
 }
-void pet_expr_access_get_ref_id(){
+__isl_give isl_id *pet_expr_access_get_ref_id(__isl_keep pet_expr *expr) {
   die();
 }
-void print_cpu(){
+__isl_give isl_printer *print_cpu(__isl_take isl_printer *p,
+  struct ppcg_scop *ps, struct ppcg_options *options) {
   die();
 }
 
-void pet_stmt_print_body(){
-  die();
-}
-void pet_loc_get_start(){
-  die();
-}
-void pet_loc_get_end(){
-  die();
-}
-void pet_scop_collect_tagged_may_reads(){
-  die();
-}
-void pet_scop_collect_may_reads(){
+__isl_give isl_printer *pet_stmt_print_body(struct pet_stmt *stmt,
+  __isl_take isl_printer *p, __isl_keep isl_id_to_ast_expr *ref2expr) {
   die();
 }
-void pet_scop_collect_tagged_may_writes(){
+unsigned pet_loc_get_start(__isl_keep pet_loc *loc) {
   die();
 }
-void pet_scop_collect_may_writes(){
+unsigned pet_loc_get_end(__isl_keep pet_loc *loc) {
   die();
 }
-void pet_scop_collect_tagged_must_writes(){
+int pet_transform_C_source(isl_ctx *ctx, const char *input, FILE *output,
+  __isl_give isl_printer *(*transform)(__isl_take isl_printer *p,
+    __isl_take pet_scop *scop, void *user), void *user) {
   die();
 }
-void pet_scop_collect_must_writes(){
+__isl_give isl_printer *pet_scop_print_original(__isl_keep pet_scop *scop,
+  __isl_take isl_printer *p) {
   die();
 }
-void pet_scop_collect_tagged_must_kills(){
+__isl_null pet_scop *pet_scop_free(__isl_take pet_scop *scop) {
   die();
 }
-void pet_transform_C_source(){
+__isl_give pet_scop *pet_scop_align_params(__isl_take pet_scop *scop) {
   die();
 }
-void pet_scop_print_original(){
+int pet_scop_can_build_ast_exprs(__isl_keep pet_scop *scop) {
   die();
 }
-void pet_scop_free(){
+int pet_scop_has_data_dependent_conditions(__isl_keep pet_scop *scop) {
   die();
 }
-void pet_scop_align_params(){
+int pet_tree_foreach_expr(__isl_keep pet_tree *tree,
+  int (*fn)(__isl_keep pet_expr *expr, void *user), void *user) {
   die();
 }
-void pet_scop_can_build_ast_exprs(){
+int pet_expr_foreach_call_expr(__isl_keep pet_expr *expr,
+  int (*fn)(__isl_keep pet_expr *expr, void *user), void *user) {
   die();
 }
-void pet_scop_has_data_dependent_conditions(){
+int pet_stmt_is_kill(struct pet_stmt *stmt) {
   die();
 }
-void pet_tree_foreach_expr(){
+struct isl_args pet_options_args;
+const char *ppcg_version(void) {
   die();
 }
-void pet_expr_foreach_call_expr(){
+int pet_options_set_encapsulate_dynamic_control(isl_ctx *ctx, int val) {
   die();
 }
-void pet_stmt_is_kill(){
+int generate_opencl(isl_ctx *ctx, struct ppcg_options *options,
+  const char *input, const char *output) {
   die();
 }
-void pet_options_args() {
+int generate_cpu(isl_ctx *ctx, struct ppcg_options *options,
+  const char *input, const char *output) {
   die();
 }
-void ppcg_print_guarded() {
+__isl_give isl_id_to_ast_expr *pet_stmt_build_ast_exprs(struct pet_stmt *stmt,
+  __isl_keep isl_ast_build *build,
+  __isl_give isl_multi_pw_aff *(*fn_index)(
+    __isl_take isl_multi_pw_aff *mpa, __isl_keep isl_id *id,
+    void *user), void *user_index,
+  __isl_give isl_ast_expr *(*fn_expr)(__isl_take isl_ast_expr *expr,
+    __isl_keep isl_id *id, void *user), void *user_expr) {
   die();
 }
-void ppcg_version() {
+__isl_give isl_union_map *pet_scop_get_tagged_may_reads(
+  __isl_keep pet_scop *scop) {
   die();
 }
-void pet_options_set_encapsulate_dynamic_control() {
+__isl_give isl_union_map *pet_scop_get_may_reads(__isl_keep pet_scop *scop) {
   die();
 }
-void generate_opencl() {
+__isl_give isl_union_map *pet_scop_get_may_writes(__isl_keep pet_scop *scop) {
   die();
 }
-void generate_cpu() {
+__isl_give isl_union_map *pet_scop_get_must_writes(__isl_keep pet_scop *scop) {
   die();
 }
-void pet_stmt_build_ast_exprs() {
+__isl_give isl_union_map *pet_scop_get_tagged_may_writes(
+  __isl_keep pet_scop *scop) {
   die();
 }
- void pet_scop_get_tagged_may_reads() {
+__isl_give isl_union_map *pet_scop_get_tagged_must_writes(
+  __isl_keep pet_scop *scop) {
   die();
 }
- void pet_scop_get_may_reads() {
-  die();
-}
-void pet_scop_get_may_writes() {
-  die();
-}
-void pet_scop_get_must_writes() {
-  die();
-}
-void pet_scop_get_tagged_may_writes() {
-  die();
-}
-void pet_scop_get_tagged_must_writes() {
-die();
-}
-void pet_scop_get_must_kills() {
+__isl_give isl_union_map *pet_scop_get_must_kills(__isl_keep pet_scop *scop) {
   die();
 }
-void pet_scop_get_tagged_must_kills() {
+__isl_give isl_union_map *pet_scop_get_tagged_must_kills(
+  __isl_keep pet_scop *scop) {
   die();
 }
-void pet_expr_call_get_name() {
+__isl_keep const char *pet_expr_call_get_name(__isl_keep pet_expr *expr) {
   die();
 }
-void pet_expr_call_set_name() {
+__isl_give pet_expr *pet_expr_call_set_name(__isl_take pet_expr *expr,
+  __isl_keep const char *name) {
   die();
 }
-void pet_expr_get_arg() {
+__isl_give pet_expr *pet_expr_get_arg(__isl_keep pet_expr *expr, int pos) {
   die();
 }
-void pet_expr_new_cast() {
+__isl_give pet_expr *pet_expr_new_cast(const char *type_name,
+  __isl_take pet_expr *arg) {
   die();
 }
-void pet_expr_set_arg() {
+__isl_give pet_expr *pet_expr_set_arg(__isl_take pet_expr *expr, int pos,
+  __isl_take pet_expr *arg) {
   die();
 }
-void pet_tree_copy() {
+__isl_give pet_tree *pet_tree_copy(__isl_keep pet_tree *tree) {
   die();
 }
-void pet_tree_free() {
+__isl_null pet_tree *pet_tree_free(__isl_take pet_tree *tree) {
   die();
 }
-void pet_tree_map_call_expr() {
+__isl_give pet_tree *pet_tree_map_call_expr(__isl_take pet_tree *tree,
+  __isl_give pet_expr *(*fn)(__isl_take pet_expr *expr, void *user),
+  void *user) {
   die();
 }
-void pet_expr_access_get_may_read() {
+__isl_give isl_union_map *pet_expr_access_get_may_read(
+  __isl_keep pet_expr *expr) {
   die();
 }
-void pet_expr_access_get_may_write() {
+__isl_give isl_union_map *pet_expr_access_get_may_write(
+  __isl_keep pet_expr *expr) {
   die();
 }


        


More information about the llvm-commits mailing list