]> git.saurik.com Git - bison.git/commitdiff
c++: use __attribute__((__pure__)) to avoid warnings
authorAkim Demaille <akim@lrde.epita.fr>
Wed, 23 Oct 2013 08:57:51 +0000 (10:57 +0200)
committerAkim Demaille <akim@lrde.epita.fr>
Tue, 5 Nov 2013 09:44:03 +0000 (10:44 +0100)
Building C++ parsers with -Wsuggest-attribute=const and
-Wsuggest-attribute=noreturn triggers warning in generated code.

* data/lalr1.cc: Call b4_attribute_define.
(debug_stream, debug_level): Flag as pure.
* tests/headers.at (Several parsers): There are now more YY macros
that "leak".

data/lalr1.cc
tests/headers.at

index a3784637c3bcbd4a97e830d8a4c226927962d9a0..cb61ebb77292e385222a4d535cdafe2d2c4ab384 100644 (file)
@@ -157,6 +157,7 @@ m4_define([b4_shared_declarations],
 ]b4_bison_locations_if([[# include "location.hh"]])])[
 ]b4_variant_if([b4_variant_includes])[
 
+]b4_attribute_define[
 ]b4_YYDEBUG_define[
 
 ]b4_namespace_open[
@@ -183,14 +184,14 @@ b4_location_define])])[
 
 #if ]b4_api_PREFIX[DEBUG
     /// The current debugging stream.
-    std::ostream& debug_stream () const;
+    std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
     /// Set the current debugging stream.
     void set_debug_stream (std::ostream &);
 
     /// Type for debugging levels.
     typedef int debug_level_type;
     /// The current debugging level.
-    debug_level_type debug_level () const;
+    debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
     /// Set the current debugging level.
     void set_debug_level (debug_level_type l);
 #endif
index 0ad7ef3eeeaa33168d727583d05465ea0f45a5a0..9b71c030d9eab39e8a5b6871584d7db09148266e 100644 (file)
@@ -223,7 +223,11 @@ AT_CHECK([[$PERL -n -0777 -e '
   s{/\*.*?\*/}{}gs;
   s{//.*}{}g;
   s{\b(YYChar
-      |YYPUSH_MORE(_DEFINED)?
+      |YYPUSH_MORE(?:_DEFINED)?
+      |YYUSE
+      |YY_ATTRIBUTE(?:_PURE|_UNUSED)?
+      |YY_IGNORE_MAYBE_UNINITIALIZED_(?:BEGIN|END)
+      |YY_INITIAL_VALUE
       |YY_\w+_INCLUDED
       |YY_NULL
       |(defined|if)\ YYDEBUG