[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FYI: master: c++: fix GCC8 warnings about uninitialized values
From: |
Akim Demaille |
Subject: |
FYI: master: c++: fix GCC8 warnings about uninitialized values |
Date: |
Wed, 15 Aug 2018 20:24:07 +0200 |
Installed in master. I still have warning in some other
tests, but I’m unsure how to fix them.
commit 5a240e35e051c9c551a4ff0cd6b75670d3d0fce3
Author: Akim Demaille <address@hidden>
Date: Wed Aug 15 15:19:25 2018 +0200
c++: fix GCC8 warnings about uninitialized values
In 0931d14728fb4a2272399f2c927ae78e2607b4fb I removed too many
initializations from some ctors: some were not about base ctors, but
about member variables. In fact, more of them were missing to please
GCC 8.
While at it, generate more natural code for C++ without variant:
instead of
template <typename Base>
parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
: Base (other)
, value ()
{
value = other.value
}
generate
template <typename Base>
parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
: Base (other)
, value (other.value)
{}
* data/c++.m4 (basic_symbol::basic_symbol): Always initialize 'value',
it might be a POD without a ctor.
* data/lalr1.cc (stack_symbol_type::stack_symbol_type): Likewise.
* data/variant.hh (variant::variant): Default initialize the buffer too.
diff --git a/data/c++.m4 b/data/c++.m4
index 90679345..396d8613 100644
--- a/data/c++.m4
+++ b/data/c++.m4
@@ -296,18 +296,19 @@ m4_define([b4_public_types_define],
// basic_symbol.
template <typename Base>
- ]b4_parser_class_name[::basic_symbol<Base>::basic_symbol ()]b4_locations_if([
- : location ()])[
+ ]b4_parser_class_name[::basic_symbol<Base>::basic_symbol ()
+ : value ()]b4_locations_if([
+ , location ()])[
{}
template <typename Base>
]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (const
basic_symbol& other)
- : Base (other)]b4_locations_if([
+ : Base (other)
+ , value (]b4_variant_if([], [other.value])[)]b4_locations_if([
, location (other.location)])[
- {
- ]b4_variant_if([b4_symbol_variant([other.type_get ()], [value], [copy],
- [other.value])],
- [value = other.value;])[
+ {]b4_variant_if([
+ b4_symbol_variant([other.type_get ()], [value], [copy],
+ [other.value])])[
}
template <typename Base>
@@ -330,7 +331,8 @@ m4_define([b4_public_types_define],
]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (]b4_join(
[typename Base::kind_type t],
b4_locations_if([const location_type& l]))[)
- : Base (t)]b4_locations_if([
+ : Base (t)
+ , value ()]b4_locations_if([
, location (l)])[
{}]])[
diff --git a/data/lalr1.cc b/data/lalr1.cc
index 2c99aacf..053875de 100644
--- a/data/lalr1.cc
+++ b/data/lalr1.cc
@@ -574,11 +574,10 @@ m4_if(b4_prefix, [yy], [],
{}
]b4_parser_class_name[::stack_symbol_type::stack_symbol_type (state_type s,
symbol_type& that)
- : super_type (s]b4_locations_if([, that.location])[)
- {
- ]b4_variant_if([b4_symbol_variant([that.type_get ()],
- [value], [move], [that.value])],
- [[value = that.value;]])[
+ : super_type (s]b4_variant_if([], [, that.value])[]b4_locations_if([,
that.location])[)
+ {]b4_variant_if([
+ b4_symbol_variant([that.type_get ()],
+ [value], [move], [that.value])])[
// that is emptied.
that.type = empty_symbol;
}
diff --git a/data/variant.hh b/data/variant.hh
index 990d14d2..1ffc5b26 100644
--- a/data/variant.hh
+++ b/data/variant.hh
@@ -94,8 +94,9 @@ m4_define([b4_variant_define],
typedef variant<S> self_type;
/// Empty construction.
- variant ()]b4_parse_assert_if([
- : yytypeid_ (YY_NULLPTR)])[
+ variant ()
+ : yybuffer_ ()]b4_parse_assert_if([
+ , yytypeid_ (YY_NULLPTR)])[
{}
/// Construct and fill.
- FYI: master: c++: fix GCC8 warnings about uninitialized values,
Akim Demaille <=
- Re: FYI: master: c++: fix GCC8 warnings about uninitialized values, Akim Demaille, 2018/08/17
- Re: FYI: master: c++: fix GCC8 warnings about uninitialized values, Paul Eggert, 2018/08/17
- Re: FYI: master: c++: fix GCC8 warnings about uninitialized values, Akim Demaille, 2018/08/17
- Re: FYI: master: c++: fix GCC8 warnings about uninitialized values, Paul Eggert, 2018/08/18
- Re: FYI: master: c++: fix GCC8 warnings about uninitialized values, Akim Demaille, 2018/08/19
- Re: FYI: master: c++: fix GCC8 warnings about uninitialized values, Akim Demaille, 2018/08/19
- Re: FYI: master: c++: fix GCC8 warnings about uninitialized values, Paul Eggert, 2018/08/19
- Re: FYI: master: c++: fix GCC8 warnings about uninitialized values, Akim Demaille, 2018/08/19
- Re: FYI: master: c++: fix GCC8 warnings about uninitialized values, Akim Demaille, 2018/08/23