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

            Bug ID: 83235
           Summary: IAND sometimes doesn't take bitwise-and of sign bit
                    with -O2
           Product: gcc
           Version: 7.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: paul.k.romano at gmail dot com
  Target Milestone: ---

Created attachment 42760
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42760&action=edit
Minimal example of IAND bug

I ran into what appears to be a strange bug where the IAND intrinsic function
sometimes doesn't take the bitwise-and of the sign bit for 64-bit integers.
I've attached a MWE that demonstrates the bug, which can be reproduced by
compiling with -O2 or higher. The example writes the bit representation of two
64-bit integers and the result of taking IAND() on them and you can see that
the result of IAND doesn't handle the sign bit correctly. Several slight
changes seem to suppress the bug, e.g. having the second argument to IAND not
be and integer parameter and putting the body of foo in the main program.

I produced this bug using the default gcc from APT in Ubuntu 17.10, as follows:

Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.2.0-8ubuntu3'
--with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs
--enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr
--with-gcc-major-version-only --program-suffix=-7
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie
--with-system-zlib --with-target-system-zlib --enable-objc-gc=auto
--enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-offload-targets=nvptx-none --without-cuda-driver
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu
Thread model: posix
gcc version 7.2.0 (Ubuntu 7.2.0-8ubuntu3)

Reply via email to