aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-06-06 19:14:31 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2011-06-06 19:14:31 +0200
commit04902d4cb5ca18954cf2c32c4f776e53162a0e8f (patch)
tree209a80ca91b563c4e720d8e78b6d72e02d2b82e7
parenta9d245448f2529fe9a4aba63d9cd97059a17a121 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/dwarf2out.c2
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/gcc.dg/debug/pr49294.c14
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;
+}