This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

small testcase gcc6 + boost optional + Wmaybe-uninit


Web search shows that -Wmaybe-uninitialized is an imprecise check, and  that boost::optional is already a known sore spot, but I wanted to pass  along this small test case in case the warning's owner wanted to do  further improvements.  We solved our one grumpy instance with auto x =  make_optional(0, ...);.  Something about the loop + conditional +  O1/O2/O3 optimization triggers the false positive.  Thanks!   -Jason

//==============================================================================
// g++ -c sample.cc -O2 -Wall -Werror
// gcc 6.1/6.2 and boost 1.61/1.62
#include <stdio.h>
#include <boost/optional/optional.hpp>
int main() {
  boost::optional<int> value;
  for (int x(0); x < 3; ++x) {
    if (random() & 1)
      value = x;
  }
  if (value != boost::none) {
    int result = value.get();
    printf("%d\n", result); // error: '*((void*)& value +4)' may be used uninitialized
  }
}
//==============================================================================


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]