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