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).