bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

FYI: c++: avoid GCC 8 warnings


From: Akim Demaille
Subject: FYI: c++: avoid GCC 8 warnings
Date: Wed, 15 Aug 2018 19:38:37 +0200

Installed in maint and master.

commit bd07c76b0abaa8bcd4f34435169cb1d4dbc8abd0
Author: Akim Demaille <address@hidden>
Date:   Wed Aug 15 18:35:46 2018 +0200

    c++: avoid GCC 8 warnings
    
    GCC 8 issues warnings whose root cause was a bit hard to find.
    
        calc.cc: In member function 'virtual int yy::parser::parse()':
        calc.cc:810:18: warning: '*((void*)&<anonymous> +8)' may be used 
uninitialized in this function [-Wmaybe-uninitialized]
             , location (l)
                          ^
        calc.cc: In member function 'void yy::parser::yypush_(const char*, 
yy::parser::stack_symbol_type&)':
        calc.cc:810:18: warning: '*((void*)&<anonymous> +8)' may be used 
uninitialized in this function [-Wmaybe-uninitialized]
             , location (l)
                          ^
        calc.cc: In member function 'void yy::parser::yypush_(const char*, 
yy::parser::state_type, yy::parser::symbol_type&)':
        calc.cc:810:18: warning: '*((void*)&<anonymous> +8)' may be used 
uninitialized in this function [-Wmaybe-uninitialized]
             , location (l)
                          ^
    
    The problem is with locations that don't have a constructor, such as
    Span (in calc.cc) which is POD.  It is POD on purpose: so that we can
    use that structure to test glr.cc which cannot use non POD in its
    (C) stacks.
    
    * data/c++.m4 (basic_symbol): Also ensure that 'location' is
    initialized.

diff --git a/data/c++.m4 b/data/c++.m4
index 3eca8009..90679345 100644
--- a/data/c++.m4
+++ b/data/c++.m4
@@ -296,7 +296,8 @@ m4_define([b4_public_types_define],
 
   // basic_symbol.
   template <typename Base>
-  ]b4_parser_class_name[::basic_symbol<Base>::basic_symbol ()
+  ]b4_parser_class_name[::basic_symbol<Base>::basic_symbol ()]b4_locations_if([
+    : location ()])[
   {}
 
   template <typename Base>
diff --git a/gnulib b/gnulib
index 8635df0a..dd1a129e 160000
--- a/gnulib
+++ b/gnulib
@@ -1 +1 @@
-Subproject commit 8635df0ac89e4b1e77322126ecff67e6bca62bd8
+Subproject commit dd1a129ef62d10b1eeb4b40ad39771b93f368cec




reply via email to

[Prev in Thread] Current Thread [Next in Thread]