Error Compiling GCC 5.1 under Ubuntu 22.04.5

GCC 5.1 is too old to compile under Ubuntu 22.04.5

Compiling command:

cd ~
mkdir gcc-5.1
cd gcc-5.1
mkdir build
git clone ../gcc
cd gcc
git checkout releases/gcc-5.1.0
contrib/download_prerequisites
cd ../build
../gcc/configure -v --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --prefix=/usr/local/gcc-5.1 --enable-checking=release --enable-languages=c,c++,fortran,go,ada --disable-multilib --program-suffix=-5.1 CC=gnatgcc
make -j 8
make install

Error message after compiling:

make[3]: Entering directory '/root/gcc-5.1/build/gcc'
x86_64-linux-gnu-g++ -c   -g -DIN_GCC    -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I../../gcc/gcc -I../../gcc/gcc/build -I../../gcc/gcc/../include  -I../../gcc/gcc/../libcpp/include  \
        -o build/genpreds.o ../../gcc/gcc/genpreds.c
In file included from ./tm.h:27,
                 from ../../gcc/gcc/genpreds.c:26:
../../gcc/gcc/config/elfos.h:102:21: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
  102 |    fprintf ((FILE), "%s"HOST_WIDE_INT_PRINT_UNSIGNED"\n",\
      |                     ^
../../gcc/gcc/config/elfos.h:170:24: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
  170 |       fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n",          \
      |                        ^
In file included from ./tm.h:48,
                 from ../../gcc/gcc/genpreds.c:26:
../../gcc/gcc/defaults.h:126:24: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
  126 |       fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n",          \
      |                        ^
In file included from ../../gcc/gcc/real.h:25,
                 from ../../gcc/gcc/rtl.h:26,
                 from ../../gcc/gcc/genpreds.c:27:
../../gcc/gcc/wide-int.h:370:10: error: too many template-parameter-lists
  370 |   struct binary_traits <T1, T2, FLEXIBLE_PRECISION, FLEXIBLE_PRECISION>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../gcc/gcc/wide-int.h:377:10: error: too many template-parameter-lists
  377 |   struct binary_traits <T1, T2, FLEXIBLE_PRECISION, VAR_PRECISION>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../gcc/gcc/wide-int.h:384:10: error: too many template-parameter-lists
  384 |   struct binary_traits <T1, T2, FLEXIBLE_PRECISION, CONST_PRECISION>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../gcc/gcc/wide-int.h:394:10: error: too many template-parameter-lists
  394 |   struct binary_traits <T1, T2, VAR_PRECISION, FLEXIBLE_PRECISION>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../gcc/gcc/wide-int.h:401:10: error: too many template-parameter-lists
  401 |   struct binary_traits <T1, T2, CONST_PRECISION, FLEXIBLE_PRECISION>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../gcc/gcc/wide-int.h:411:10: error: too many template-parameter-lists
  411 |   struct binary_traits <T1, T2, CONST_PRECISION, CONST_PRECISION>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../gcc/gcc/wide-int.h:422:10: error: too many template-parameter-lists
  422 |   struct binary_traits <T1, T2, VAR_PRECISION, VAR_PRECISION>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../gcc/gcc/wide-int.h:886:10: error: too many template-parameter-lists
  886 |   struct int_traits < generic_wide_int <storage> >
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../gcc/gcc/wide-int.h:898:51: error: invalid use of incomplete type ‘struct wi::int_traits<generic_wide_int<T> >’
  898 | get_precision (const generic_wide_int <storage> &x)
      |                                                   ^
../../gcc/gcc/wide-int.h:349:32: note: declaration of ‘struct wi::int_traits<generic_wide_int<T> >’
  349 |   template <typename T> struct int_traits;
      |                                ^~~~~~~~~~
../../gcc/gcc/wide-int.h:907:47: error: invalid use of incomplete type ‘struct wi::int_traits<generic_wide_int<T> >’
  907 |            const generic_wide_int <storage> &x)
      |                                               ^
