re PR debug/49567 (ICE in mem_loc_descriptor due to typed DWARF stack changes)
authorJakub Jelinek <jakub@redhat.com>
Wed, 29 Jun 2011 08:15:00 +0000 (10:15 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 29 Jun 2011 08:15:00 +0000 (10:15 +0200)
PR debug/49567
* dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTEND>: Give up
for non-MODE_INT modes instead of asserting the mode has MODE_INT
class.

* gcc.target/i386/pr49567.c: New test.

From-SVN: r175622

gcc/ChangeLog
gcc/dwarf2out.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr49567.c [new file with mode: 0644]

index 323c17954b193c544815e3cb180b6335dd6f570a..91c23f2a20c6297500d80184a7add3ceb4a770f0 100644 (file)
@@ -1,3 +1,10 @@
+2011-06-29  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/49567
+       * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTEND>: Give up
+       for non-MODE_INT modes instead of asserting the mode has MODE_INT
+       class.
+
 2011-06-29  Georg-Johann Lay  <avr@gjlay.de>
        
        PR target/34734
index 3d63d7b8e3cc193e78cd8305a2948aea096aa673..8ff5c1e01c565b9526424eea6d795c864b97fe8b 100644 (file)
@@ -14762,7 +14762,8 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
 
     case SIGN_EXTEND:
     case ZERO_EXTEND:
-      gcc_assert (GET_MODE_CLASS (mode) == MODE_INT);
+      if (GET_MODE_CLASS (mode) != MODE_INT)
+       break;
       op0 = mem_loc_descriptor (XEXP (rtl, 0), GET_MODE (XEXP (rtl, 0)),
                                mem_mode, VAR_INIT_STATUS_INITIALIZED);
       if (op0 == 0)
index 46419f307fd1653ac3a11e24aab80060a0bf3a49..d327e4f8fea6d3982f973b8e6a7bf5b3e5f61e5f 100644 (file)
@@ -1,3 +1,8 @@
+2011-06-29  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/49567
+       * gcc.target/i386/pr49567.c: New test.
+
 2011-06-28  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gnat.dg/opt17.ad[sb]: New test.
diff --git a/gcc/testsuite/gcc.target/i386/pr49567.c b/gcc/testsuite/gcc.target/i386/pr49567.c
new file mode 100644 (file)
index 0000000..309deb4
--- /dev/null
@@ -0,0 +1,13 @@
+/* PR debug/49567 */
+/* { dg-do compile } */
+/* { dg-options "-g -O2 -msse4" } */
+
+#include <x86intrin.h>
+
+__m128
+foo (__m128i x)
+{
+  __m128i y;
+  y = _mm_cvtepi16_epi32 (x);
+  return _mm_cvtepi32_ps (y);
+}