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

            Bug ID: 78312
           Summary: [7 Regression] wrong code probably due to VRP of
                    multiplication
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zsojka at seznam dot cz
  Target Milestone: ---
            Target: x86_64-pc-linux-gnu

Created attachment 40022
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40022&action=edit
reduced testcase

Output:
$ x86_64-pc-linux-gnu-gcc testcase.c -O2
$ ./a.out 
Aborted

$ x86_64-pc-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=/repo/gcc-trunk/binary-latest-amd64/bin/x86_64-pc-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/repo/gcc-trunk/binary-trunk-242046-checking-yes-rtl-df-extra-nographite-amd64/bin/../libexec/gcc/x86_64-pc-linux-gnu/7.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /repo/gcc-trunk//configure --enable-languages=c,c++
--enable-valgrind-annotations --disable-nls --enable-checking=yes,rtl,df,extra
--without-cloog --without-ppl --without-isl --build=x86_64-pc-linux-gnu
--host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu
--with-ld=/usr/bin/x86_64-pc-linux-gnu-ld
--with-as=/usr/bin/x86_64-pc-linux-gnu-as --disable-libstdcxx-pch
--prefix=/repo/gcc-trunk//binary-trunk-242046-checking-yes-rtl-df-extra-nographite-amd64
Thread model: posix
gcc version 7.0.0 20161110 (experimental) (GCC) 


The .vrp1 dump shows:
...
  # RANGE ~[1, 65534]
  _6 = _2 * _5;
  # RANGE [0, 1] NONZERO 1
  _7 = _6 * _6;
...

I believe that the code has defined behavior due to the (unsigned) cast.

Reply via email to