../../gcc/gcc/wide-int.h:349:32: note: declaration of ‘struct wi::int_traits<generic_wide_int<T> >’
  349 |   template <typename T> struct int_traits;
      |                                ^~~~~~~~~~
../../gcc/gcc/wide-int.h:965:10: error: too many template-parameter-lists
  965 |   struct int_traits <wide_int_ref_storage <SE> >
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../gcc/gcc/wide-int.h: In instantiation of ‘struct wi::unary_traits<generic_wide_int<wide_int_storage> >’:
../../gcc/gcc/wide-int.h:685:3:   required from ‘class generic_wide_int<wide_int_storage>’
../../gcc/gcc/wide-int.h:1080:14:   required from here
../../gcc/gcc/wide-int.h:362:10: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_storage> >’ used in nested name specifier
  362 |   struct unary_traits : public binary_traits <T, T> {};
      |          ^~~~~~~~~~~~
../../gcc/gcc/wide-int.h: In instantiation of ‘class generic_wide_int<wide_int_storage>’:
../../gcc/gcc/wide-int.h:1080:14:   required from here
../../gcc/gcc/wide-int.h:685:19: error: no type named ‘result_type’ in ‘struct wi::unary_traits<generic_wide_int<wide_int_storage> >’
  685 |   UNARY_OPERATOR (operator ~, bit_not)
      |                   ^~~~~~~~
../../gcc/gcc/wide-int.h:671:38: note: in definition of macro ‘UNARY_OPERATOR’
  671 |   WI_UNARY_RESULT (generic_wide_int) OP () const { return wi::F (*this); }
      |                                      ^~
../../gcc/gcc/wide-int.h:686:19: error: no type named ‘result_type’ in ‘struct wi::unary_traits<generic_wide_int<wide_int_storage> >’
  686 |   UNARY_OPERATOR (operator -, neg)
      |                   ^~~~~~~~
../../gcc/gcc/wide-int.h:671:38: note: in definition of macro ‘UNARY_OPERATOR’
  671 |   WI_UNARY_RESULT (generic_wide_int) OP () const { return wi::F (*this); }
      |                                      ^~
../../gcc/gcc/wide-int.h:689:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_storage> >’ used in nested name specifier
  689 |   BINARY_OPERATOR (operator &, bit_and)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:690:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_storage> >’ used in nested name specifier
  690 |   BINARY_OPERATOR (and_not, bit_and_not)
      |                    ^~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:691:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_storage> >’ used in nested name specifier
  691 |   BINARY_OPERATOR (operator |, bit_or)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:692:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_storage> >’ used in nested name specifier
  692 |   BINARY_OPERATOR (or_not, bit_or_not)
      |                    ^~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:693:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_storage> >’ used in nested name specifier
  693 |   BINARY_OPERATOR (operator ^, bit_xor)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:694:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_storage> >’ used in nested name specifier
  694 |   BINARY_OPERATOR (operator +, add)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:695:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_storage> >’ used in nested name specifier
  695 |   BINARY_OPERATOR (operator -, sub)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:696:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_storage> >’ used in nested name specifier
  696 |   BINARY_OPERATOR (operator *, mul)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h: In instantiation of ‘struct wi::unary_traits<generic_wide_int<wide_int_ref_storage<false> > >’:
../../gcc/gcc/wide-int.h:685:3:   required from ‘class generic_wide_int<wide_int_ref_storage<false> >’
../../gcc/gcc/wide-int.h:1083:60:   required from here
../../gcc/gcc/wide-int.h:362:10: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_ref_storage<false> > >’ used in nested name specifier
  362 |   struct unary_traits : public binary_traits <T, T> {};
      |          ^~~~~~~~~~~~
../../gcc/gcc/wide-int.h: In instantiation of ‘class generic_wide_int<wide_int_ref_storage<false> >’:
../../gcc/gcc/wide-int.h:1083:60:   required from here
../../gcc/gcc/wide-int.h:685:19: error: no type named ‘result_type’ in ‘struct wi::unary_traits<generic_wide_int<wide_int_ref_storage<false> > >’
  685 |   UNARY_OPERATOR (operator ~, bit_not)
      |                   ^~~~~~~~
../../gcc/gcc/wide-int.h:671:38: note: in definition of macro ‘UNARY_OPERATOR’
  671 |   WI_UNARY_RESULT (generic_wide_int) OP () const { return wi::F (*this); }
      |                                      ^~
../../gcc/gcc/wide-int.h:686:19: error: no type named ‘result_type’ in ‘struct wi::unary_traits<generic_wide_int<wide_int_ref_storage<false> > >’
  686 |   UNARY_OPERATOR (operator -, neg)
      |                   ^~~~~~~~
../../gcc/gcc/wide-int.h:671:38: note: in definition of macro ‘UNARY_OPERATOR’
  671 |   WI_UNARY_RESULT (generic_wide_int) OP () const { return wi::F (*this); }
      |                                      ^~
../../gcc/gcc/wide-int.h:689:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_ref_storage<false> > >’ used in nested name specifier
  689 |   BINARY_OPERATOR (operator &, bit_and)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:690:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_ref_storage<false> > >’ used in nested name specifier
  690 |   BINARY_OPERATOR (and_not, bit_and_not)
      |                    ^~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:691:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_ref_storage<false> > >’ used in nested name specifier
  691 |   BINARY_OPERATOR (operator |, bit_or)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:692:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_ref_storage<false> > >’ used in nested name specifier
  692 |   BINARY_OPERATOR (or_not, bit_or_not)
      |                    ^~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:693:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_ref_storage<false> > >’ used in nested name specifier
  693 |   BINARY_OPERATOR (operator ^, bit_xor)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:694:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_ref_storage<false> > >’ used in nested name specifier
  694 |   BINARY_OPERATOR (operator +, add)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:695:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_ref_storage<false> > >’ used in nested name specifier
  695 |   BINARY_OPERATOR (operator -, sub)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:696:20: error: incomplete type ‘wi::int_traits<generic_wide_int<wide_int_ref_storage<false> > >’ used in nested name specifier
  696 |   BINARY_OPERATOR (operator *, mul)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:1152:10: error: too many template-parameter-lists
 1152 |   struct int_traits < fixed_wide_int_storage <N> >
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../gcc/gcc/wide-int.h:1244:42: error: invalid use of incomplete type ‘struct wi::int_traits<fixed_wide_int_storage<N> >’
 1244 | get_binary_result (const T1 &, const T2 &)
      |                                          ^
../../gcc/gcc/wide-int.h:349:32: note: declaration of ‘struct wi::int_traits<fixed_wide_int_storage<N> >’
  349 |   template <typename T> struct int_traits;
      |                                ^~~~~~~~~~
../../gcc/gcc/wide-int.h: In instantiation of ‘struct wi::unary_traits<generic_wide_int<trailing_wide_int_storage> >’:
../../gcc/gcc/wide-int.h:685:3:   required from ‘class generic_wide_int<trailing_wide_int_storage>’
../../gcc/gcc/wide-int.h:1378:56:   required from here
../../gcc/gcc/wide-int.h:362:10: error: incomplete type ‘wi::int_traits<generic_wide_int<trailing_wide_int_storage> >’ used in nested name specifier
  362 |   struct unary_traits : public binary_traits <T, T> {};
      |          ^~~~~~~~~~~~
../../gcc/gcc/wide-int.h: In instantiation of ‘class generic_wide_int<trailing_wide_int_storage>’:
../../gcc/gcc/wide-int.h:1378:56:   required from here
../../gcc/gcc/wide-int.h:685:19: error: no type named ‘result_type’ in ‘struct wi::unary_traits<generic_wide_int<trailing_wide_int_storage> >’
  685 |   UNARY_OPERATOR (operator ~, bit_not)
      |                   ^~~~~~~~
../../gcc/gcc/wide-int.h:671:38: note: in definition of macro ‘UNARY_OPERATOR’
  671 |   WI_UNARY_RESULT (generic_wide_int) OP () const { return wi::F (*this); }
      |                                      ^~
../../gcc/gcc/wide-int.h:686:19: error: no type named ‘result_type’ in ‘struct wi::unary_traits<generic_wide_int<trailing_wide_int_storage> >’
  686 |   UNARY_OPERATOR (operator -, neg)
      |                   ^~~~~~~~
../../gcc/gcc/wide-int.h:671:38: note: in definition of macro ‘UNARY_OPERATOR’
  671 |   WI_UNARY_RESULT (generic_wide_int) OP () const { return wi::F (*this); }
      |                                      ^~
../../gcc/gcc/wide-int.h:689:20: error: incomplete type ‘wi::int_traits<generic_wide_int<trailing_wide_int_storage> >’ used in nested name specifier
  689 |   BINARY_OPERATOR (operator &, bit_and)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:690:20: error: incomplete type ‘wi::int_traits<generic_wide_int<trailing_wide_int_storage> >’ used in nested name specifier
  690 |   BINARY_OPERATOR (and_not, bit_and_not)
      |                    ^~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:691:20: error: incomplete type ‘wi::int_traits<generic_wide_int<trailing_wide_int_storage> >’ used in nested name specifier
  691 |   BINARY_OPERATOR (operator |, bit_or)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:692:20: error: incomplete type ‘wi::int_traits<generic_wide_int<trailing_wide_int_storage> >’ used in nested name specifier
  692 |   BINARY_OPERATOR (or_not, bit_or_not)
      |                    ^~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:693:20: error: incomplete type ‘wi::int_traits<generic_wide_int<trailing_wide_int_storage> >’ used in nested name specifier
  693 |   BINARY_OPERATOR (operator ^, bit_xor)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:694:20: error: incomplete type ‘wi::int_traits<generic_wide_int<trailing_wide_int_storage> >’ used in nested name specifier
  694 |   BINARY_OPERATOR (operator +, add)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:695:20: error: incomplete type ‘wi::int_traits<generic_wide_int<trailing_wide_int_storage> >’ used in nested name specifier
  695 |   BINARY_OPERATOR (operator -, sub)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
../../gcc/gcc/wide-int.h:696:20: error: incomplete type ‘wi::int_traits<generic_wide_int<trailing_wide_int_storage> >’ used in nested name specifier
  696 |   BINARY_OPERATOR (operator *, mul)
      |                    ^~~~~~~~
../../gcc/gcc/wide-int.h:676:5: note: in definition of macro ‘BINARY_OPERATOR’
  676 |     OP (const T &c) const { return wi::F (*this, c); }
      |     ^~
In file included from ../../gcc/gcc/rtl.h:27,
                 from ../../gcc/gcc/genpreds.c:27:
../../gcc/gcc/vec.h: In instantiation of ‘bool vec<T, va_heap, vl_ptr>::reserve(unsigned int, bool) [with T = std::pair<unsigned int, const char*>]’:
../../gcc/gcc/vec.h:1537:3:   required from ‘T* vec<T, va_heap, vl_ptr>::safe_push(const T&) [with T = std::pair<unsigned int, const char*>]’
../../gcc/gcc/genpreds.c:1383:19:   required from here
../../gcc/gcc/vec.h:1431:14: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘struct std::pair<unsigned int, const char*>’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
 1431 |       memcpy (m_vec->address (), oldvec->address (), sizeof (T) * oldsize);
      |       ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/char_traits.h:39,
                 from /usr/include/c++/11/string:40,
                 from ../../gcc/gcc/system.h:201,
                 from ../../gcc/gcc/genpreds.c:24:
/usr/include/c++/11/bits/stl_pair.h:211:12: note: ‘struct std::pair<unsigned int, const char*>’ declared here
  211 |     struct pair
      |            ^~~~
make[3]: *** [Makefile:2422: build/genpreds.o] Error 1
make[3]: Leaving directory '/root/gcc-5.1/build/gcc'
make[2]: *** [Makefile:4380: all-stage1-gcc] Error 2
make[2]: Leaving directory '/root/gcc-5.1/build'
make[1]: *** [Makefile:25529: stage1-bubble] Error 2
make[1]: Leaving directory '/root/gcc-5.1/build'
make: *** [Makefile:911: all] Error 2

Creating Safety Critical Software with CompCert

Airbus employs the CompCert formally verified C compiler in the development of safety-critical avionics software. Specifically, at their Toulouse facility, Airbus has integrated CompCert into several projects, although the exact details of these projects remain undisclosed. https://www.absint.com/compcert/index.htm

The decision to adopt CompCert was driven by a need to enhance performance, particularly by reducing the Worst-Case Execution Time (WCET) of their software. A feasibility study conducted between 2012 and 2013 demonstrated that using CompCert led to a 12% improvement in WCET, surpassing their initial target of 11%. https://projects.laas.fr/IFSE/FMF/J3/slides/P05_Jean_Souyiris.pdf

By utilizing CompCert, Airbus benefits from the compiler’s formal verification, which mathematically ensures that the compiled code preserves the semantics of the source code. This level of assurance is crucial in the development of safety-critical systems, as it reduces the risk of miscompilation and enhances overall software reliability. https://www.absint.com/compcert/index.htm

Kats time series analysis in Python

Website: https://facebookresearch.github.io/Kats/

Kats is a toolkit to analyze time series data, a lightweight, easy-to-use, and generalizable framework to perform time series analysis. Time series analysis is an essential component of Data Science and Engineering work at industry, from understanding the key statistics and characteristics, detecting regressions and anomalies, to forecasting future trends. Kats aims to provide the one-stop shop for time series analysis, including detection, forecasting, feature extraction/embedding, multivariate analysis, etc. Kats is released by Facebook’s Infrastructure Data Science team. It is available for download on PyPI.

Doing Research: A New Researcher’s Guide

Free download: https://link.springer.com/chapter/10.1007/978-3-031-19078-0_2

This book is a practical guide for doing research written for beginning researchers. You might be a doctoral student just learning how to conduct research. Or, you might be a new faculty member, having recently graduated from a doctoral program and looking forward to conducting research as part of your job. Or, you might be a postdoctoral fellow pursuing a new research agenda.

Although the target audience is beginning researchers, we believe more experi
enced researchers will find something useful as well. Indeed, we were surprised by how much we learned writing this book. As we were searching for ways to present the ideas, we realized that many of the concepts and procedures we describe are less about learning a set of rules and more about reasoning through a complicated but logical process. And getting better at reasoning is a lifelong journey. So, if you are a beginning researcher or someone more experienced, we hope you will learn some thing new and reflect on your own reasoning about the research process.

We are mathematics educators, so we use examples from mathematics teaching and learning, but we believe the practical guidelines we recommend apply to most content areas and domains of educational research. There is nothing special about mathematics with regard to the logic of the research process we describe.

The book can be used as a supplemental textbook in a graduate-level research methods course, as a primary textbook in a course on conducting research in (mathematics) education, and as a self-study guide for individuals or small groups of researchers who want to review and reconsider the key elements of the research process. The book includes exercises designed to engage you in working through the processes we describe. The narrative is punctuated with tips for researchers and recommendations for other sources to consult along the way.

We encourage you to work through the study exercises. You will learn more than you would otherwise. In the exercises, you will be asked to respond to specific questions designed to help you make progress in planning and conducting your study, and in writing your report of the study. For some questions, we will ask you to update your responses as you read succeeding chapters. You will be asked to try out specific aspects of conducting your study as well as writing a paper based on your study, and to write out examples to illustrate and sharpen the ideas presented in the text.

Many books on research methods are created as reference books; you can learn about a particular aspect of research by selecting and reading particular pages. This book is different. It is more like a story that develops as each idea builds on what came before. Individual chapters or sections will not make much sense unless the book is read as a whole, from the beginning to the end.

We treat conducting a research study and writing a research report as mutually beneficial processes. Consequently, the book includes suggestions for writing alongside doing research. Writing can be used to help you think through research issues, make more explicit your own thinking, and push your thinking forward. Writing also is used to communicate your research study to others. We address writing for both purposes.

One advantage we had writing this book came from our experience as a former editorial team for one of the leading journals in mathematics education—the Journal for Research in Mathematics Education. A major benefit of this experience is knowing what reviewers are likely to say. You can expect to receive the kind of feedback we examined regardless of which journal is reviewing your paper. Which features of papers do reviewers like and which features cause problems? At key points in the book, we cite information from reviewers to give you an inside look at what is expected if you want to get your work published.

We intend this book to be easy to read but challenging to complete. We believe the basic principles for conducting research are logical and quite easy to understand, but we also know that doing research can be difficult and even intimidating, especially in enormously complex fields like education. We hope you find this book useful in managing this complexity and helpful in guiding you through the challenging but exciting and rewarding work of educational research

Writing Discussion for Scientific Paper

#1 critical writing section most students struggle with: Discussion

Follow this template (𝘸𝘪𝘵𝘩 𝘦𝘹𝘢𝘮𝘱𝘭𝘦𝘴) to make your life easier

—  Start with a Big Summary/ Importance Statement:
“𝘖𝘶𝘳 𝘳𝘦𝘴𝘶𝘭𝘵𝘴 𝘥𝘦𝘮𝘰𝘯𝘴𝘵𝘳𝘢𝘵𝘦 𝘢 𝘯𝘰𝘷𝘦𝘭 𝘮𝘦𝘤𝘩𝘢𝘯𝘪𝘴𝘮 𝘣𝘺 𝘸𝘩𝘪𝘤𝘩 𝘟 𝘪𝘯𝘧𝘭𝘶𝘦𝘯𝘤𝘦𝘴 𝘠, 𝘰𝘧𝘧𝘦𝘳𝘪𝘯𝘨 𝘯𝘦𝘸 𝘪𝘯𝘴𝘪𝘨𝘩𝘵𝘴 𝘪𝘯𝘵𝘰 𝘡.”

—  Link Findings to Previous Work:
“𝘜𝘯𝘭𝘪𝘬𝘦 𝘱𝘳𝘦𝘷𝘪𝘰𝘶𝘴 𝘴𝘵𝘶𝘥𝘪𝘦𝘴 𝘵𝘩𝘢𝘵 𝘴𝘶𝘨𝘨𝘦𝘴𝘵𝘦𝘥 𝘈, 𝘰𝘶𝘳 𝘧𝘪𝘯𝘥𝘪𝘯𝘨𝘴 𝘪𝘯𝘥𝘪𝘤𝘢𝘵𝘦 𝘉, 𝘩𝘪𝘨𝘩𝘭𝘪𝘨𝘩𝘵𝘪𝘯𝘨 𝘵𝘩𝘦 𝘳𝘰𝘭𝘦 𝘰𝘧 𝘊.”

—   Discuss the Scientific Implications:
“𝘛𝘩𝘦𝘴𝘦 𝘧𝘪𝘯𝘥𝘪𝘯𝘨𝘴 𝘴𝘶𝘨𝘨𝘦𝘴𝘵 𝘵𝘩𝘢𝘵 𝘮𝘢𝘪𝘯𝘵𝘢𝘪𝘯𝘪𝘯𝘨 𝘋 𝘤𝘰𝘶𝘭𝘥 𝘣𝘦 𝘤𝘳𝘶𝘤𝘪𝘢𝘭 𝘧𝘰𝘳 𝘌, 𝘱𝘳𝘰𝘷𝘪𝘥𝘪𝘯𝘨 𝘢 𝘯𝘦𝘸 𝘱𝘦𝘳𝘴𝘱𝘦𝘤𝘵𝘪𝘷𝘦 𝘰𝘯 𝘍.”

Original paper: Faith et al, “Identifying Gut Microbe–Host Phenotype Relationships Using Combinatorial Communities in Gnotobiotic Mice”, https://www.science.org/doi/10.1126/scitranslmed.3008051