https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77493
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC|rguenther at suse dot de |rguenth at gcc dot
gnu.org
Target Milestone|--- |6.3
Summary|[6 Regression] |[6/7 Regression]
|-fcrossjumping (-O2) on |-fcrossjumping (-O2) on
|ppc64le causes segfaults |ppc64le causes segfaults
|(jump to 0x0) (first bad |(jump to 0x0) (first bad
|r230091) |r230091)
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
The bisection result is odd as that only changes vectorization (whether it
happens or not), and vectorization is _not_ enabled at -O2.
The attached assembly doesn't contain Chi2MeasurementEstimator::estimate as far
as I can see.
Note that doing
165 #pragma GCC push_options
166 #pragma GCC optimize ("no-crossjumping")
167
168 T & operator*() const
169 {
170 BOOST_ASSERT( px != 0 );
171 return *px;
172 }
173
174 #pragma GCC pop_options
probably has no effect on the operator itself but it prevents inlining it.
Are BOOST_ASSERT assertions enabled? Can you enable them _and_ compile
with -fno-delete-null-pointer-checks?
Btw, another not mentioned issue people hit with GCC 6 (see also
https://gcc.gnu.org/gcc-6/porting_to.html) is dead code elimination around
constructors/destructors. Use -flifetime-dse=1 to restore GCC 5 behavior
(or -fno-lifetime-dse to pre-GCC 5 behavior).