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

            Bug ID: 113454
           Summary: [14 regression] "assignment of read-only member" error
                    with 483.xalancbmk from SPEC CPU 2006
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: macro at orcam dot me.uk
                CC: ppalka at gcc dot gnu.org
  Target Milestone: ---

Created attachment 57116
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=57116&action=edit
Reduced reproducer

As from commit 6e92a6a2a72d ("c++: non-dependent assignment checking
[PR63198, PR18474]") I get a compilation error when building 483.xalancbmk
from the SPEC CPU 2006 benchmarks suite:

./xercesc/util/NameIdPool.c: In member function
'xercesc_2_5::NameIdPoolEnumerator<TElem>&
xercesc_2_5::NameIdPoolEnumerator<TElem>::operator=(const
xercesc_2_5::NameIdPoolEnumerator<TElem>&)':
./xercesc/util/NameIdPool.c:416:20: error: assignment of read-only member
'xercesc_2_5::NameIdPoolEnumerator<TElem>::fMemoryManager'
  416 |     fMemoryManager = toAssign.fMemoryManager;
      |     ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~

For reference I have attached a reduced reproducer.  By reverting the
gcc/cp/typeck.cc part of said commit I can make this piece compile.

Now this is somewhat old code, which however used to build for at least 17
years.  Intuitively, given the `const' member annotation an assignment to
it outside a constructor is rightfully rejected, however my C++-fu is not
strong enough to back up such a claim and I can't find the relevant C++
language standard clause either way.  For several error situations we used
to accept we now provide respective `-Wno-error=' options, however this
case is not one of them.

Filing this bug then for the C++ experts to decide, and if nothing else for
posterity, so that the next person who comes across this build failure can
find it and save themselves from repeating my investigation.

Reply via email to