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

Reply via email to