diff options
author | Jan Hubicka <jh@suse.cz> | 2012-01-16 17:40:38 +0100 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2012-01-16 11:40:38 -0500 |
commit | c53153e7a099d3212a60912cd407abc04fb2610a (patch) | |
tree | 8cf3862d66ae827f51688947e0e14b603d420639 /gcc | |
parent | 7aeb037b25f4624d0a7ea6b1184047135e56b036 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/convert.c | 4 |
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: |