ICE provoked by a lambda using the sizeof a captured stack-allocated array
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
gcc |
Fix Released
|
Medium
|
|||
gcc-4.8 (Ubuntu) |
Confirmed
|
Medium
|
Unassigned | ||
gcc-4.9 (Ubuntu) |
Confirmed
|
Medium
|
Unassigned |
Bug Description
See upstream report, http://
$ cat gcc-bug.cpp
int main() {
unsigned count = 5;
bool array[count];
[&array] () {
array[0] = sizeof(array) > 5;
}();
return 0;
}
$ g++ -Wall -Wextra --std=c++11 gcc-bug.cpp
gcc-bug.cpp: In lambda function:
gcc-bug.cpp:6:5: warning: ‘<anonymous>’ is used uninitialized in this function [-Wuninitialized]
}();
^
gcc-bug.cpp:3:21: note: ‘<anonymous>’ was declared here
bool array[count];
gcc-bug.cpp:6:5: internal compiler error: in expand_expr_real_1, at expr.c:9363
}();
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:/
Preprocessed source stored into /tmp/ccVaDFxq.out file, please attach this to your bugreport.
$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-
Thread model: posix
gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu9)
$ lsb_release -rd
Description: Ubuntu 13.10
Release: 13.10
$ apt-cache policy gcc-4.8
gcc-4.8:
Installed: 4.8.1-10ubuntu9
Candidate: 4.8.1-10ubuntu9
Version table:
*** 4.8.1-10ubuntu9 0
500 http://
100 /var/lib/
4.
500 http://
Changed in gcc-4.8 (Ubuntu): | |
importance: | Undecided → Medium |
status: | New → Confirmed |
Changed in gcc-4.9 (Ubuntu): | |
importance: | Undecided → Medium |
status: | New → Confirmed |
Changed in gcc: | |
importance: | Unknown → Medium |
status: | Unknown → Confirmed |
Changed in gcc: | |
status: | Confirmed → Fix Released |
Created attachment 32611
Preprocessed source
$ cat gcc-bug.cpp
int main() {
unsigned count = 5;
bool array[count];
[&array] () {
array[0] = sizeof(array) > 5;
}();
return 0;
}
$ g++ -Wall -Wextra --std=c++11 gcc-bug.cpp
^ //usr/share/ doc/gcc- 4.8/README. Bugs> for instructions.
gcc-bug.cpp: In lambda function:
gcc-bug.cpp:6:5: warning: ‘<anonymous>’ is used uninitialized in this function [-Wuninitialized]
}();
^
gcc-bug.cpp:3:21: note: ‘<anonymous>’ was declared here
bool array[count];
gcc-bug.cpp:6:5: internal compiler error: in expand_expr_real_1, at expr.c:9363
}();
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:/
Preprocessed source stored into /tmp/ccVaDFxq.out file, please attach this to your bugreport.
$ g++ -v LTO_WRAPPER= /usr/lib/ gcc/x86_ 64-linux- gnu/4.8/ lto-wrapper pkgversion= 'Ubuntu/ Linaro 4.8.1-10ubuntu9' --with- bugurl= file:// /usr/share/ doc/gcc- 4.8/README. Bugs --enable- languages= c,c++,java, go,d,fortran, objc,obj- c++ --prefix=/usr --program- suffix= -4.8 --enable-shared --enable- linker- build-id --libexecdir= /usr/lib --without- included- gettext --enable- threads= posix --with- gxx-include- dir=/usr/ include/ c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable- clocale= gnu --enable- libstdcxx- debug --enable- libstdcxx- time=yes --enable- gnu-unique- object --enable-plugin --with-system-zlib --disable- browser- plugin --enable- java-awt= gtk --enable-gtk-cairo --with- java-home= /usr/lib/ jvm/java- 1.5.0-gcj- 4.8-amd64/ jre --enable-java-home --with- jvm-root- dir=/usr/ lib/jvm/ java-1. 5.0-gcj- 4.8-amd64 --with- jvm-jar- dir=/usr/ lib/jvm- exports/ java-1. 5.0-gcj- 4.8-amd64 --with- arch-directory= amd64 --with- ecj-jar= /usr/share/ java/eclipse- ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with- multilib- list=m32, m64,mx32 --with-tune=generic --enable- checking= release --build= x86_64- linux-gnu --host= x86_64- linux-gnu --target= x86_64- linux-gnu
Using built-in specs.
COLLECT_GCC=g++
COLLECT_
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-
Thread model: posix
gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu9)
$ # Closest I could find by searching is http:// gcc.gnu. org/bugzilla/ show_bug. cgi?id= 56699.