re PR c/12245 (Uses lots of memory when compiling large initialized arrays)
authorJan Hubicka <jh@suse.cz>
Mon, 16 Jan 2012 16:40:38 +0000 (17:40 +0100)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 16 Jan 2012 16:40:38 +0000 (11:40 -0500)
PR c/12245
PR c++/14179
* convert.c (convert_to_integer): Use fold_convert for
converting an INTEGER_CST to integer type.

From-SVN: r183214

gcc/ChangeLog
gcc/convert.c

index dd13d0bbc72af6e4276dd8907d9f184eed7ae9b7..9efdd70ddbf74723d8508bb34ff89f661eeaa053 100644 (file)
@@ -1,3 +1,10 @@
+2012-01-16  Jan Hubicka  <jh@suse.cz>
+
+       PR c/12245
+       PR c++/14179
+       * convert.c (convert_to_integer): Use fold_convert for
+       converting an INTEGER_CST to integer type.
+
 2012-01-16  Jason Merrill  <jason@redhat.com>
 
        PR c++/14179
index f04b204819464a6962bc98e83d46bc14d5067f90..dbe2c7eb32e91ad2d2f67c98513a40af262712ee 100644 (file)
@@ -860,6 +860,10 @@ convert_to_integer (tree type, tree expr)
          break;
        }
 
+      /* When parsing long initializers, we might end up with a lot of casts.
+        Shortcut this.  */
+      if (TREE_CODE (expr) == INTEGER_CST)
+       return fold_convert (type, expr);
       return build1 (CONVERT_EXPR, type, expr);
 
     case REAL_TYPE: