掌機 - Pandora(Rebirth) - SuperZaxxon - 解決error: isl_space_dim was not declared in this scope問題



參考資訊:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86724

問題如下:

../../gcc-6.3.0/gcc/graphite-dependences.c: In function 'isl_map* constrain_domain(isl_map*, isl_set*)':
../../gcc-6.3.0/gcc/graphite-dependences.c:48: error: 'isl_space_get_tuple_id' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-dependences.c:51: error: 'isl_space_free' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-dependences.c: In function 'isl_stat max_number_of_out_dimensions(isl_map*, void*)':
../../gcc-6.3.0/gcc/graphite-dependences.c:201: error: 'isl_space_dim' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-dependences.c:207: error: 'isl_space_free' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-dependences.c: In function 'isl_map* extend_map(isl_map*, int)':
../../gcc-6.3.0/gcc/graphite-dependences.c:217: error: 'isl_space_dim' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-dependences.c:219: error: 'isl_space_free' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-dependences.c: In function 'bool carries_deps(isl_union_map*, isl_union_map*, int)':
../../gcc-6.3.0/gcc/graphite-dependences.c:294: error: 'isl_space_range' was not declared in this scope
make[3]: *** [graphite-dependences.o] Error 1
make[3]: *** Waiting for unfinished jobs....
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c: In function 'void ivs_params_clear(ivs_params&)':
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c:114: error: 'isl_id_free' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c: In member function 'tree_node* translate_isl_ast_to_gimple::gcc_expression_from_isl_ast_expr_id(tree_node*, isl_ast_expr*, ivs_params&)':
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c:322: error: 'isl_id_free' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c: In member function 'loop* translate_isl_ast_to_gimple::graphite_create_new_loop(edge_def*, isl_ast_node*, loop*, tree_node*, tree_node*, tree_node*, ivs_params&)':
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c:660: error: 'isl_id_free' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c: In member function 'edge_def* translate_isl_ast_to_gimple::translate_isl_ast_for_loop(loop*, isl_ast_node*, edge_def*, tree_node*, tree_node*, tree_node*, ivs_params&)':
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c:700: error: 'isl_id_get_user' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c:703: error: 'isl_id_free' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c: In member function 'edge_def* translate_isl_ast_to_gimple::translate_isl_ast_node_user(isl_ast_node*, edge_def*, ivs_params&)':
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c:907: error: 'isl_id_get_user' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c:913: error: 'isl_id_free' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c: In function 'isl_id* ast_build_before_for(isl_ast_build*, void*)':
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c:2894: error: 'isl_space_dim' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c:2898: error: 'isl_space_free' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c:2899: error: 'isl_id_alloc' was not declared in this scope
../../gcc-6.3.0/gcc/vec.h: In static member function 'static size_t vec<T, A, vl_embed>::embedded_size(unsigned int) [with T = std::pair<gphi*, gphi*>, A = va_heap]':
../../gcc-6.3.0/gcc/vec.h:286:   instantiated from 'static void va_heap::reserve(vec<T, va_heap, vl_embed>*&, unsigned int, bool) [with T = std::pair<gphi*, gphi*>]'
../../gcc-6.3.0/gcc/vec.h:1406:   instantiated from 'bool vec<T, va_heap, vl_ptr>::reserve(unsigned int, bool) [with T = std::pair<gphi*, gphi*>]'
../../gcc-6.3.0/gcc/vec.h:1515:   instantiated from 'T* vec<T, va_heap, vl_ptr>::safe_push(const T&) [with T = std::pair<gphi*, gphi*>]'
../../gcc-6.3.0/gcc/graphite-isl-ast-to-gimple.c:1877:   instantiated from here
../../gcc-6.3.0/gcc/vec.h:1026: warning: invalid access to non-static data member 'vec<std::pair<gphi*, gphi*>, va_heap, vl_embed>::m_vecdata' of NULL object
../../gcc-6.3.0/gcc/vec.h:1026: warning: (perhaps the 'offsetof' macro was used incorrectly)
make[3]: *** [graphite-isl-ast-to-gimple.o] Error 1
../../gcc-6.3.0/gcc/graphite-optimize-isl.c: In function 'isl_schedule_node* get_schedule_for_node_st(isl_schedule_node*, void*)':
../../gcc-6.3.0/gcc/graphite-optimize-isl.c:59: error: 'isl_space_dim' was not declared in this scope
../../gcc-6.3.0/gcc/graphite-optimize-isl.c:62: error: 'isl_space_free' was not declared in this scope
make[3]: *** [graphite-optimize-isl.o] Error 1

解法如下:

$ vim ../gcc-6.3.0/gcc/graphite.h
    #ifndef GCC_GRAPHITE_POLY_H
    #define GCC_GRAPHITE_POLY_H

    #include "sese.h"
    #include <isl/id.h>
    #include <isl/space.h>
    #include <isl/options.h>
    #include <isl/ctx.h>
    #include <isl/val_gmp.h>
    #include <isl/set.h>
    #include <isl/union_set.h>
    #include <isl/map.h>
    #include <isl/union_map.h>
    #include <isl/aff.h>
    #include <isl/constraint.h>
    #include <isl/flow.h>
    #include <isl/ilp.h>
    #include <isl/schedule.h>
    #include <isl/ast_build.h>