Bug 67831 - Internal error on complicated constexpr initialization.
Summary: Internal error on complicated constexpr initialization.
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.9.3
: P3 normal
Target Milestone: 6.0
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-10-03 09:10 UTC by Tamás Seller
Modified: 2017-10-17 09:09 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail: 6.0
Last reconfirmed: 2015-10-03 00:00:00


Attachments
Preprocessed source (3.09 KB, text/plain)
2015-10-03 09:10 UTC, Tamás Seller
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tamás Seller 2015-10-03 09:10:05 UTC
Created attachment 36440 [details]
Preprocessed source

tools/gcc-arm-none-eabi-4_9-2015q1/bin/arm-none-eabi-g++ -MT .obj/main.cpp.o -MMD -MP -MF .obj/main.Td -c -DDEVELOPER_VERSION -Iinclude -Wno-unused -g3 -O0 -std=c++11 -fno-exceptions -save-temps -v src/main.cpp -o .obj/main.cpp.o
Using built-in specs.
COLLECT_GCC=tools/gcc-arm-none-eabi-4_9-2015q1/bin/arm-none-eabi-g++
Target: arm-none-eabi
Configured with: /home/build/work/GCC-4-9-build/src/gcc/configure --target=arm-none-eabi --prefix=/home/build/work/GCC-4-9-build/install-native --libexecdir=/home/build/work/GCC-4-9-build/install-native/lib --infodir=/home/build/work/GCC-4-9-build/install-native/share/doc/gcc-arm-none-eabi/info --mandir=/home/build/work/GCC-4-9-build/install-native/share/doc/gcc-arm-none-eabi/man --htmldir=/home/build/work/GCC-4-9-build/install-native/share/doc/gcc-arm-none-eabi/html --pdfdir=/home/build/work/GCC-4-9-build/install-native/share/doc/gcc-arm-none-eabi/pdf --enable-languages=c,c++ --enable-plugins --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-newlib --with-headers=yes --with-python-dir=share/gcc-arm-none-eabi --with-sysroot=/home/build/work/GCC-4-9-build/install-native/arm-none-eabi --build=i686-linux-gnu --host=i686-linux-gnu --with-gmp=/home/build/work/GCC-4-9-build/build-native/host-libs/usr --with-mpfr=/home/build/work/GCC-4-9-build/build-native/host-libs/usr --with-mpc=/home/build/work/GCC-4-9-build/build-native/host-libs/usr --with-isl=/home/build/work/GCC-4-9-build/build-native/host-libs/usr --with-cloog=/home/build/work/GCC-4-9-build/build-native/host-libs/usr --with-libelf=/home/build/work/GCC-4-9-build/build-native/host-libs/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Tools for ARM Embedded Processors' --with-multilib-list=armv6-m,armv7-m,armv7e-m,cortex-m7,armv7-r
Thread model: single
gcc version 4.9.3 20150303 (release) [ARM/embedded-4_9-branch revision 221220] (GNU Tools for ARM Embedded Processors) 
COLLECT_GCC_OPTIONS='-MT' '.obj/main.cpp.o' '-MMD' '-MP' '-MF' '.obj/main.Td' '-c' '-D' 'DEVELOPER_VERSION' '-I' 'include' '-Wno-unused' '-g3' '-O0' '-std=c++11' '-fno-exceptions' '-save-temps' '-v' '-o' '.obj/main.cpp.o'
 /home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/arm-none-eabi/4.9.3/cc1plus -E -quiet -v -I include -iprefix /home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/arm-none-eabi/4.9.3/ -isysroot /home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../arm-none-eabi -MMD .obj/main.cpp.d -MF .obj/main.Td -MP -MT .obj/main.cpp.o -dD -D__USES_INITFINI__ -D DEVELOPER_VERSION src/main.cpp -std=c++11 -Wno-unused -fno-exceptions -g3 -fworking-directory -O0 -fpch-preprocess -o main.ii
ignoring duplicate directory "/home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/include/c++/4.9.3"
ignoring duplicate directory "/home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/include/c++/4.9.3/arm-none-eabi"
ignoring duplicate directory "/home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/include/c++/4.9.3/backward"
ignoring duplicate directory "/home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/4.9.3/include"
ignoring nonexistent directory "/home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../arm-none-eabi/usr/local/include"
ignoring duplicate directory "/home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/4.9.3/include-fixed"
ignoring duplicate directory "/home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/include"
ignoring nonexistent directory "/home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../arm-none-eabi/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 include
 /home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/include/c++/4.9.3
 /home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/include/c++/4.9.3/arm-none-eabi
 /home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/include/c++/4.9.3/backward
 /home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/arm-none-eabi/4.9.3/include
 /home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/arm-none-eabi/4.9.3/include-fixed
 /home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/include
