]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR debug/46893 (ICE: in trunc_int_for_mode, at explow.c:56 with -O -g)
authorJakub Jelinek <jakub@redhat.com>
Thu, 16 Dec 2010 17:14:30 +0000 (18:14 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 16 Dec 2010 17:14:30 +0000 (18:14 +0100)
PR debug/46893
* cfgexpand.c (expand_debug_expr): If GET_MODE (op0) is VOIDmode,
use TYPE_MODE (TREE_TYPE (tem)) instead of mode1.

* gcc.dg/pr46893.c: New test.

From-SVN: r167949

gcc/ChangeLog
gcc/cfgexpand.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr46893.c [new file with mode: 0644]

index d9238215dfad2cceae97fa4d77ab433aaabc83e2..7a64192a6d7a8642ec416860e87c62176988473d 100644 (file)
@@ -1,3 +1,9 @@
+2010-12-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/46893
+       * cfgexpand.c (expand_debug_expr): If GET_MODE (op0) is VOIDmode,
+       use TYPE_MODE (TREE_TYPE (tem)) instead of mode1.
+
 2010-12-16  Chung-Lin Tang  <cltang@codesourcery.com>
 
        PR target/46883
index 6cc5d01912fc3ada265127b439f6642b7f94306e..a3940d01775fa0cdd58b84fbed31e865db99c7bb 100644 (file)
@@ -2703,7 +2703,7 @@ expand_debug_expr (tree exp)
            enum machine_mode opmode = GET_MODE (op0);
 
            if (opmode == VOIDmode)
-             opmode = mode1;
+             opmode = TYPE_MODE (TREE_TYPE (tem));
 
            /* This condition may hold if we're expanding the address
               right past the end of an array that turned out not to
@@ -2724,7 +2724,8 @@ expand_debug_expr (tree exp)
                                     ? SIGN_EXTRACT
                                     : ZERO_EXTRACT, mode,
                                     GET_MODE (op0) != VOIDmode
-                                    ? GET_MODE (op0) : mode1,
+                                    ? GET_MODE (op0)
+                                    : TYPE_MODE (TREE_TYPE (tem)),
                                     op0, GEN_INT (bitsize), GEN_INT (bitpos));
       }
 
index 8645df9e4b2f0b2d75471e2286c94d869b965444..df48e936b24e57f78a6047ec8f0a11ca7c94c7fe 100644 (file)
@@ -1,3 +1,8 @@
+2010-12-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/46893
+       * gcc.dg/pr46893.c: New test.
+
 2010-12-16  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR lto/46976
diff --git a/gcc/testsuite/gcc.dg/pr46893.c b/gcc/testsuite/gcc.dg/pr46893.c
new file mode 100644 (file)
index 0000000..ef97e2e
--- /dev/null
@@ -0,0 +1,13 @@
+/* PR debug/46893 */
+/* { dg-do compile } */
+/* { dg-options "-O -g" } */
+
+void
+foo (void)
+{
+  union { unsigned long long l; double d; } u = { 0x7ff0000000000000ULL };
+  double v = 0, w = -u.d;
+
+  if (w)
+    w = v;
+}