summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkim Demaille <akim@lrde.epita.fr>2013-10-23 10:57:51 +0200
committerAkim Demaille <akim@lrde.epita.fr>2013-11-05 10:44:03 +0100
commitad9d4f9f2e5b74c1306b8d2f6227f37a59832069 (patch)
treef444d0d43cabccf17a6f91a5dab8f130a085cda3
parent3cc83855d988a89d708c182aff917cac21d9c6f2 (diff)
downloadbison-ad9d4f9f2e5b74c1306b8d2f6227f37a59832069.tar.gz
c++: use __attribute__((__pure__)) to avoid warnings
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".
-rw-r--r--data/lalr1.cc5
-rw-r--r--tests/headers.at6
2 files changed, 8 insertions, 3 deletions
diff --git a/data/lalr1.cc b/data/lalr1.cc
index a3784637..cb61ebb7 100644
--- a/data/lalr1.cc
+++ b/data/lalr1.cc
@@ -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
diff --git a/tests/headers.at b/tests/headers.at
index 0ad7ef3e..9b71c030 100644
--- a/tests/headers.at
+++ b/tests/headers.at
@@ -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