On Thu, Sep 20, 2012 at 11:46 AM, Dehao Chen <de...@google.com> wrote: > Sure, I'll look into this problem today. > > Thanks, > Dehao > > On Fri, Sep 21, 2012 at 2:25 AM, Ian Lance Taylor <i...@google.com> wrote: >> Hi Dehao, I suspect that your recent patch changing block handling has >> broken bootstrap with --enable-languages=go. I reduced the test case >> to this C++ code: >> >> #include <string> >> >> std::string >> f(bool is_string, bool is_constant) >> { >> if (is_string) >> { >> std::string left_string; >> std::string right_string; >> if (is_constant) >> { >> return left_string + right_string; >> } >> } >> >> return ""; >> } >> >> When I compile that with current mainline with -O -g I get a crash >> (the backtrace is a local patch of mine): >> >> foo.cc: In function ‘std::string f(bool, bool)’: >> foo.cc:17:1: internal compiler error: tree check: expected block, have >> function_decl in change_scope, at final.c:1544 >> } >> ^ >> 0xe388bd tree_check_failed(tree_node const*, char const*, int, char const*, >> ...) >> ../../trunk/gcc/tree.c:8892 >> 0x50c495 tree_check(tree_node*, char const*, int, char const*, tree_code) >> ../../trunk/gcc/tree.h:3659 >> 0x9372a1 change_scope >> ../../trunk/gcc/final.c:1544 >> 0x937646 reemit_insn_block_notes >> ../../trunk/gcc/final.c:1613 >> 0x937822 final_start_function(rtx_def*, _IO_FILE*, int) >> ../../trunk/gcc/final.c:1670 >> 0x93c6ad rest_of_handle_final >> ../../trunk/gcc/final.c:4291 >> 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. >> >> >> At first glance the bug is that the block obtained from insn_scope >> (insn), called from reemit_insn_block_notes, has a block number of 0. >> That leads to the crash in insn_scope. >> >> It's interesting that it only occurs with -g. I'm not sure what that means. >> >> Could you take a look at this and see if it is due to your patch? >> >> Thanks. >> >> Ian
It may also cause: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54645 -- H.J.