diff --git a/Makefile b/Makefile index a0bb687d41ef38b337d6f5f973284fd9c9616860..29a2de7f90d944787ffdd3b643e8d40bad9c71ab 100644 --- a/Makefile +++ b/Makefile @@ -53,11 +53,17 @@ plugin: test: mkdir -p $(TESTD) mkdir -p $(DOTD) + echo "\n" $(MAKE) $(TESTD)/test + echo "\n" $(MAKE) $(TESTD)/test2 + echo "\n" $(MAKE) $(TESTD)/test3 + echo "\n" $(MAKE) $(TESTD)/test4 - $(MAKE) $(TESTD)/test_pragma1 + echo "\n" + #$(MAKE) $(TESTD)/test_pragma1 + echo "\n" $(MAKE) $(TESTD)/test_pragma2 .PHONY: dots diff --git a/include/mpi_collective.hpp b/include/mpi_collective.hpp index 3fb159dfc207fb0331a2a2cc2c3a68da44541e0c..b5b471231e84bed5dfd58a3c109e6c895e725d58 100644 --- a/include/mpi_collective.hpp +++ b/include/mpi_collective.hpp @@ -1,10 +1,16 @@ #ifndef __MPI_COLLECTIVE_HPP_ #define __MPI_COLLECTIVE_HPP_ + + // dependance of tree-pass.H #include <gcc-plugin.h> // declare opt_pass #include <tree-pass.h> +//cpp_ttype +#include <c-family/c-pragma.h> +//vectors +#include <vec.h> /* Enum to represent the collective operations */ #define DEFMPICOLLECTIVES(CODE, NAME) CODE, @@ -126,9 +132,9 @@ public: void get_mpi_coll_rank( function *fun, int rank, int mpi_code, bitmap mpi_coll); //get gimple expr for warning format and location - gimple* get_first_stmt(basic_block bb); - gimple* get_mpi_stmt(basic_block bb); - gimple* get_first_non_mpi_stmt(basic_block bb); + gimple *get_first_stmt(basic_block bb); + gimple *get_mpi_stmt(basic_block bb); + gimple *get_first_non_mpi_stmt(basic_block bb); // raise warnings when mpi collective are badly uses void raise_warning_mpi_rank(function *fun); void raise_warning_mpi_order(function *fun); @@ -150,5 +156,6 @@ public: void register_mpicoll_check_pragma(void *event_data, void *data); void mpicoll_check_pragma(cpp_reader *); void verify_mpicoll_list(void *event_data, void *data); +extern vec<tree> fun_vec; //function vector in pragma. #endif diff --git a/log b/log new file mode 100644 index 0000000000000000000000000000000000000000..35fc2e8fc3a37bbb66383bd74586901ca9ba6681 --- /dev/null +++ b/log @@ -0,0 +1,1397 @@ +In file included from ./include/mpi_collective.hpp:5, + from src/mpi_collective_graph_utils.cpp:3: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:31:8: error: ‘size_t’ does not name a type + 31 | extern size_t ggc_round_alloc_size (size_t requested_size); + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1:1: note: ‘size_t’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? + +++ |+#include <cstddef> + 1 | /* Vector API for GNU compiler. +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:32:35: error: ‘size_t’ has not been declared + 32 | extern void *ggc_realloc (void *, size_t MEM_STAT_DECL); + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:186:8: error: ‘htab_t’ does not name a type + 186 | extern htab_t vec_mem_usage_hash; + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:197:35: error: ‘size_t’ has not been declared + 197 | void register_overhead (void *, size_t, size_t CXX_MEM_STAT_INFO); + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:197:43: error: ‘size_t’ has not been declared + 197 | void register_overhead (void *, size_t, size_t CXX_MEM_STAT_INFO); + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:198:34: error: ‘size_t’ has not been declared + 198 | void release_overhead (void *, size_t, size_t, bool CXX_MEM_STAT_INFO); + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:198:42: error: ‘size_t’ has not been declared + 198 | void release_overhead (void *, size_t, size_t, bool CXX_MEM_STAT_INFO); + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In static member function ‘static unsigned int vec_prefix::calculate_allocation(vec_prefix*, unsigned int, bool)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:231:12: error: ‘MAX’ was not declared in this scope + 231 | return MAX (4, reserve); + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:231:12: note: the macro ‘MAX’ had not yet been defined +In file included from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/gcc-plugin.h:28, + from ./include/mpi_collective.hpp:8: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/system.h:396: note: it was later defined here + 396 | #define MAX(X,Y) ((X) > (Y) ? (X) : (Y)) + | +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:277:19: error: expected ‘,’ or ‘...’ before ‘MEM_STAT_DECL’ + 277 | MEM_STAT_DECL) + | ^~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In static member function ‘static void va_heap::reserve(vec<T, va_heap, vl_embed>*&, unsigned int, bool)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:279:3: error: ‘size_t’ was not declared in this scope; did you mean ‘std::size_t’? + 279 | size_t elt_size = sizeof (T); + | ^~~~~~ + | std::size_t +In file included from /usr/include/c++/12/bits/stl_algobase.h:59, + from /usr/include/c++/12/list:60, + from src/mpi_collective_graph_utils.cpp:1: +/usr/include/x86_64-linux-gnu/c++/12/bits/c++config.h:298:33: note: ‘std::size_t’ declared here + 298 | typedef __SIZE_TYPE__ size_t; + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:282:3: error: there are no arguments to ‘gcc_checking_assert’ that depend on a template parameter, so a declaration of ‘gcc_checking_assert’ must be available [-fpermissive] + 282 | gcc_checking_assert (alloc); + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:282:3: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:284:7: error: ‘GATHER_STATISTICS’ was not declared in this scope + 284 | if (GATHER_STATISTICS && v) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:284:7: note: the macro ‘GATHER_STATISTICS’ had not yet been defined +In file included from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/config.h:6, + from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/gcc-plugin.h:27: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/auto-host.h:312: note: it was later defined here + 312 | #define GATHER_STATISTICS 0 + | +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:285:38: error: ‘elt_size’ was not declared in this scope + 285 | v->m_vecpfx.release_overhead (v, elt_size * v->allocated (), + | ^~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:288:9: error: expected ‘;’ before ‘size’ + 288 | size_t size = vec<T, va_heap, vl_embed>::embedded_size (alloc); + | ^~~~~ + | ; +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:290:63: error: ‘size’ was not declared in this scope; did you mean ‘std::size’? + 290 | v = static_cast <vec<T, va_heap, vl_embed> *> (xrealloc (v, size)); + | ^~~~ + | std::size +In file included from /usr/include/c++/12/list:62: +/usr/include/c++/12/bits/range_access.h:274:5: note: ‘std::size’ declared here + 274 | size(const _Tp (&)[_Nm]) noexcept + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:293:7: error: ‘GATHER_STATISTICS’ was not declared in this scope + 293 | if (GATHER_STATISTICS) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:293:7: note: the macro ‘GATHER_STATISTICS’ had not yet been defined +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/auto-host.h:312: note: it was later defined here + 312 | #define GATHER_STATISTICS 0 + | +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:294:46: error: ‘elt_size’ was not declared in this scope + 294 | v->m_vecpfx.register_overhead (v, alloc, elt_size PASS_MEM_STAT); + | ^~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In static member function ‘static void va_heap::release(vec<T, va_heap, vl_embed>*&)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:309:3: error: ‘size_t’ was not declared in this scope; did you mean ‘std::size_t’? + 309 | size_t elt_size = sizeof (T); + | ^~~~~~ + | std::size_t +/usr/include/x86_64-linux-gnu/c++/12/bits/c++config.h:298:33: note: ‘std::size_t’ declared here + 298 | typedef __SIZE_TYPE__ size_t; + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:310:12: error: ‘NULL’ was not declared in this scope + 310 | if (v == NULL) + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:310:12: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:313:7: error: ‘GATHER_STATISTICS’ was not declared in this scope + 313 | if (GATHER_STATISTICS) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:313:7: note: the macro ‘GATHER_STATISTICS’ had not yet been defined +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/auto-host.h:312: note: it was later defined here + 312 | #define GATHER_STATISTICS 0 + | +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:314:38: error: ‘elt_size’ was not declared in this scope + 314 | v->m_vecpfx.release_overhead (v, elt_size * v->allocated (), + | ^~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:316:5: error: ‘::free’ has not been declared + 316 | ::free (v); + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1:1: note: ‘free’ is defined in header ‘<cstdlib>’; did you forget to ‘#include <cstdlib>’? + +++ |+#include <cstdlib> + 1 | /* Vector API for GNU compiler. +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:317:7: error: ‘NULL’ was not declared in this scope + 317 | v = NULL; + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:317:7: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In static member function ‘static void va_gc::release(vec<T, A, vl_embed>*&)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:352:7: error: ‘NULL’ was not declared in this scope + 352 | v = NULL; + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:352:7: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:364:17: error: expected ‘,’ or ‘...’ before ‘MEM_STAT_DECL’ + 364 | MEM_STAT_DECL) + | ^~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In static member function ‘static void va_gc::reserve(vec<T, A, vl_embed>*&, unsigned int, bool)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:371:11: error: ‘NULL’ was not declared in this scope + 371 | v = NULL; + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:371:11: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:376:3: error: ‘size_t’ was not declared in this scope; did you mean ‘std::size_t’? + 376 | size_t size = vec<T, A, vl_embed>::embedded_size (alloc); + | ^~~~~~ + | std::size_t +/usr/include/x86_64-linux-gnu/c++/12/bits/c++config.h:298:33: note: ‘std::size_t’ declared here + 298 | typedef __SIZE_TYPE__ size_t; + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:379:3: error: ‘size’ was not declared in this scope; did you mean ‘std::size’? + 379 | size = ::ggc_round_alloc_size (size); + | ^~~~ + | std::size +/usr/include/c++/12/bits/range_access.h:274:5: note: ‘std::size’ declared here + 274 | size(const _Tp (&)[_Nm]) noexcept + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:379:12: error: ‘::ggc_round_alloc_size’ has not been declared + 379 | size = ::ggc_round_alloc_size (size); + | ^~~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:382:9: error: expected ‘;’ before ‘vec_offset’ + 382 | size_t vec_offset = sizeof (vec_prefix); + | ^~~~~~~~~~~ + | ; +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:383:9: error: expected ‘;’ before ‘elt_size’ + 383 | size_t elt_size = sizeof (T); + | ^~~~~~~~~ + | ; +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:384:19: error: ‘vec_offset’ was not declared in this scope + 384 | alloc = (size - vec_offset) / elt_size; + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:384:33: error: ‘elt_size’ was not declared in this scope + 384 | alloc = (size - vec_offset) / elt_size; + | ^~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:390:66: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 390 | v = static_cast <vec<T, A, vl_embed> *> (::ggc_realloc (v, size + | ~ ^ + | ) + 391 | PASS_MEM_STAT)); + | ~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:418:20: error: expected initializer before ‘vec’ + 418 | struct GTY((user)) vec + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:445:20: error: wrong number of template arguments (1, should be 3) + 445 | debug_helper (vec<T> &ref) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void debug_helper(int&)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:448:23: error: request for member ‘length’ in ‘ref’, which is of non-class type ‘int’ + 448 | for (i = 0; i < ref.length (); ++i) + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:450:16: error: ‘stderr’ was not declared in this scope + 450 | fprintf (stderr, "[%d] = ", i); + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1:1: note: ‘stderr’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’? + +++ |+#include <cstdio> + 1 | /* Vector API for GNU compiler. +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:450:7: error: there are no arguments to ‘fprintf’ that depend on a template parameter, so a declaration of ‘fprintf’ must be available [-fpermissive] + 450 | fprintf (stderr, "[%d] = ", i); + | ^~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:451:22: error: invalid types ‘int[unsigned int]’ for array subscript + 451 | debug_slim (ref[i]); + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:451:7: error: there are no arguments to ‘debug_slim’ that depend on a template parameter, so a declaration of ‘debug_slim’ must be available [-fpermissive] + 451 | debug_slim (ref[i]); + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:452:7: error: there are no arguments to ‘fputc’ that depend on a template parameter, so a declaration of ‘fputc’ must be available [-fpermissive] + 452 | fputc ('\n', stderr); + | ^~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:463:27: error: wrong number of template arguments (2, should be 3) + 463 | debug_helper (vec<T, va_gc> &ref) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:463:1: error: redefinition of ‘template<class T> void debug_helper(int&)’ + 463 | debug_helper (vec<T, va_gc> &ref) + | ^~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:445:1: note: ‘template<class T> void debug_helper(int&)’ previously declared here + 445 | debug_helper (vec<T> &ref) + | ^~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:583:20: error: expected initializer before ‘vec’ + 583 | struct GTY((user)) vec<T, A, vl_embed> + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘T* vec_safe_address(vec<T, A, vl_embed>*)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:676:30: error: ‘NULL’ was not declared in this scope + 676 | return v ? v->address () : NULL; + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:676:30: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:693:19: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 693 | CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘bool vec_safe_reserve(vec<T, A, vl_embed>*&, unsigned int, bool)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:697:33: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 697 | A::reserve (v, nelems, exact PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:704:25: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 704 | CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘bool vec_safe_reserve_exact(vec<T, A, vl_embed>*&, unsigned int)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:706:43: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 706 | return vec_safe_reserve (v, nelems, true PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:715:53: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 715 | vec_alloc (vec<T, A, vl_embed> *&v, unsigned nelems CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void vec_alloc(vec<T, A, vl_embed>*&, unsigned int)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:717:7: error: ‘NULL’ was not declared in this scope + 717 | v = NULL; + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:717:7: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:718:37: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 718 | vec_safe_reserve (v, nelems, false PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:736:35: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 736 | bool exact = false CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void vec_safe_grow(vec<T, A, vl_embed>*&, unsigned int, bool)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:739:3: error: there are no arguments to ‘gcc_checking_assert’ that depend on a template parameter, so a declaration of ‘gcc_checking_assert’ must be available [-fpermissive] + 739 | gcc_checking_assert (len >= oldlen); + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:740:43: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 740 | vec_safe_reserve (v, len - oldlen, exact PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:749:43: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 749 | bool exact = false CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void vec_safe_grow_cleared(vec<T, A, vl_embed>*&, unsigned int, bool)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:752:31: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 752 | vec_safe_grow (v, len, exact PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:762:57: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 762 | unsigned len, bool exact = false CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void vec_safe_grow_cleared(vec<T, va_heap, vl_ptr>*&, unsigned int, bool)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:764:35: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 764 | v->safe_grow_cleared (len, exact PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:773:19: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 773 | CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:811:54: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 811 | vec_safe_push (vec<T, A, vl_embed> *&v, const T &obj CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘T* vec_safe_push(vec<T, A, vl_embed>*&, const T&)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:813:32: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 813 | vec_safe_reserve (v, 1, false PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:823:18: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 823 | CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void vec_safe_insert(vec<T, A, vl_embed>*&, unsigned int, const T&)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:825:32: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 825 | vec_safe_reserve (v, 1, false PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:843:41: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 843 | vec_safe_copy (vec<T, A, vl_embed> *src CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘vec<T, A, vl_embed>* vec_safe_copy(vec<T, A, vl_embed>*)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:845:27: error: ‘ALONE_PASS_MEM_STAT’ was not declared in this scope + 845 | return src ? src->copy (ALONE_PASS_MEM_STAT) : NULL; + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:845:27: note: the macro ‘ALONE_PASS_MEM_STAT’ had not yet been defined +In file included from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/hash-table.h:246, + from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/coretypes.h:486, + from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/gcc-plugin.h:29: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/statistics.h:49: note: it was later defined here + 49 | #define ALONE_PASS_MEM_STAT + | +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:845:50: error: ‘NULL’ was not declared in this scope + 845 | return src ? src->copy (ALONE_PASS_MEM_STAT) : NULL; + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:845:50: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:853:18: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 853 | CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void vec_safe_splice(vec<T, A, vl_embed>*&, const vec<T, A, vl_embed>*)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:858:67: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 858 | vec_safe_reserve_exact (dst, vec_safe_length (dst) + src_len + | ~ ^ + | ) + 859 | PASS_MEM_STAT); + | ~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:879:47: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 879 | vec<T, A, vl_embed>::operator[] (unsigned ix) const + | ^~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:887:45: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 887 | vec<T, A, vl_embed>::operator[] (unsigned ix) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:898:32: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 898 | vec<T, A, vl_embed>::last (void) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:913:46: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 913 | vec<T, A, vl_embed>::space (unsigned nelems) const + | ^~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:928:52: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 928 | vec<T, A, vl_embed>::iterate (unsigned ix, T *ptr) const + | ^~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:954:53: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 954 | vec<T, A, vl_embed>::iterate (unsigned ix, T **ptr) const + | ^~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:973:47: error: template definition of non-template ‘vec<T, A, vl_embed>* vec<T, A, vl_embed>::copy’ + 973 | vec<T, A, vl_embed>::copy (ALONE_MEM_STAT_DECL) const + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:973:28: error: ‘ALONE_MEM_STAT_DECL’ was not declared in this scope + 973 | vec<T, A, vl_embed>::copy (ALONE_MEM_STAT_DECL) const + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:973:28: note: the macro ‘ALONE_MEM_STAT_DECL’ had not yet been defined +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/statistics.h:47: note: it was later defined here + 47 | #define ALONE_MEM_STAT_DECL void + | +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:992:60: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 992 | vec<T, A, vl_embed>::splice (const vec<T, A, vl_embed> &src) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1005:60: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1005 | vec<T, A, vl_embed>::splice (const vec<T, A, vl_embed> *src) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1018:46: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1018 | vec<T, A, vl_embed>::quick_push (const T &obj) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1031:31: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1031 | vec<T, A, vl_embed>::pop (void) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1043:45: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1043 | vec<T, A, vl_embed>::truncate (unsigned size) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1055:61: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1055 | vec<T, A, vl_embed>::quick_insert (unsigned ix, const T &obj) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1071:49: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1071 | vec<T, A, vl_embed>::ordered_remove (unsigned ix) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1118:51: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1118 | vec<T, A, vl_embed>::unordered_remove (unsigned ix) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1130:61: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1130 | vec<T, A, vl_embed>::block_remove (unsigned ix, unsigned len) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1144:68: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1144 | vec<T, A, vl_embed>::qsort (int (*cmp) (const void *, const void *)) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1156:38: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1156 | void *data) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1168:65: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1168 | void *), void *data) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1180:73: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1180 | int (*compar) (const void *, const void *)) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1215:65: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1215 | void *), void *data) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1248:49: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1248 | vec<T, A, vl_embed>::contains (const T &search) const + | ^~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1266:3: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1266 | const + | ^~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1303:8: error: ‘size_t’ does not name a type + 1303 | inline size_t + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1303:8: note: ‘size_t’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1321:79: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1321 | vec<T, A, vl_embed>::embedded_init (unsigned alloc, unsigned num, unsigned aut) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1334:46: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1334 | vec<T, A, vl_embed>::quick_grow (unsigned len) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1346:54: error: invalid use of incomplete type ‘struct vec<T, A, vl_embed>’ + 1346 | vec<T, A, vl_embed>::quick_grow_cleared (unsigned len) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<T, A, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1359:24: error: wrong number of template arguments (2, should be 3) + 1359 | gt_ggc_mx (vec<T, va_gc> *v) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void gt_ggc_mx(int*)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1362:31: error: request for member ‘length’ in ‘v->’, which is of non-class type ‘int’ + 1362 | for (unsigned i = 0; i < v->length (); i++) + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1363:20: error: invalid types ‘int[unsigned int]’ for array subscript + 1363 | gt_ggc_mx ((*v)[i]); + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1368:46: error: expected ‘,’ or ‘...’ before ‘ATTRIBUTE_UNUSED’ + 1368 | gt_ggc_mx (vec<T, va_gc_atomic, vl_embed> *v ATTRIBUTE_UNUSED) + | ^~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1388:38: error: ‘gt_pointer_operator’ has not been declared + 1388 | gt_pch_nx (vec<T *, A, vl_embed> *v, gt_pointer_operator op, void *cookie) + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void gt_pch_nx(vec<T*, A, vl_embed>*, int, void*)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1391:21: error: ‘NULL’ was not declared in this scope + 1391 | op (&((*v)[i]), NULL, cookie); + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1391:21: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1396:36: error: ‘gt_pointer_operator’ has not been declared + 1396 | gt_pch_nx (vec<T, A, vl_embed> *v, gt_pointer_operator op, void *cookie) + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void gt_pch_nx(vec<T, A, vl_embed>*, int, void*)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1398:31: error: ‘gt_pointer_operator’ has not been declared + 1398 | extern void gt_pch_nx (T *, gt_pointer_operator, void *); + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1432:22: error: ‘size_t’ has not been declared + 1432 | template<typename T, size_t N = 0> + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1454:13: error: ‘size_t’ has not been declared + 1454 | template <size_t N> + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1455:20: error: ‘N’ was not declared in this scope + 1455 | vec (auto_vec<T, N> &) = delete; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1455:21: error: template argument 2 is invalid + 1455 | vec (auto_vec<T, N> &) = delete; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1457:13: error: ‘size_t’ has not been declared + 1457 | template <size_t N> + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1458:31: error: ‘N’ was not declared in this scope + 1458 | void operator= (auto_vec<T, N> &) = delete; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1458:32: error: template argument 2 is invalid + 1458 | void operator= (auto_vec<T, N> &) = delete; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1462:32: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 1462 | void create (unsigned nelems CXX_MEM_STAT_INFO); + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1505:13: error: ‘ALONE_CXX_MEM_STAT_INFO’ has not been declared + 1505 | vec copy (ALONE_CXX_MEM_STAT_INFO) const; + | ^~~~~~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1506:40: error: expected ‘,’ before ‘CXX_MEM_STAT_INFO’ + 1506 | bool reserve (unsigned, bool = false CXX_MEM_STAT_INFO); + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1514:42: error: expected ‘,’ before ‘CXX_MEM_STAT_INFO’ + 1514 | void safe_grow (unsigned, bool = false CXX_MEM_STAT_INFO); + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1515:50: error: expected ‘,’ before ‘CXX_MEM_STAT_INFO’ + 1515 | void safe_grow_cleared (unsigned, bool = false CXX_MEM_STAT_INFO); + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘bool vec<T, va_heap, vl_ptr>::exists() const’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1467:21: error: ‘NULL’ was not declared in this scope + 1467 | { return m_vec != NULL; } + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1467:21: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘T* vec<T, va_heap, vl_ptr>::address()’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1476:39: error: ‘NULL’ was not declared in this scope + 1476 | { return m_vec ? m_vec->m_vecdata : NULL; } + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1476:39: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘const T* vec<T, va_heap, vl_ptr>::address() const’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1479:39: error: ‘NULL’ was not declared in this scope + 1479 | { return m_vec ? m_vec->m_vecdata : NULL; } + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1479:39: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1547:22: error: ‘size_t’ has not been declared + 1547 | template<typename T, size_t N /* = 0 */> + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1548:39: error: wrong number of template arguments (2, should be 3) + 1548 | class auto_vec : public vec<T, va_heap> + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1590:45: error: wrong number of template arguments (2, should be 3) + 1590 | class auto_vec<T, 0> : public vec<T, va_heap> + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1657:17: error: wrong number of template arguments (1, should be 3) + 1657 | vec_alloc (vec<T> *&v, unsigned nelems CXX_MEM_STAT_INFO) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1657:40: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 1657 | vec_alloc (vec<T> *&v, unsigned nelems CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void vec_alloc(int*&, unsigned int)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1659:16: error: wrong number of template arguments (1, should be 3) + 1659 | v = new vec<T>; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1660:6: error: request for member ‘create’ in ‘v->’, which is of non-class type ‘int’ + 1660 | v->create (nelems PASS_MEM_STAT); + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1660:20: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 1660 | v->create (nelems PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1667:48: error: template argument 2 is invalid + 1667 | class auto_string_vec : public auto_vec <char *> + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1686:45: error: template argument 2 is invalid + 1686 | class auto_delete_vec : public auto_vec <T *> + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1690:26: error: expected ‘)’ before ‘s’ + 1690 | auto_delete_vec (size_t s) : auto_vec <T *> (s) {} + | ~ ^~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1695:3: error: ISO C++ forbids declaration of ‘DISABLE_COPY_AND_ASSIGN’ with no type [-fpermissive] + 1695 | DISABLE_COPY_AND_ASSIGN(auto_delete_vec); + | ^~~~~~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1702:32: error: wrong number of template arguments (2, should be 3) + 1702 | vec_check_alloc (vec<T, va_heap> *&vec, unsigned nelems CXX_MEM_STAT_INFO) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1702:57: error: expected ‘,’ or ‘...’ before ‘CXX_MEM_STAT_INFO’ + 1702 | vec_check_alloc (vec<T, va_heap> *&vec, unsigned nelems CXX_MEM_STAT_INFO) + | ^~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void vec_check_alloc(int*&, unsigned int)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1705:27: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 1705 | vec_alloc (vec, nelems PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1705:15: error: no matching function for call to ‘vec_alloc(int*&, unsigned int&)’ + 1705 | vec_alloc (vec, nelems PASS_MEM_STAT); + | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:715:1: note: candidate: ‘template<class T, class A> void vec_alloc(vec<T, A, vl_embed>*&, unsigned int)’ + 715 | vec_alloc (vec<T, A, vl_embed> *&v, unsigned nelems CXX_MEM_STAT_INFO) + | ^~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:715:1: note: template argument deduction/substitution failed: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1705:15: note: mismatched types ‘vec<T, A, vl_embed>’ and ‘int’ + 1705 | vec_alloc (vec, nelems PASS_MEM_STAT); + | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1657:1: note: candidate: ‘template<class T> void vec_alloc(int*&, unsigned int)’ + 1657 | vec_alloc (vec<T> *&v, unsigned nelems CXX_MEM_STAT_INFO) + | ^~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1657:1: note: template argument deduction/substitution failed: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1705:15: note: couldn’t deduce template parameter ‘T’ + 1705 | vec_alloc (vec, nelems PASS_MEM_STAT); + | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1713:16: error: wrong number of template arguments (1, should be 3) + 1713 | vec_free (vec<T> *&v) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void vec_free(int*&)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1715:12: error: ‘NULL’ was not declared in this scope + 1715 | if (v == NULL) + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1715:12: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1718:6: error: request for member ‘release’ in ‘v->’, which is of non-class type ‘int’ + 1718 | v->release (); + | ^~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1720:7: error: ‘NULL’ was not declared in this scope + 1720 | v = NULL; + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1720:7: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In destructor ‘auto_string_vec::~auto_string_vec()’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1770:19: error: ‘class auto_string_vec’ has no member named ‘iterate’ + 1770 | for (I = 0; (V).iterate ((I), &(P)); ++(I)) + | ^~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1798:3: note: in expansion of macro ‘FOR_EACH_VEC_ELT’ + 1798 | FOR_EACH_VEC_ELT (*this, i, str) + | ^~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1799:5: error: ‘free’ was not declared in this scope + 1799 | free (str); + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1799:5: note: ‘free’ is defined in header ‘<cstdlib>’; did you forget to ‘#include <cstdlib>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1820:1: error: ‘vec<T, va_heap, vl_ptr> vec<T, va_heap, vl_ptr>::copy’ is not a static data member of ‘struct vec<T, va_heap, vl_ptr>’ + 1820 | vec<T, va_heap, vl_ptr>::copy (ALONE_MEM_STAT_DECL) const + | ^~~~~~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1820:51: error: template definition of non-template ‘vec<T, va_heap, vl_ptr> vec<T, va_heap, vl_ptr>::copy’ + 1820 | vec<T, va_heap, vl_ptr>::copy (ALONE_MEM_STAT_DECL) const + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1820:32: error: ‘ALONE_MEM_STAT_DECL’ was not declared in this scope + 1820 | vec<T, va_heap, vl_ptr>::copy (ALONE_MEM_STAT_DECL) const + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1820:32: note: the macro ‘ALONE_MEM_STAT_DECL’ had not yet been defined +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/statistics.h:47: note: it was later defined here + 47 | #define ALONE_MEM_STAT_DECL void + | +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1840:63: error: expected ‘,’ or ‘...’ before ‘MEM_STAT_DECL’ + 1840 | vec<T, va_heap, vl_ptr>::reserve (unsigned nelems, bool exact MEM_STAT_DECL) + | ^~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘bool vec<T, va_heap, vl_ptr>::reserve(unsigned int, bool)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1853:15: error: ‘NULL’ was not declared in this scope + 1853 | m_vec = NULL; + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1853:15: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1858:41: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 1858 | va_heap::reserve (m_vec, nelems, exact PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1876:57: error: expected ‘,’ or ‘...’ before ‘MEM_STAT_DECL’ + 1876 | vec<T, va_heap, vl_ptr>::reserve_exact (unsigned nelems MEM_STAT_DECL) + | ^~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘bool vec<T, va_heap, vl_ptr>::reserve_exact(unsigned int)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1878:31: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 1878 | return reserve (nelems, true PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1889:50: error: expected ‘,’ or ‘...’ before ‘MEM_STAT_DECL’ + 1889 | vec<T, va_heap, vl_ptr>::create (unsigned nelems MEM_STAT_DECL) + | ^~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘void vec<T, va_heap, vl_ptr>::create(unsigned int)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1891:11: error: ‘NULL’ was not declared in this scope + 1891 | m_vec = NULL; + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1891:11: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1893:26: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 1893 | reserve_exact (nelems PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1937:39: error: expected ‘,’ or ‘...’ before ‘MEM_STAT_DECL’ + 1937 | MEM_STAT_DECL) + | ^~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1965:50: error: expected ‘,’ or ‘...’ before ‘MEM_STAT_DECL’ + 1965 | vec<T, va_heap, vl_ptr>::safe_push (const T &obj MEM_STAT_DECL) + | ^~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘T* vec<T, va_heap, vl_ptr>::safe_push(const T&)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1967:20: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 1967 | reserve (1, false PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘void vec<T, va_heap, vl_ptr>::truncate(unsigned int)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1992:5: error: there are no arguments to ‘gcc_checking_assert’ that depend on a template parameter, so a declaration of ‘gcc_checking_assert’ must be available [-fpermissive] + 1992 | gcc_checking_assert (size == 0); + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2002:62: error: expected ‘,’ or ‘...’ before ‘MEM_STAT_DECL’ + 2002 | vec<T, va_heap, vl_ptr>::safe_grow (unsigned len, bool exact MEM_STAT_DECL) + | ^~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘void vec<T, va_heap, vl_ptr>::safe_grow(unsigned int, bool)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2005:3: error: there are no arguments to ‘gcc_checking_assert’ that depend on a template parameter, so a declaration of ‘gcc_checking_assert’ must be available [-fpermissive] + 2005 | gcc_checking_assert (oldlen <= len); + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2006:31: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 2006 | reserve (len - oldlen, exact PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2010:5: error: there are no arguments to ‘gcc_checking_assert’ that depend on a template parameter, so a declaration of ‘gcc_checking_assert’ must be available [-fpermissive] + 2010 | gcc_checking_assert (len == 0); + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2021:45: error: expected ‘,’ or ‘...’ before ‘MEM_STAT_DECL’ + 2021 | MEM_STAT_DECL) + | ^~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘void vec<T, va_heap, vl_ptr>::safe_grow_cleared(unsigned int, bool)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2024:3: error: ‘size_t’ was not declared in this scope; did you mean ‘std::size_t’? + 2024 | size_t growby = len - oldlen; + | ^~~~~~ + | std::size_t +/usr/include/x86_64-linux-gnu/c++/12/bits/c++config.h:298:33: note: ‘std::size_t’ declared here + 298 | typedef __SIZE_TYPE__ size_t; + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2025:24: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 2025 | safe_grow (len, exact PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2026:7: error: ‘growby’ was not declared in this scope + 2026 | if (growby != 0) + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2072:65: error: expected ‘,’ or ‘...’ before ‘MEM_STAT_DECL’ + 2072 | vec<T, va_heap, vl_ptr>::safe_insert (unsigned ix, const T &obj MEM_STAT_DECL) + | ^~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘void vec<T, va_heap, vl_ptr>::safe_insert(unsigned int, const T&)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2074:20: error: expected ‘)’ before ‘PASS_MEM_STAT’ + 2074 | reserve (1, false PASS_MEM_STAT); + | ~ ^~~~~~~~~~~~~~ + | ) +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘T* vec<T, va_heap, vl_ptr>::bsearch(const void*, int (*)(const void*, const void*))’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2158:10: error: ‘NULL’ was not declared in this scope + 2158 | return NULL; + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2158:10: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘T* vec<T, va_heap, vl_ptr>::bsearch(const void*, int (*)(const void*, const void*, void*), void*)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2172:10: error: ‘NULL’ was not declared in this scope + 2172 | return NULL; + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2172:10: note: ‘NULL’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2224:27: error: wrong number of template arguments (1, should be 3) + 2224 | release_vec_vec (vec<vec<T> > &vec) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2224:29: error: wrong number of template arguments (1, should be 3) + 2224 | release_vec_vec (vec<vec<T> > &vec) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In function ‘void release_vec_vec(int&)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2226:32: error: request for member ‘length’ in ‘vec’, which is of non-class type ‘int’ + 2226 | for (unsigned i = 0; i < vec.length (); i++) + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2227:8: error: invalid types ‘int[unsigned int]’ for array subscript + 2227 | vec[i].release (); + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2229:7: error: request for member ‘release’ in ‘vec’, which is of non-class type ‘int’ + 2229 | vec.release (); + | ^~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2260:12: error: ‘size_t’ has not been declared + 2260 | template<size_t N> + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2261:27: error: ‘N’ was not declared in this scope + 2261 | array_slice (T (&array)[N]) : m_base (array), m_size (N) {} + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2264:32: error: wrong number of template arguments (1, should be 3) + 2264 | array_slice (const vec<OtherT> &v) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2281:3: error: ‘size_t’ does not name a type + 2281 | size_t size () const { return m_size; } + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2281:3: note: ‘size_t’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2282:3: error: ‘size_t’ does not name a type + 2282 | size_t size_bytes () const { return m_size * sizeof (T); } + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2282:3: note: ‘size_t’ is defined in header ‘<cstddef>’; did you forget to ‘#include <cstddef>’? +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In constructor ‘array_slice<T>::array_slice(...)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2261:41: error: ‘array’ was not declared in this scope + 2261 | array_slice (T (&array)[N]) : m_base (array), m_size (N) {} + | ^~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2261:57: error: ‘N’ was not declared in this scope + 2261 | array_slice (T (&array)[N]) : m_base (array), m_size (N) {} + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In constructor ‘array_slice<T>::array_slice(const int&)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2265:17: error: request for member ‘address’ in ‘v’, which is of non-class type ‘const int’ + 2265 | : m_base (v.address ()), m_size (v.length ()) {} + | ^~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2265:40: error: request for member ‘length’ in ‘v’, which is of non-class type ‘const int’ + 2265 | : m_base (v.address ()), m_size (v.length ()) {} + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘array_slice<T>::value_type& array_slice<T>::front()’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2301:3: error: there are no arguments to ‘gcc_checking_assert’ that depend on a template parameter, so a declaration of ‘gcc_checking_assert’ must be available [-fpermissive] + 2301 | gcc_checking_assert (m_size); + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘const array_slice<T>::value_type& array_slice<T>::front() const’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2309:3: error: there are no arguments to ‘gcc_checking_assert’ that depend on a template parameter, so a declaration of ‘gcc_checking_assert’ must be available [-fpermissive] + 2309 | gcc_checking_assert (m_size); + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘array_slice<T>::value_type& array_slice<T>::back()’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2317:3: error: there are no arguments to ‘gcc_checking_assert’ that depend on a template parameter, so a declaration of ‘gcc_checking_assert’ must be available [-fpermissive] + 2317 | gcc_checking_assert (m_size); + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘const array_slice<T>::value_type& array_slice<T>::back() const’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2325:3: error: there are no arguments to ‘gcc_checking_assert’ that depend on a template parameter, so a declaration of ‘gcc_checking_assert’ must be available [-fpermissive] + 2325 | gcc_checking_assert (m_size); + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘array_slice<T>::value_type& array_slice<T>::operator[](unsigned int)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2333:3: error: there are no arguments to ‘gcc_checking_assert’ that depend on a template parameter, so a declaration of ‘gcc_checking_assert’ must be available [-fpermissive] + 2333 | gcc_checking_assert (i < m_size); + | ^~~~~~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In member function ‘const array_slice<T>::value_type& array_slice<T>::operator[](unsigned int) const’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2341:3: error: there are no arguments to ‘gcc_checking_assert’ that depend on a template parameter, so a declaration of ‘gcc_checking_assert’ must be available [-fpermissive] + 2341 | gcc_checking_assert (i < m_size); + | ^~~~~~~~~~~~~~~~~~~ +In file included from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/backend.h:29, + from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/gcc-plugin.h:30: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/function.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/function.h:131:24: error: wrong number of template arguments (2, should be 3) + 131 | vec<rtx_insn *, va_gc> *x_forced_labels; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/function.h:145:19: error: wrong number of template arguments (2, should be 3) + 145 | vec<uchar, va_gc> *action_record_data; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/function.h:147:30: error: wrong number of template arguments (2, should be 3) + 147 | vec<call_site_record, va_gc> *call_site_record_v[2]; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/function.h:230:29: error: wrong number of template arguments (2, should be 3) + 230 | vec<callinfo_callee, va_gc> *callees; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/function.h:234:29: error: wrong number of template arguments (2, should be 3) + 234 | vec<callinfo_dalloc, va_gc> *dallocs; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/function.h:288:18: error: wrong number of template arguments (2, should be 3) + 288 | vec<tree, va_gc> *local_decls; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/function.h:497:31: error: wrong number of template arguments (2, should be 3) + 497 | extern GTY(()) vec<tree, va_gc> *types_used_by_cur_var_decl; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/function.h:709:16: error: wrong number of template arguments (1, should be 3) + 709 | extern vec<edge> convert_jumps_to_returns (basic_block last_bb, bool simple_p, + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/function.h:710:52: error: wrong number of template arguments (1, should be 3) + 710 | vec<edge> unconverted); + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +In file included from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/backend.h:32: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:119:18: error: wrong number of template arguments (2, should be 3) + 119 | vec<edge, va_gc> *preds; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:120:18: error: wrong number of template arguments (2, should be 3) + 120 | vec<edge, va_gc> *succs; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h: In function ‘bool single_succ_p(const_basic_block)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:313:57: error: no matching function for call to ‘vec_safe_length(int* const&)’ + 313 | #define EDGE_COUNT(ev) vec_safe_length (ev) + | ~~~~~~~~~~~~~~~~^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:323:10: note: in expansion of macro ‘EDGE_COUNT’ + 323 | return EDGE_COUNT (bb->succs) == 1; + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:665:1: note: candidate: ‘template<class T, class A> unsigned int vec_safe_length(const vec<T, A, vl_embed>*)’ + 665 | vec_safe_length (const vec<T, A, vl_embed> *v) + | ^~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:665:1: note: template argument deduction/substitution failed: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:313:57: note: mismatched types ‘const vec<T, A, vl_embed>’ and ‘int’ + 313 | #define EDGE_COUNT(ev) vec_safe_length (ev) + | ~~~~~~~~~~~~~~~~^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:323:10: note: in expansion of macro ‘EDGE_COUNT’ + 323 | return EDGE_COUNT (bb->succs) == 1; + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h: In function ‘bool single_pred_p(const_basic_block)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:313:57: error: no matching function for call to ‘vec_safe_length(int* const&)’ + 313 | #define EDGE_COUNT(ev) vec_safe_length (ev) + | ~~~~~~~~~~~~~~~~^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:331:10: note: in expansion of macro ‘EDGE_COUNT’ + 331 | return EDGE_COUNT (bb->preds) == 1; + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:665:1: note: candidate: ‘template<class T, class A> unsigned int vec_safe_length(const vec<T, A, vl_embed>*)’ + 665 | vec_safe_length (const vec<T, A, vl_embed> *v) + | ^~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:665:1: note: template argument deduction/substitution failed: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:313:57: note: mismatched types ‘const vec<T, A, vl_embed>’ and ‘int’ + 313 | #define EDGE_COUNT(ev) vec_safe_length (ev) + | ~~~~~~~~~~~~~~~~^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:331:10: note: in expansion of macro ‘EDGE_COUNT’ + 331 | return EDGE_COUNT (bb->preds) == 1; + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h: In function ‘edge_def* single_succ_edge(const_basic_block)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:316:55: error: invalid types ‘int[int]’ for array subscript + 316 | #define EDGE_SUCC(bb,i) (*(bb)->succs)[(i)] + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:341:10: note: in expansion of macro ‘EDGE_SUCC’ + 341 | return EDGE_SUCC (bb, 0); + | ^~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h: In function ‘edge_def* single_pred_edge(const_basic_block)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:315:55: error: invalid types ‘int[int]’ for array subscript + 315 | #define EDGE_PRED(bb,i) (*(bb)->preds)[(i)] + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:351:10: note: in expansion of macro ‘EDGE_PRED’ + 351 | return EDGE_PRED (bb, 0); + | ^~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:376:18: error: wrong number of template arguments (2, should be 3) + 376 | vec<edge, va_gc> **container; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:379:30: error: wrong number of template arguments (2, should be 3) + 379 | static inline vec<edge, va_gc> * + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:391:28: error: wrong number of template arguments (2, should be 3) + 391 | ei_start_1 (vec<edge, va_gc> **ev) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:404:27: error: wrong number of template arguments (2, should be 3) + 404 | ei_last_1 (vec<edge, va_gc> **ev) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h: In function ‘edge_iterator ei_last_1(int**)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:313:57: error: no matching function for call to ‘vec_safe_length(int*&)’ + 313 | #define EDGE_COUNT(ev) vec_safe_length (ev) + | ~~~~~~~~~~~~~~~~^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:408:13: note: in expansion of macro ‘EDGE_COUNT’ + 408 | i.index = EDGE_COUNT (*ev) - 1; + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:665:1: note: candidate: ‘template<class T, class A> unsigned int vec_safe_length(const vec<T, A, vl_embed>*)’ + 665 | vec_safe_length (const vec<T, A, vl_embed> *v) + | ^~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:665:1: note: template argument deduction/substitution failed: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:313:57: note: mismatched types ‘const vec<T, A, vl_embed>’ and ‘int’ + 313 | #define EDGE_COUNT(ev) vec_safe_length (ev) + | ~~~~~~~~~~~~~~~~^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:408:13: note: in expansion of macro ‘EDGE_COUNT’ + 408 | i.index = EDGE_COUNT (*ev) - 1; + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h: In function ‘bool ei_end_p(edge_iterator)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:313:57: error: no matching function for call to ‘vec_safe_length(int*)’ + 313 | #define EDGE_COUNT(ev) vec_safe_length (ev) + | ~~~~~~~~~~~~~~~~^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:418:22: note: in expansion of macro ‘EDGE_COUNT’ + 418 | return (i.index == EDGE_COUNT (ei_container (i))); + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:665:1: note: candidate: ‘template<class T, class A> unsigned int vec_safe_length(const vec<T, A, vl_embed>*)’ + 665 | vec_safe_length (const vec<T, A, vl_embed> *v) + | ^~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:665:1: note: template argument deduction/substitution failed: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:313:57: note: mismatched types ‘const vec<T, A, vl_embed>’ and ‘int’ + 313 | #define EDGE_COUNT(ev) vec_safe_length (ev) + | ~~~~~~~~~~~~~~~~^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:418:22: note: in expansion of macro ‘EDGE_COUNT’ + 418 | return (i.index == EDGE_COUNT (ei_container (i))); + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h: In function ‘bool ei_one_before_end_p(edge_iterator)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:313:57: error: no matching function for call to ‘vec_safe_length(int*)’ + 313 | #define EDGE_COUNT(ev) vec_safe_length (ev) + | ~~~~~~~~~~~~~~~~^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:426:26: note: in expansion of macro ‘EDGE_COUNT’ + 426 | return (i.index + 1 == EDGE_COUNT (ei_container (i))); + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:665:1: note: candidate: ‘template<class T, class A> unsigned int vec_safe_length(const vec<T, A, vl_embed>*)’ + 665 | vec_safe_length (const vec<T, A, vl_embed> *v) + | ^~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:665:1: note: template argument deduction/substitution failed: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:313:57: note: mismatched types ‘const vec<T, A, vl_embed>’ and ‘int’ + 313 | #define EDGE_COUNT(ev) vec_safe_length (ev) + | ~~~~~~~~~~~~~~~~^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:426:26: note: in expansion of macro ‘EDGE_COUNT’ + 426 | return (i.index + 1 == EDGE_COUNT (ei_container (i))); + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h: In function ‘void ei_next(edge_iterator*)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:313:57: error: no matching function for call to ‘vec_safe_length(int*)’ + 313 | #define EDGE_COUNT(ev) vec_safe_length (ev) + | ~~~~~~~~~~~~~~~~^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/system.h:800:49: note: in definition of macro ‘gcc_checking_assert’ + 800 | #define gcc_checking_assert(EXPR) ((void)(0 && (EXPR))) + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:433:35: note: in expansion of macro ‘EDGE_COUNT’ + 433 | gcc_checking_assert (i->index < EDGE_COUNT (ei_container (*i))); + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:665:1: note: candidate: ‘template<class T, class A> unsigned int vec_safe_length(const vec<T, A, vl_embed>*)’ + 665 | vec_safe_length (const vec<T, A, vl_embed> *v) + | ^~~~~~~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:665:1: note: template argument deduction/substitution failed: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:313:57: note: mismatched types ‘const vec<T, A, vl_embed>’ and ‘int’ + 313 | #define EDGE_COUNT(ev) vec_safe_length (ev) + | ~~~~~~~~~~~~~~~~^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/system.h:800:49: note: in definition of macro ‘gcc_checking_assert’ + 800 | #define gcc_checking_assert(EXPR) ((void)(0 && (EXPR))) + | ^~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:433:35: note: in expansion of macro ‘EDGE_COUNT’ + 433 | gcc_checking_assert (i->index < EDGE_COUNT (ei_container (*i))); + | ^~~~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h: In function ‘edge_def* ei_edge(edge_iterator)’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:314:46: error: invalid types ‘int[unsigned int]’ for array subscript + 314 | #define EDGE_I(ev,i) (*ev)[(i)] + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:449:10: note: in expansion of macro ‘EDGE_I’ + 449 | return EDGE_I (ei_container (i), i.index); + | ^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h: At global scope: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/basic-block.h:554:36: error: wrong number of template arguments (2, should be 3) + 554 | find_fallthru_edge (vec<edge, va_gc> *edges) + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +In file included from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/cfg.h:23, + from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/backend.h:33: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/dominance.h:40:65: error: wrong number of template arguments (1, should be 3) + 40 | vec<basic_block>); + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/dominance.h:45:60: error: wrong number of template arguments (1, should be 3) + 45 | vec<basic_block>); + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/dominance.h:49:28: error: template argument 2 is invalid + 49 | extern auto_vec<basic_block> get_dominated_by (enum cdi_direction, basic_block); + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/dominance.h:50:28: error: template argument 2 is invalid + 50 | extern auto_vec<basic_block> get_dominated_by_region (enum cdi_direction, + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/dominance.h:53:28: error: template argument 2 is invalid + 53 | extern auto_vec<basic_block> get_dominated_to_depth (enum cdi_direction, + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/dominance.h:55:28: error: template argument 2 is invalid + 55 | extern auto_vec<basic_block> get_all_dominated_blocks (enum cdi_direction, + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/dominance.h:81:52: error: wrong number of template arguments (1, should be 3) + 81 | vec<basic_block> &, bool); + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/cfg.h:45:25: error: wrong number of template arguments (2, should be 3) + 45 | vec<basic_block, va_gc> *x_basic_block_info; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/cfg.h:61:25: error: wrong number of template arguments (2, should be 3) + 61 | vec<basic_block, va_gc> *x_label_to_block_map; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +In file included from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/gcc-plugin.h:31: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/cfghooks.h:174:64: error: wrong number of template arguments (1, should be 3) + 174 | vec<edge> *, int); + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/cfghooks.h:259:54: error: wrong number of template arguments (1, should be 3) + 259 | vec<edge> *to_remove, int flags); + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +In file included from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/gcc-plugin.h:34: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/cfganal.h:47:18: error: wrong number of template arguments (1, should be 3) + 47 | vec<bitmap_head> control_dependence_map; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/cfganal.h:48:27: error: wrong number of template arguments (1, should be 3) + 48 | vec<std::pair<int, int> > m_el; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/cfganal.h:69:49: error: wrong number of template arguments (1, should be 3) + 69 | extern void inverted_post_order_compute (vec<int> *postorder, sbitmap *start_points = 0); + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/cfganal.h:75:75: error: wrong number of template arguments (1, should be 3) + 75 | vec<std::pair<int, int> > *); + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +In file included from /usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/gcc-plugin.h:42: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/tree-core.h:1521:29: error: wrong number of template arguments (2, should be 3) + 1521 | vec<constructor_elt, va_gc> *elts; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/tree-core.h:1653:18: error: wrong number of template arguments (2, should be 3) + 1653 | vec<tree, va_gc> *nonlocalized_vars; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/tree-core.h:1740:18: error: wrong number of template arguments (2, should be 3) + 1740 | vec<tree, va_gc> *base_accesses; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/tree-core.h:1746:18: error: wrong number of template arguments (2, should be 3) + 1746 | vec<tree, va_gc> base_binfos; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/tree-core.h:2175:18: error: wrong number of template arguments (2, should be 3) + 2175 | vec<tree, va_gc> *pending_statics; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/tree-core.h:2216:18: error: wrong number of template arguments (2, should be 3) + 2216 | vec<tree, va_gc> *to; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/tree-core.h:2275:37: error: wrong number of template arguments (2, should be 3) + 2275 | extern GTY(()) vec<alias_pair, va_gc> *alias_pairs; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/tree-core.h:2289:32: error: wrong number of template arguments (2, should be 3) + 2289 | extern GTY (()) vec<tree, va_gc> *all_translation_units; + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +./include/mpi_collective.hpp:158:14: error: wrong number of template arguments (1, should be 3) + 158 | vec<cpp_ttype> fun_vec; //function vector in pragma. + | ^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: provided for ‘template<class, class, class> struct vec’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In instantiation of ‘unsigned int vec<T, va_heap, vl_ptr>::length() const [with T = ipa_ref]’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/ipa-ref.h:80:28: required from here +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1473:27: error: invalid use of incomplete type ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 1473 | { return m_vec ? m_vec->length () : 0; } + | ~~~~~~~^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In instantiation of ‘T& vec<T, va_heap, vl_ptr>::operator[](unsigned int) [with T = ipa_ref]’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/ipa-ref.h:82:25: required from here +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1495:20: error: no match for ‘operator[]’ (operand types are ‘vec<ipa_ref, va_heap, vl_embed>’ and ‘unsigned int’) + 1495 | { return (*m_vec)[ix]; } + | ~~~~~~~~^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In instantiation of ‘unsigned int vec<T, va_heap, vl_ptr>::length() const [with T = ipa_ref*]’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/ipa-ref.h:88:27: required from here +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1473:27: error: invalid use of incomplete type ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 1473 | { return m_vec ? m_vec->length () : 0; } + | ~~~~~~~^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In instantiation of ‘T& vec<T, va_heap, vl_ptr>::operator[](unsigned int) [with T = ipa_ref*]’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/ipa-ref.h:90:23: required from here +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1495:20: error: no match for ‘operator[]’ (operand types are ‘vec<ipa_ref*, va_heap, vl_embed>’ and ‘unsigned int’) + 1495 | { return (*m_vec)[ix]; } + | ~~~~~~~~^ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In instantiation of ‘bool vec<T, va_heap, vl_ptr>::reserve(unsigned int, bool) [with T = ipa_ref*]’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1878:10: required from ‘bool vec<T, va_heap, vl_ptr>::reserve_exact(unsigned int) [with T = ipa_ref*]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1893:5: required from ‘void vec<T, va_heap, vl_ptr>::create(unsigned int) [with T = ipa_ref*]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/ipa-ref.h:122:22: required from here +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1854:25: error: invalid use of incomplete type ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 1854 | oldsize = oldvec->length (); + | ~~~~~~~~^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1861:34: error: invalid use of incomplete type ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 1861 | vec_copy_construct (m_vec->address (), oldvec->address (), oldsize); + | ~~~~~~~^~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1861:54: error: invalid use of incomplete type ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 1861 | vec_copy_construct (m_vec->address (), oldvec->address (), oldsize); + | ~~~~~~~~^~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1862:14: error: invalid use of incomplete type ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 1862 | m_vec->m_vecpfx.m_num = oldsize; + | ~~~~~~~^~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In instantiation of ‘bool vec<T, va_heap, vl_ptr>::reserve(unsigned int, bool) [with T = ipa_ref]’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1878:10: required from ‘bool vec<T, va_heap, vl_ptr>::reserve_exact(unsigned int) [with T = ipa_ref]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1893:5: required from ‘void vec<T, va_heap, vl_ptr>::create(unsigned int) [with T = ipa_ref]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/ipa-ref.h:123:23: required from here +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1854:25: error: invalid use of incomplete type ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 1854 | oldsize = oldvec->length (); + | ~~~~~~~~^~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1861:34: error: invalid use of incomplete type ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 1861 | vec_copy_construct (m_vec->address (), oldvec->address (), oldsize); + | ~~~~~~~^~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1861:54: error: invalid use of incomplete type ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 1861 | vec_copy_construct (m_vec->address (), oldvec->address (), oldsize); + | ~~~~~~~~^~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1862:14: error: invalid use of incomplete type ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 1862 | m_vec->m_vecpfx.m_num = oldsize; + | ~~~~~~~^~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In instantiation of ‘bool vec<T, va_heap, vl_ptr>::space(int) const [with T = ipa_ref*]’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1842:7: required from ‘bool vec<T, va_heap, vl_ptr>::reserve(unsigned int, bool) [with T = ipa_ref*]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1878:10: required from ‘bool vec<T, va_heap, vl_ptr>::reserve_exact(unsigned int) [with T = ipa_ref*]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1893:5: required from ‘void vec<T, va_heap, vl_ptr>::create(unsigned int) [with T = ipa_ref*]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/ipa-ref.h:122:22: required from here +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1501:27: error: invalid use of incomplete type ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 1501 | { return m_vec ? m_vec->space (nelems) : nelems == 0; } + | ~~~~~~~^~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In instantiation of ‘bool vec<T, va_heap, vl_ptr>::using_auto_storage() const [with T = ipa_ref*]’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1850:35: required from ‘bool vec<T, va_heap, vl_ptr>::reserve(unsigned int, bool) [with T = ipa_ref*]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1878:10: required from ‘bool vec<T, va_heap, vl_ptr>::reserve_exact(unsigned int) [with T = ipa_ref*]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1893:5: required from ‘void vec<T, va_heap, vl_ptr>::create(unsigned int) [with T = ipa_ref*]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/ipa-ref.h:122:22: required from here +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2217:25: error: invalid use of incomplete type ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 2217 | return m_vec ? m_vec->m_vecpfx.m_using_auto_storage : false; + | ~~~~~~~^~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref*, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In instantiation of ‘bool vec<T, va_heap, vl_ptr>::space(int) const [with T = ipa_ref]’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1842:7: required from ‘bool vec<T, va_heap, vl_ptr>::reserve(unsigned int, bool) [with T = ipa_ref]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1878:10: required from ‘bool vec<T, va_heap, vl_ptr>::reserve_exact(unsigned int) [with T = ipa_ref]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1893:5: required from ‘void vec<T, va_heap, vl_ptr>::create(unsigned int) [with T = ipa_ref]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/ipa-ref.h:123:23: required from here +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1501:27: error: invalid use of incomplete type ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 1501 | { return m_vec ? m_vec->space (nelems) : nelems == 0; } + | ~~~~~~~^~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h: In instantiation of ‘bool vec<T, va_heap, vl_ptr>::using_auto_storage() const [with T = ipa_ref]’: +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1850:35: required from ‘bool vec<T, va_heap, vl_ptr>::reserve(unsigned int, bool) [with T = ipa_ref]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1878:10: required from ‘bool vec<T, va_heap, vl_ptr>::reserve_exact(unsigned int) [with T = ipa_ref]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:1893:5: required from ‘void vec<T, va_heap, vl_ptr>::create(unsigned int) [with T = ipa_ref]’ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/ipa-ref.h:123:23: required from here +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:2217:25: error: invalid use of incomplete type ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 2217 | return m_vec ? m_vec->m_vecpfx.m_using_auto_storage : false; + | ~~~~~~~^~~~~~~~ +/usr/lib/gcc/x86_64-linux-gnu/12/plugin/include/vec.h:208:57: note: declaration of ‘struct vec<ipa_ref, va_heap, vl_embed>’ + 208 | template <typename, typename, typename> friend struct vec; + | ^~~ +make[2]: *** [Makefile:78: obj/mpi_collective_graph_utils.o] Error 1 +make[1]: *** [Makefile:50: plugin] Error 2 +make: *** [Makefile:42: all] Error 2 diff --git a/src/mpi_collective_dominance.cpp b/src/mpi_collective_dominance.cpp index 09a83bfe9107c5c0a6a11868cc829047af5b9733..f4fb07c31e7029b21c1b3484c0c1b0f124c838e9 100644 --- a/src/mpi_collective_dominance.cpp +++ b/src/mpi_collective_dominance.cpp @@ -144,7 +144,7 @@ void pass_mpi_collective::label_post_dom_front(function *fun) // the result in pds. // Take account of looping edge if it was previously calculated. void pass_mpi_collective::__is_post_dom_bitmap(function *fun, - basic_block bb, bitmap nodes, bitmap pds) + basic_block bb, bitmap nodes, bitmap pds) { edge e; edge_iterator ei; @@ -206,7 +206,7 @@ void pass_mpi_collective::__is_post_dom_bitmap(function *fun, // wrapper of __is_post_dom_bitmap void pass_mpi_collective::get_post_dom_bitmap(function *fun, - bitmap nodes, bitmap pds) + bitmap nodes, bitmap pds) { __is_post_dom_bitmap(fun, ENTRY_BLOCK_PTR_FOR_FN(fun), nodes, pds); @@ -216,7 +216,7 @@ void pass_mpi_collective::get_post_dom_bitmap(function *fun, // calculate post dominantion frontier of a post dominated set of nodes // in pds and put the result in pdf. void pass_mpi_collective::get_post_dom_frontier(function *fun, - bitmap pds, bitmap pdf) + bitmap pds, bitmap pdf) { //we check each bb, if a bb is in the postdom set, we check its //most adjacents preds. If a pred is not in the postdom set, it diff --git a/src/mpi_collective_graphviz.cpp b/src/mpi_collective_graphviz.cpp index 3eb238a68919721fec4d792a5ccb5449da86f798..54c7f5e1a39dd8fac6396d96c5d869a919341426 100644 --- a/src/mpi_collective_graphviz.cpp +++ b/src/mpi_collective_graphviz.cpp @@ -6,7 +6,7 @@ /* Build a filename (as a string) based on function name */ char *pass_mpi_collective::cfgviz_generate_filename(function *fun, - const char *suffix) + const char *suffix) { char *target_filename; int line; diff --git a/src/mpi_collective_pragma.cpp b/src/mpi_collective_pragma.cpp index feb1f65e0dcb40f39ad673d7492eb14e6bb36b44..d89c3af15bf1dd3f4b51b9fb984d14ce49a1295d 100644 --- a/src/mpi_collective_pragma.cpp +++ b/src/mpi_collective_pragma.cpp @@ -1,12 +1,13 @@ #include <cstdio> -// dependance de c-pragma.h +// dependence of c-pragma.h #include <gcc-plugin.h> // c_register_pragma #include <c-family/c-pragma.h> // IDENTIFIER_POINTER #include <tree.h> - +//// vec +//#include <vec.h> //gcc error #include <diagnostic.h> @@ -20,6 +21,115 @@ void register_mpicoll_check_pragma(void *event_data, void *data) c_register_pragma("ProjetCA", "mpicoll_check", mpicoll_check_pragma); } +//simple function to print fun_vec elements. +void print_fun_vec() +{ + tree x; + for (unsigned int ix=0;fun_vec.iterate(ix, &x);ix++) + { + printf("%s ",IDENTIFIER_POINTER(x)); + } + printf("\n%i",fun_vec.length()); + printf("\n"); +} + +//add x if not present in fun_vec +void add_to_fun_vec(tree x) +{ + //verify if a newly added name is not already present in fun_vec. + //raise warning if so. + if (fun_vec.contains(x)) + { + warning (0,"repetition of function name %s in pragma" + , IDENTIFIER_POINTER(x)); + return; + } + fun_vec.quick_push(x); +} + +//By "taking inspiration", I just cc/cv and modified what was needed for +//our needs. +void mpicoll_check_pragma(cpp_reader *) +{ + location_t loc; + enum cpp_ttype token; + tree x; + bool close_paren_needed_p = false; + + //not possible to use pragma inside function + if (cfun) + { + error_at (cfun->function_start_locus + , "pragma ProjetCA %s is not allowed inside functions" + , "mpicoll_check"); + return; + } + + token = pragma_lex (&x, &loc); + if (token == CPP_OPEN_PAREN) + { + close_paren_needed_p = true; + token = pragma_lex (&x, &loc); + } + + if (token != CPP_NAME) + { error_at (loc, "%<#pragma ProjetCA mpicoll_check%> is not a valid name"); } + + /* Strings are user options. */ + else + { + //tree args = NULL_TREE; + + do + { + /* Build up the strings now as a tree linked list. Skip empty + strings. */ + if (IDENTIFIER_LENGTH (x) > 0) + //I have no idea what type is CPP_NAME; But it doesn't seem to create + //a string since TREE_STRING_LENGTH fails ; IDENTIFIER_LENGTH works + //just fine for what we want. + // + //The Tree structure stuff is a mess. + { + if (token != CPP_NAME) + { + //turns out this never happens.. + warning_at (loc, 0,"Unrecognized name %s", IDENTIFIER_POINTER(x)); + } + //args = tree_cons (NULL_TREE, x, args); + inform (loc, "Registering name %s", IDENTIFIER_POINTER(x)); + add_to_fun_vec(x); + print_fun_vec(); + } + + token = pragma_lex (&x); + while (token == CPP_COMMA) + { token = pragma_lex (&x); } + } + while (token == CPP_NAME); + + if (close_paren_needed_p) + { + if (token == CPP_CLOSE_PAREN) + { token = pragma_lex (&x,&loc); } + else + error ("%<#pragma ProjetCA %s (string [,string]...)%> does " + "not have a final %<)%>", "mpicoll_check"); + } + + if (token != CPP_EOF) + { + error_at (loc,"%<#pragma ProjetCA %s%> string is badly formed" + , "mpicoll_check"); + return; + } + + /* put arguments in the order the user typed them. */ + //args = nreverse (args); + } +} + +/* OLD - TODO : delete this void mpicoll_check_pragma(cpp_reader *) { location_t loc; @@ -30,8 +140,8 @@ void mpicoll_check_pragma(cpp_reader *) if (cfun) { error_at (cfun->function_start_locus - , "pragma ProjectCA %s is not allowed inside functions" - , "mpicoll_check"); + , "pragma ProjectCA %s is not allowed inside functions" + , "mpicoll_check"); return; } @@ -40,8 +150,8 @@ void mpicoll_check_pragma(cpp_reader *) { printf("adding %s to function to parse.\n", IDENTIFIER_POINTER(x)); } - } +*/ void verify_mpicoll_list(void *event_data, void *data) { diff --git a/src/mpi_collective_warnings.cpp b/src/mpi_collective_warnings.cpp index ea89de75b9fc895a015b9ff6960d814a23054473..5f33a295b663a922bb870806a511e618a7e3fcca 100644 --- a/src/mpi_collective_warnings.cpp +++ b/src/mpi_collective_warnings.cpp @@ -44,8 +44,8 @@ void pass_mpi_collective::__rank_collective(basic_block bb) { __rank_collective(e->src); //recursion on parent nodes } - - //(note that entering this for loop imply we already processed our + + //(note that entering this for loop imply we already processed our //parent node) for (int mpi_code = 0; mpi_code < LAST_AND_UNUSED_MPI_COLLECTIVE_CODE; @@ -72,7 +72,7 @@ void pass_mpi_collective::__rank_collective(basic_block bb) //set in a bitmap the index of a bb that have the same rank for a collective void pass_mpi_collective::get_mpi_coll_rank(function *fun, - int rank, int mpi_code, bitmap mpi_coll) + int rank, int mpi_code, bitmap mpi_coll) { basic_block bb; @@ -89,14 +89,14 @@ void pass_mpi_collective::get_mpi_coll_rank(function *fun, } //get first gimple statement in bb -gimple * pass_mpi_collective::get_first_stmt(basic_block bb) +gimple *pass_mpi_collective::get_first_stmt(basic_block bb) { return bb->il.gimple.seq; -} +} //get gimple statement in bb that is its mpi call //This obv only works with bb that have a mpi call inside it. -gimple * pass_mpi_collective::get_mpi_stmt(basic_block bb) +gimple *pass_mpi_collective::get_mpi_stmt(basic_block bb) { gimple_stmt_iterator gsi; gimple *stmt; @@ -104,10 +104,10 @@ gimple * pass_mpi_collective::get_mpi_stmt(basic_block bb) for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) { stmt = gsi_stmt(gsi); - if(is_mpi_collec(stmt) == ((bb_data *) bb->aux)->mpi_code) + if (is_mpi_collec(stmt) == ((bb_data *) bb->aux)->mpi_code) { return stmt; - } + } } //should not happen printf("ARGSH"); @@ -116,7 +116,7 @@ gimple * pass_mpi_collective::get_mpi_stmt(basic_block bb) //get gimple statement in bb that is its mpi call //This obv only works with bb that have a mpi call inside it. -gimple * pass_mpi_collective::get_first_non_mpi_stmt(basic_block bb) +gimple *pass_mpi_collective::get_first_non_mpi_stmt(basic_block bb) { gimple_stmt_iterator gsi; gimple *stmt; @@ -124,10 +124,10 @@ gimple * pass_mpi_collective::get_first_non_mpi_stmt(basic_block bb) for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) { stmt = gsi_stmt(gsi); - if(!is_mpi_func(stmt)) + if (!is_mpi_func(stmt)) { return stmt; - } + } } //should not happen printf("ARGSH"); @@ -157,7 +157,7 @@ void pass_mpi_collective::raise_warning_mpi_rank(function *fun) for (mpi_code = 0; mpi_code < LAST_AND_UNUSED_MPI_COLLECTIVE_CODE; ++mpi_code) { - //for a given set of nodes of of same mpi collective and rank, + //for a given set of nodes of of same mpi collective and rank, //we calculate its post-dominance frontier. //A Warning occurs when its postdominance frontier is not empty : //indeed, this mean that some path in our cfg does not necessarily go @@ -182,19 +182,19 @@ void pass_mpi_collective::raise_warning_mpi_rank(function *fun) { //printf("MPI Collective %s incomplete rank at bbs: ", // mpi_collective_name[mpi_code]); - + //we add every call to this mpi collective in our stack. EXECUTE_IF_SET_IN_BITMAP(nodes, 0, index, bi) - { + { bb_call_indx_stack.push(index); //printf("%i, ", index); } } - + while (! bitmap_empty_p(pdf)) { - //we stack the iterative pdf into an other stack. + //we stack the iterative pdf into an other stack. EXECUTE_IF_SET_IN_BITMAP(pdf, 0, index, bi) { bb_pdf_indx_stack.push(index); @@ -228,29 +228,29 @@ void pass_mpi_collective::raise_warning_mpi_rank(function *fun) location_t loc; //first divergence possible loc = gimple_location( - get_first_non_mpi_stmt(get_bb_from_index(fun, bb_pdf_indx_stack.top()))); + get_first_non_mpi_stmt(get_bb_from_index(fun, bb_pdf_indx_stack.top()))); warning_at (loc - , 0 - , "The MPI Collective %s(%i) might be unmatched in some MPI processes, diverging from here:" - , mpi_collective_name[mpi_code], rank); + , 0 + , "The MPI Collective %s(%i) might be unmatched in some MPI processes, diverging from here:" + , mpi_collective_name[mpi_code], rank); bb_pdf_indx_stack.pop(); - - while(!bb_call_indx_stack.empty()) + + while (!bb_call_indx_stack.empty()) { loc = gimple_location( - get_mpi_stmt(get_bb_from_index(fun, bb_call_indx_stack.top()))); + get_mpi_stmt(get_bb_from_index(fun, bb_call_indx_stack.top()))); inform (loc, "MPI collective %s(%i) called here." - , mpi_collective_name[mpi_code], rank); + , mpi_collective_name[mpi_code], rank); bb_call_indx_stack.pop(); } - - while(!bb_pdf_indx_stack.empty()) + + while (!bb_pdf_indx_stack.empty()) { loc = gimple_location( - get_first_non_mpi_stmt(get_bb_from_index(fun, bb_pdf_indx_stack.top()))); + get_first_non_mpi_stmt(get_bb_from_index(fun, bb_pdf_indx_stack.top()))); inform (loc, "Diverging point might also be later at:"); bb_pdf_indx_stack.pop(); - } + } } } } @@ -273,7 +273,7 @@ basic_block pass_mpi_collective::get_bb_from_index(function *fun, int index) //raise error if there is a collective order error void pass_mpi_collective::raise_warning_mpi_order(function *fun) -{ +{ int mpi_code; int rank; @@ -299,7 +299,7 @@ void pass_mpi_collective::raise_warning_mpi_order(function *fun) // DONE: split in 2, get mpi set & find set post dom get_mpi_coll_rank(fun, rank, mpi_code, nodes); //debug_bitmap(nodes); - + for (cursor_code = 0; cursor_code < LAST_AND_UNUSED_MPI_COLLECTIVE_CODE; cursor_code++) @@ -342,31 +342,31 @@ void pass_mpi_collective::raise_warning_mpi_order(function *fun) // mpi_collective_name[mpi_code], rank); location_t loc = gimple_location( - get_mpi_stmt(get_bb_from_index(fun, diff_index))); - + get_mpi_stmt(get_bb_from_index(fun, diff_index))); + warning_at (loc - , 0 - , "MPI Collective %s(%i) might not be reachable due to a precedent %s call:" - , mpi_collective_name[mpi_code] - , rank, mpi_collective_name[cursor_code]); + , 0 + , "MPI Collective %s(%i) might not be reachable due to a precedent %s call:" + , mpi_collective_name[mpi_code] + , rank, mpi_collective_name[cursor_code]); EXECUTE_IF_SET_IN_BITMAP(nodes, 0, index, bi) { - if (index!=diff_index) + if (index != diff_index) { loc = gimple_location( - get_mpi_stmt(get_bb_from_index(fun, index))); + get_mpi_stmt(get_bb_from_index(fun, index))); inform (loc - , "reachable %s(%i) without a prior %s call:" - , mpi_collective_name[mpi_code] - , rank, mpi_collective_name[cursor_code]); - } + , "reachable %s(%i) without a prior %s call:" + , mpi_collective_name[mpi_code] + , rank, mpi_collective_name[cursor_code]); + } } } } - + bitmap_clear(nodes); } } diff --git a/src/plugin.cpp b/src/plugin.cpp index 51c5b7954de89e5ff5d50a76fc01746c8db1c91a..edd224189f3aaf9f7f123e9b5f4e910be0aa65d8 100644 --- a/src/plugin.cpp +++ b/src/plugin.cpp @@ -33,6 +33,8 @@ void print_plugin_infos(struct plugin_name_args *plugin_info, printf("\n\n"); } +vec<tree> fun_vec; + /* Main entry point for plugin */ int plugin_init(struct plugin_name_args *plugin_info, @@ -59,7 +61,9 @@ plugin_init(struct plugin_name_args *plugin_info, PLUGIN_PASS_MANAGER_SETUP, NULL, &pass_info); - + + fun_vec.create(1); + //fun_vec.quick_grow_cleared(20); register_callback(plugin_info->base_name, PLUGIN_PRAGMAS, register_mpicoll_check_pragma, @@ -69,6 +73,6 @@ plugin_init(struct plugin_name_args *plugin_info, PLUGIN_FINISH_UNIT, verify_mpicoll_list, NULL); - + //fun_vec.release(); //FIXME release memory in last pass return 0; } diff --git a/src/test/test_pragma1.c b/src/test/test_pragma1.c index 49e26b8f7d886444c967a060fbe21baae07d06b3..c4ca3a8e6ca6eaac8ea1563dfeebf7b2c8afa2aa 100644 --- a/src/test/test_pragma1.c +++ b/src/test/test_pragma1.c @@ -1,7 +1,5 @@ int main(){ - #pragma ProjetCA mpicoll_check main - return 0; } diff --git a/src/test/test_pragma2.c b/src/test/test_pragma2.c index 083e1e5d04a2fa1ca8b404ad17df8185efd7437e..31bd1733b327fc8f38a760786c87de9f3f96b02d 100644 --- a/src/test/test_pragma2.c +++ b/src/test/test_pragma2.c @@ -1,6 +1,9 @@ -#pragma ProjetCA mpicoll_check main +#pragma ProjetCA mpicoll_check (main,nothingdoing,bab,,bab,) int main(){ return 0; } + +void nothingdoing(){ +}