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

            Bug ID: 95665
           Summary: memory access error on passing additional parameters
                    to Int128
           Product: gcc
           Version: 8.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: estellnb at elstel dot org
  Target Milestone: ---

Created attachment 48725
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48725&action=edit
types.tar.bz2

I have programmed a library for calculating with WIdeInts witgh gcc 8.3.0-6,
Debian Stable. When I started to use the library an opertor (>>) suddenly
returned a wrong result (>> was ignored; result as would be without shifting).
For that program replacing (wi>>2)*3 by wi>>=2 and wi*=3 has helped. However I
then tried to isolate the problem into a test case and it showed that the
additional parameters passed to the procedure calling (wi>>2)*3 caused the
memory access problem. The test program does not return a wrong result but it
crashes with a memory access error. Replacing by wi>>=2, wi*=3 did not help
here. It always crashes as soon as the full parameter list is used. I had tried
to debug the problem and inserting some printf-statements made the values
inside the >> oeprator to be retrieved correctly though the result was still
lost. Another time it returned zero as if that would have been passed as
parameter instead of 32. I currently do not dare to use that WideInt
implementation as it seems to trigger some gcc compiler error.

sample program: test_int128.cpp (only a very few lines)
library: types.h

Reply via email to