From: Jakub Jelinek Date: Mon, 6 Jun 2011 17:14:31 +0000 (+0200) Subject: re PR c++/49264 (Internal compiler error: segmentation fault) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=04902d4cb5ca18954cf2c32c4f776e53162a0e8f;p=gcc.git re PR c++/49264 (Internal compiler error: segmentation fault) PR c++/49264 * gimple-fold.c (fold_stmt_1): Don't try to fold *& on the lhs if stmt folded into nothing. * tree-inline.c (fold_marked_statements): If a builtin at the end of a bb folded into nothing, just update cgraph edges and move to next bb. * cgraph.c (cgraph_update_edges_for_call_stmt_node): Allow new_stmt to be NULL. Don't compute count and frequency if new_call is NULL. * g++.dg/opt/pr49264.C: New test. From-SVN: r174712 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 165783f85c7..967371c09f3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2011-06-06 Jakub Jelinek + PR debug/49294 + * dwarf2out.c (mem_loc_descriptor) : Give up for + non-MODE_INT modes. + PR c++/49264 * gimple-fold.c (fold_stmt_1): Don't try to fold *& on the lhs if stmt folded into nothing. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index b3cf4a65730..0fa7f91fa17 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -14904,6 +14904,8 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode, goto do_shift; do_shift: + if (GET_MODE_CLASS (mode) != MODE_INT) + break; op0 = mem_loc_descriptor (XEXP (rtl, 0), mode, mem_mode, VAR_INIT_STATUS_INITIALIZED); { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6d27ed9ff43..4eacaf2522e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2011-06-06 Jakub Jelinek + PR debug/49294 + * gcc.dg/debug/pr49294.c: New test. + PR c++/49264 * g++.dg/opt/pr49264.C: New test. diff --git a/gcc/testsuite/gcc.dg/debug/pr49294.c b/gcc/testsuite/gcc.dg/debug/pr49294.c new file mode 100644 index 00000000000..e4869e079e9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/debug/pr49294.c @@ -0,0 +1,14 @@ +/* PR debug/49294 */ +/* { dg-do compile } */ + +typedef __attribute__ ((vector_size ((8) * sizeof (short)))) short V; + +int k; +V v; + +void +foo (void) +{ + V w = { k, k, k, k, k, k, k, k }; + V x = v >> w; +}