mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 17:53:02 +00:00
c++: please G++ 4.8 with -O3: array bounds
* data/c++.m4, data/lalr1.cc (by_state, by_type): Do not use -1 to denote the absence of value, as GCC then fears that this -1 might be used to dereference arrays (such as yytname). Use 0, which corresponds to $accept, which is valueless (the needed property: the symbol destructor must not try to reclaim the memory associated with the symbol).
This commit is contained in:
@@ -231,6 +231,8 @@ m4_define([b4_public_types_declare],
|
|||||||
/// The token.
|
/// The token.
|
||||||
token_type token () const;
|
token_type token () const;
|
||||||
|
|
||||||
|
enum { empty = 0 };
|
||||||
|
|
||||||
/// The symbol type.
|
/// The symbol type.
|
||||||
///
|
///
|
||||||
/// -1 when this symbol is empty.
|
/// -1 when this symbol is empty.
|
||||||
@@ -328,7 +330,7 @@ m4_define([b4_public_types_define],
|
|||||||
// by_type.
|
// by_type.
|
||||||
inline
|
inline
|
||||||
]b4_parser_class_name[::by_type::by_type ()
|
]b4_parser_class_name[::by_type::by_type ()
|
||||||
: type (-1)
|
: type (empty)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
@@ -346,7 +348,7 @@ m4_define([b4_public_types_define],
|
|||||||
]b4_parser_class_name[::by_type::move (by_type& that)
|
]b4_parser_class_name[::by_type::move (by_type& that)
|
||||||
{
|
{
|
||||||
type = that.type;
|
type = that.type;
|
||||||
that.type = -1;
|
that.type = empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
|
|||||||
@@ -284,9 +284,11 @@ b4_location_define])])[
|
|||||||
void move (by_state& that);
|
void move (by_state& that);
|
||||||
|
|
||||||
/// The (internal) type number (corresponding to \a state).
|
/// The (internal) type number (corresponding to \a state).
|
||||||
/// -1 when empty.
|
/// "empty" when empty.
|
||||||
symbol_number_type type_get () const;
|
symbol_number_type type_get () const;
|
||||||
|
|
||||||
|
enum { empty = 0 };
|
||||||
|
|
||||||
/// The state.
|
/// The state.
|
||||||
state_type state;
|
state_type state;
|
||||||
};
|
};
|
||||||
@@ -523,7 +525,7 @@ m4_if(b4_prefix, [yy], [],
|
|||||||
// by_state.
|
// by_state.
|
||||||
inline
|
inline
|
||||||
]b4_parser_class_name[::by_state::by_state ()
|
]b4_parser_class_name[::by_state::by_state ()
|
||||||
: state (-1)
|
: state (empty)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
@@ -536,7 +538,7 @@ m4_if(b4_prefix, [yy], [],
|
|||||||
]b4_parser_class_name[::by_state::move (by_state& that)
|
]b4_parser_class_name[::by_state::move (by_state& that)
|
||||||
{
|
{
|
||||||
state = that.state;
|
state = that.state;
|
||||||
that.state = -1;
|
that.state = empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
@@ -548,7 +550,7 @@ m4_if(b4_prefix, [yy], [],
|
|||||||
]b4_parser_class_name[::symbol_number_type
|
]b4_parser_class_name[::symbol_number_type
|
||||||
]b4_parser_class_name[::by_state::type_get () const
|
]b4_parser_class_name[::by_state::type_get () const
|
||||||
{
|
{
|
||||||
return state == -1 ? -1 : yystos_[state];
|
return state == empty ? 0 : yystos_[state];
|
||||||
}
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
@@ -564,7 +566,7 @@ m4_if(b4_prefix, [yy], [],
|
|||||||
[value], [move], [that.value])],
|
[value], [move], [that.value])],
|
||||||
[[value = that.value;]])[
|
[[value = that.value;]])[
|
||||||
// that is emptied.
|
// that is emptied.
|
||||||
that.type = -1;
|
that.type = empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
|
|||||||
Reference in New Issue
Block a user