On 5 Nov 2011, at 03:24, Jason Merrill wrote:

After my previous patch for 48370 which adds extend_ref_init_temps, it is straightforward to fix this issue as well by extending ref init mem-initializers to match the lifetime of 'this'.

Tested x86_64-pc-linux-gnu, applying to trunk.
commit 30ed5835a92df18afef71802b5fa95899ceca227
Author: Jason Merrill <ja...@redhat.com>
Date:   Fri Nov 4 14:59:20 2011 -0400

        PR c++/26714
        * init.c (perform_member_init): Strip TARGET_EXPR around NSDMI.
        Do temporary lifetime extension.

either this or the previous patch has broken (or exposed a problem which has broken) bootstrap on i686-darwin9 with:

libtool: compile: /GCC/gcc-4-7-trunk-build/./gcc/xgcc -shared-libgcc - B/GCC/gcc-4-7-trunk-build/./gcc -nostdinc++ -L/GCC/gcc-4-7-trunk-build/ i686-apple-darwin9/x86_64/libstdc++-v3/src -L/GCC/gcc-4-7-trunk-build/ i686-apple-darwin9/x86_64/libstdc++-v3/src/.libs -B/GCC/gcc-4-7- install/i686-apple-darwin9/bin/ -B/GCC/gcc-4-7-install/i686-apple- darwin9/lib/ -isystem /GCC/gcc-4-7-install/i686-apple-darwin9/include - isystem /GCC/gcc-4-7-install/i686-apple-darwin9/sys-include -m64 -I/ GCC/gcc-4-7-trunk-build/i686-apple-darwin9/x86_64/libstdc++-v3/include/ i686-apple-darwin9 -I/GCC/gcc-4-7-trunk-build/i686-apple-darwin9/ x86_64/libstdc++-v3/include -I/GCC/gcc-live-trunk/libstdc++-v3/libsupc+ + -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual - fdiagnostics-show-location=once -fvisibility-inlines-hidden -ffunction- sections -fdata-sections -frandom-seed=functexcept.lo -g -O2 -m64 - std=gnu++0x -c /GCC/gcc-live-trunk/libstdc++-v3/src/functexcept.cc - fno-common -DPIC -o .libs/functexcept.o In file included from /GCC/gcc-4-7-trunk-build/i686-apple-darwin9/ x86_64/libstdc++-v3/include/future:41:0, from /GCC/gcc-live-trunk/libstdc++-v3/src/ functexcept.cc:32: /GCC/gcc-4-7-trunk-build/i686-apple-darwin9/x86_64/libstdc++-v3/ include/thread:195:46: internal compiler error: Segmentation fault
Please submit a full bug report,

gdb:

GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: d5643d919cac033598d9277e144abbda

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0xa5a5a5a5
0x00443fca in build_stmt (loc=6644384, code=CLEANUP_STMT) at /GCC/gcc- live-trunk/gcc/c-family/c-semantics.c:124
124           if (t && !TYPE_P (t))
(gdb) bt
#0 0x00443fca in build_stmt (loc=6644384, code=CLEANUP_STMT) at /GCC/ gcc-live-trunk/gcc/c-family/c-semantics.c:124 #1 0x002da1f3 in push_cleanup (decl=0x2d36280, cleanup=0xa5a5a5a5, eh_only=0 '\0') at /GCC/gcc-live-trunk/gcc/cp/semantics.c:488 #2 0x00069fad in cp_finish_decl (decl=0x2d36280, init=0x428167b8, init_const_expr_p=0 '\0', asmspec_tree=0x0, flags=11) at /GCC/gcc-live- trunk/gcc/cp/decl.c:6320 #3 0x00223127 in cp_parser_init_declarator (parser=0x42827188, decl_specifiers=0xbfffe81c, checks=0x0, function_definition_allowed_p=1 '\001', member_p=0 '\0', declares_class_or_enum=0, function_definition_p=0xbfffe817 "", maybe_range_for_decl=0x0) at /GCC/gcc-live-trunk/gcc/cp/parser.c:15462 #4 0x00219e28 in cp_parser_simple_declaration (parser=0x42827188, function_definition_allowed_p=1 '\001', maybe_range_for_decl=0x0) at / GCC/gcc-live-trunk/gcc/cp/parser.c:10301 #5 0x00219c70 in cp_parser_block_declaration (parser=0x42827188, statement_p=0 '\0') at /GCC/gcc-live-trunk/gcc/cp/parser.c:10187 #6 0x00219a68 in cp_parser_declaration (parser=0x42827188) at /GCC/ gcc-live-trunk/gcc/cp/parser.c:10092 #7 0x002196dd in cp_parser_declaration_seq_opt (parser=0x42827188) at /GCC/gcc-live-trunk/gcc/cp/parser.c:9978 #8 0x00221c85 in cp_parser_namespace_body (parser=0x42827188) at /GCC/ gcc-live-trunk/gcc/cp/parser.c:14633 #9 0x00221c3b in cp_parser_namespace_definition (parser=0x42827188) at /GCC/gcc-live-trunk/gcc/cp/parser.c:14614 #10 0x002199b7 in cp_parser_declaration (parser=0x42827188) at /GCC/ gcc-live-trunk/gcc/cp/parser.c:10076 #11 0x002196dd in cp_parser_declaration_seq_opt (parser=0x42827188) at /GCC/gcc-live-trunk/gcc/cp/parser.c:9978 #12 0x0020c287 in cp_parser_translation_unit (parser=0x42827188) at / GCC/gcc-live-trunk/gcc/cp/parser.c:3739 #13 0x002416dc in c_parse_file () at /GCC/gcc-live-trunk/gcc/cp/ parser.c:26714 #14 0x0042edb3 in c_common_parse_file () at /GCC/gcc-live-trunk/gcc/c- family/c-opts.c:1122 #15 0x00e2a954 in compile_file () at /GCC/gcc-live-trunk/gcc/toplev.c: 565
#16 0x00e2d634 in do_compile () at /GCC/gcc-live-trunk/gcc/toplev.c:1930
#17 0x00e2d81d in toplev_main (argc=57, argv=0xbfffebe4) at /GCC/gcc- live-trunk/gcc/toplev.c:2006 #18 0x00458618 in main (argc=57, argv=0xbfffebe4) at /GCC/gcc-live- trunk/gcc/main.c:36

cheers
Iain

Reply via email to