Public bug reported:

I have just encountered an "internal compiler error" while using gcc-7.

```cpp source code
#include <cstdio>

int main()
{
    int N = 100;
    int K = 100;
    int dp[N][2][K] = {0};
    printf("%d\n", dp[0][0][0]);
    return 0;
}
```

After executing 
  g++ test.cc
Output is 
  test.cc: In function ‘int main()’:
  test.cc:7:25: internal compiler error: in make_decl_rtl, at varasm.c:1310
       int dp[N][2][K] = {0};
                         ^
  Please submit a full bug report,
  with preprocessed source if appropriate.
  See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.

which is exectly same with these three options: "-std=c++11",
"-std=c++14", "-std=c++17".

With executing 
  g++ test.cc -std=c++98
the binary is produced normally.

With executing 
  g++ test.cc -std=c++98 -ansi -pedantic -Wextra -Werror
Output is 
  test.cc: In function ‘int main()’:
  test.cc:7:19: error: ISO C++ forbids variable length array ‘dp’ [-Werror=vla]
       int dp[N][2][K] = {0};
                   ^
  test.cc:7:19: error: ISO C++ forbids variable length array ‘dp’ [-Werror=vla]
  cc1plus: all warnings being treated as errors
which is expected.


According to my observation, this seems to be the issue related to the order of 
'N','2','K', 
if I write 
  int dp[N][K][2] = {0};
then everything is fine.


Here is my gcc version (gcc -v):

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 
7.5.0-3ubuntu1~18.04' --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 --enable-bootstrap --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.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) 


BTW, the preprocessed file 'test.ii' can be found in the 'Attachment' in case 
you need it.

** Affects: gcc-7 (Ubuntu)
     Importance: Undecided
         Status: New

** Attachment added: "test.ii"
   https://bugs.launchpad.net/bugs/1895372/+attachment/5410020/+files/test.ii

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1895372

Title:
  C++11 with GNU VLA extention results in ICE

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-7/+bug/1895372/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to