http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56014
Bug #: 56014 Summary: [C++1y] Return type deduction for member functions does not work when -g is enabled Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: jogoja...@gmail.com Created attachment 29187 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29187 Preprocessed file GCC version: Snapshot 4.8-20130113 (built from source) System: Linux diogenes 3.6.11-1.fc17.x86_64 C++1y implements return type deduction for functions (i.e. without trailing return type). This does not work when the following two conditions are satisfied: - The function is a member function (static or non-static) - *and* the -g option is used Example: #include <iostream> struct Elem { static auto test() { return 12; } }; int main() { std::cout << Elem::test() << std::endl; return 0; } When compiling this code using `g++ --std=c++1y -g -o test ./test.cpp`, the following error is displayed: ./test.cpp:3:8: internal compiler error: in gen_type_die_with_usage, at dwarf2out.c:19477 struct Elem ^ 0x813d06 gen_type_die_with_usage ../../gdc/gcc-4.8-20130106/gcc/dwarf2out.c:19477 0x810c25 gen_decl_die ../../gdc/gcc-4.8-20130106/gcc/dwarf2out.c:19971 0x812afc gen_member_die ../../gdc/gcc-4.8-20130106/gcc/dwarf2out.c:19037 0x812afc gen_struct_or_union_type_die ../../gdc/gcc-4.8-20130106/gcc/dwarf2out.c:19110 0x812afc gen_tagged_type_die ../../gdc/gcc-4.8-20130106/gcc/dwarf2out.c:19300 0x813ced gen_type_die_with_usage ../../gdc/gcc-4.8-20130106/gcc/dwarf2out.c:19447 0x810e6a gen_decl_die ../../gdc/gcc-4.8-20130106/gcc/dwarf2out.c:20010 0x9deed2 rest_of_type_compilation(tree_node*, int) ../../gdc/gcc-4.8-20130106/gcc/passes.c:217 0x5c7c0d finish_struct_1(tree_node*) ../../gdc/gcc-4.8-20130106/gcc/cp/class.c:6390 0x5c90cc finish_struct(tree_node*, tree_node*) ../../gdc/gcc-4.8-20130106/gcc/cp/class.c:6555 0x5f71be cp_parser_class_specifier_1 ../../gdc/gcc-4.8-20130106/gcc/cp/parser.c:18245 0x5f71be cp_parser_class_specifier ../../gdc/gcc-4.8-20130106/gcc/cp/parser.c:18453 0x5f71be cp_parser_type_specifier ../../gdc/gcc-4.8-20130106/gcc/cp/parser.c:13568 0x60e2cd cp_parser_decl_specifier_seq ../../gdc/gcc-4.8-20130106/gcc/cp/parser.c:10895 0x611ce9 cp_parser_simple_declaration ../../gdc/gcc-4.8-20130106/gcc/cp/parser.c:10494 0x613c60 cp_parser_block_declaration ../../gdc/gcc-4.8-20130106/gcc/cp/parser.c:10443 0x61c84b cp_parser_declaration ../../gdc/gcc-4.8-20130106/gcc/cp/parser.c:10340 0x61b51d cp_parser_declaration_seq_opt ../../gdc/gcc-4.8-20130106/gcc/cp/parser.c:10226 0x61cdc2 cp_parser_translation_unit ../../gdc/gcc-4.8-20130106/gcc/cp/parser.c:3808 0x61cdc2 c_parse_file() ../../gdc/gcc-4.8-20130106/gcc/cp/parser.c:28175 Please submit a full bug report, The error also occurs when the function is non-static. It does *not* occur, however, when '-g' isn't used, or when the function is not a member function.