End of search list.
COLLECT_GCC_OPTIONS='-MT' '.obj/main.cpp.o' '-MMD' '-MP' '-MF' '.obj/main.Td' '-c' '-D' 'DEVELOPER_VERSION' '-I' 'include' '-Wno-unused' '-g3' '-O0' '-std=c++11' '-fno-exceptions' '-save-temps' '-v' '-o' '.obj/main.cpp.o'
 /home/tooma/proj/cnc/fw/nstm32f4/tools/gcc-arm-none-eabi-4_9-2015q1/bin/../lib/gcc/arm-none-eabi/4.9.3/cc1plus -fpreprocessed main.ii -quiet -dumpbase main.cpp -auxbase-strip .obj/main.cpp.o -g3 -O0 -Wno-unused -std=c++11 -version -fno-exceptions -o main.s
GNU C++ (GNU Tools for ARM Embedded Processors) version 4.9.3 20150303 (release) [ARM/embedded-4_9-branch revision 221220] (arm-none-eabi)
	compiled by GNU C version 4.7.4, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C++ (GNU Tools for ARM Embedded Processors) version 4.9.3 20150303 (release) [ARM/embedded-4_9-branch revision 221220] (arm-none-eabi)
	compiled by GNU C version 4.7.4, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 67ffeb4f308275707e0820985f703a94
src/main.cpp: In function 'void __static_initialization_and_destruction_0(int, int)':
src/main.cpp:17:12: internal compiler error: in make_decl_rtl, at varasm.c:1223
 const Task tasks[] = {
Comment 1 Mikhail Maltsev 2015-10-03 10:13:38 UTC
This also reproduces on x86_64 trunk. Probably related to PR 67398.

$ cat main2.cc
struct Task {
  struct TaskStaticData {
    constexpr TaskStaticData() {}
  } const &tsd;
  constexpr Task() : tsd(TaskStaticData()) {}
};

Task tasks{Task()};

$ cc1plus main2.cc 
main2.cc: In function 'void __static_initialization_and_destruction_0(int, int)':
main2.cc:8:6: internal compiler error: in make_decl_rtl, at varasm.c:1306
 Task tasks{Task()};
      ^
0xf5c1d5 make_decl_rtl(tree_node*)
        /home/miyuki/gcc/src/gcc/varasm.c:1302
0x9d4378 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        /home/miyuki/gcc/src/gcc/expr.c:9550
0x9de576 expand_expr
        /home/miyuki/gcc/src/gcc/expr.h:255
0x9de576 expand_expr_addr_expr_1
        /home/miyuki/gcc/src/gcc/expr.c:7601
0x9d2931 expand_expr_addr_expr
        /home/miyuki/gcc/src/gcc/expr.c:7721
0x9d2931 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        /home/miyuki/gcc/src/gcc/expr.c:10709
0x9df24f store_expr_with_bounds(tree_node*, rtx_def*, int, bool, tree_node*)
        /home/miyuki/gcc/src/gcc/expr.c:5399
0x9e1825 expand_assignment(tree_node*, tree_node*, bool)
        /home/miyuki/gcc/src/gcc/expr.c:5171
0x8d3358 expand_gimple_stmt_1
        /home/miyuki/gcc/src/gcc/cfgexpand.c:3584
0x8d3358 expand_gimple_stmt
        /home/miyuki/gcc/src/gcc/cfgexpand.c:3680
0x8d5906 expand_gimple_basic_block
        /home/miyuki/gcc/src/gcc/cfgexpand.c:5684
0x8dbee6 execute
        /home/miyuki/gcc/src/gcc/cfgexpand.c:6296
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

clang++ -S -std=c++11 main2.cc 
main2.cc:5:26: warning: binding reference member 'tsd' to a temporary value [-Wdangling-field]
  constexpr Task() : tsd(TaskStaticData()) {}
                         ^~~~~~~~~~~~~~~~
main2.cc:4:12: note: reference member declared here
  } const &tsd;
           ^
1 warning generated.
Comment 2 paolo@gcc.gnu.org 2017-10-17 09:07:25 UTC
Author: paolo
Date: Tue Oct 17 09:06:53 2017
New Revision: 253807

URL: https://gcc.gnu.org/viewcvs?rev=253807&root=gcc&view=rev
Log:
2017-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/67831
	* g++.dg/cpp0x/constexpr-ice18.C: New.

Added:
    trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-ice18.C
Modified:
    trunk/gcc/testsuite/ChangeLog
Comment 3 Paolo Carlini 2017-10-17 09:09:09 UTC
Fixed for 6.1.0.