aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2012-01-16 17:40:38 +0100
committerJason Merrill <jason@gcc.gnu.org>2012-01-16 11:40:38 -0500
commitc53153e7a099d3212a60912cd407abc04fb2610a (patch)
tree8cf3862d66ae827f51688947e0e14b603d420639 /gcc
parent7aeb037b25f4624d0a7ea6b1184047135e56b036 (diff)
downloadgcc-c53153e7a099d3212a60912cd407abc04fb2610a.zip
gcc-c53153e7a099d3212a60912cd407abc04fb2610a.tar.gz
gcc-c53153e7a099d3212a60912cd407abc04fb2610a.tar.bz2
re PR c/12245 (Uses lots of memory when compiling large initialized arrays)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/convert.c4
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dd13d0b..9efdd70 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/convert.c b/gcc/convert.c
index f04b204..dbe2c7e 100644
--- a/gcc/convert.c
+++ b/gcc/convert.c
@@ -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: