diff --git a/README-hacking.md b/README-hacking.md index b5245bb9..10fba1fd 100644 --- a/README-hacking.md +++ b/README-hacking.md @@ -560,6 +560,26 @@ re-run the tests, run: make check +## Docker + +Running old compilers is not very easy. Docker can be used for some of +them. Have a look at .travis.yml for setups. Move the tarball in /tmp and +run, for instance: + +``` +docker run -v /tmp:/tmp -it ubuntu:xenial +``` + +### GCC 4.6 +On Ubuntu Xenial. + +``` +apt-get update +apt-get install software-properties-common +apt-add-repository -y "ppa:ubuntu-toolchain-r/test" +apt-get update +apt-get install -y gcc-4.6 g++-4.6 m4 make +``` Release Procedure ================= diff --git a/data/skeletons/c.m4 b/data/skeletons/c.m4 index c41db4d1..b3a63076 100644 --- a/data/skeletons/c.m4 +++ b/data/skeletons/c.m4 @@ -394,12 +394,18 @@ dnl use C' _Noreturn in C++, to avoid -Wc11-extensions warnings. # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else diff --git a/data/skeletons/glr2.cc b/data/skeletons/glr2.cc index 55dc3164..343489ab 100644 --- a/data/skeletons/glr2.cc +++ b/data/skeletons/glr2.cc @@ -2551,7 +2551,9 @@ public: if (yyflag == yyok) { yys->yyresolved = true; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN yys->semanticVal() = yysval; + YY_IGNORE_MAYBE_UNINITIALIZED_END } else yys->setFirstVal(YY_NULLPTR);