https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87288

            Bug ID: 87288
           Summary: Segfault after const_cast with "-O2
                    -ftree-loop-vectorize" but _without_ "-mavx"
           Product: gcc
           Version: 8.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jorrit at jorrit dot de
  Target Milestone: ---

Created attachment 44682
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44682&action=edit
Test case

The attached test case segfaults when compiled as
  /usr/bin/g++-8 -O2 -ftree-loop-vectorize -o test-cornerstoragerefwrap-fail
test.ii
It exits successfully when compiled with either
  /usr/bin/g++-8 -O2 -ftree-loop-vectorize -mavx -o
test-cornerstoragerefwrap-pass test.ii
  /usr/bin/g++-8 -O2 -o test-cornerstoragerefwrap-pass test.ii

The const_cast in the test case came out of std::array (in the _S_ref() that is
called by operator[]).

The segfault occurs with
- g++-8 (Debian 8.2.0-4) 8.2.0 from Debian buster
  (registry.dune-project.org/docker/ci/debian:10)
- g++ (GCC) 8.1.0 from Coliru (except that I can't test -mavx there), see
  http://coliru.stacked-crooked.com/a/43b736434d1b2e15

The segfault does not occur with
- g++ (GCC) 7.3.0 from gcc:7.3.0 on hub.docker.com
- g++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516 from Debian stretch

This was reduced from test-cornerstoragerefwrap.cc in dune-geometry.  The issue
seemed to start when the CI system upgraded from g++ 8.1 to 8.2, though the
fact that that 8.1.0 above also produces the segfault makes me doubt that the
reduced issue and the original issue are the same.  Ref
https://gitlab.dune-project.org/core/dune-geometry/issues/19 (maybe next week
when that bugtracker is operational again)

Reply via email to