diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-06-06 19:14:31 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-06-06 19:14:31 +0200 |
commit | 04902d4cb5ca18954cf2c32c4f776e53162a0e8f (patch) | |
tree | 209a80ca91b563c4e720d8e78b6d72e02d2b82e7 | |
parent | a9d245448f2529fe9a4aba63d9cd97059a17a121 (diff) | |
download | gcc-04902d4cb5ca18954cf2c32c4f776e53162a0e8f.zip gcc-04902d4cb5ca18954cf2c32c4f776e53162a0e8f.tar.gz gcc-04902d4cb5ca18954cf2c32c4f776e53162a0e8f.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/debug/pr49294.c | 14 |
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 165783f..967371c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2011-06-06 Jakub Jelinek <jakub@redhat.com> + PR debug/49294 + * dwarf2out.c (mem_loc_descriptor) <do_shift>: 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 b3cf4a6..0fa7f91 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 6d27ed9..4eacaf2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2011-06-06 Jakub Jelinek <jakub@redhat.com> + 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 0000000..e4869e0 --- /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; +} |