aboutsummaryrefslogtreecommitdiff
path: root/gcc/convert.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2012-01-16 16:40:38 +0000
committerJason Merrill <jason@redhat.com>2012-01-16 16:40:38 +0000
commit7a96e17d19e03422b17a541ca8b74c063f1731ee (patch)
tree8cf3862d66ae827f51688947e0e14b603d420639 /gcc/convert.c
parent1e0cd359ba4615a0ce0c24f5c52d5551056b1ba3 (diff)
PR c/12245
PR c++/14179 * convert.c (convert_to_integer): Use fold_convert for converting an INTEGER_CST to integer type. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@183214 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/convert.c')
-rw-r--r--gcc/convert.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/convert.c b/gcc/convert.c
index f04b2048194..dbe2c7eb32e 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: