[backport from gcc-4.7/trunk r183214 ] gcc/ 2012-01-16 Jan Hubicka PR c/12245 PR c++/14179 * convert.c (convert_to_integer): Use fold_convert for converting an INTEGER_CST to integer type. --- gcc-4.6.2/gcc/convert.c.~1~ 2011-10-12 13:57:36.000000000 +0200 +++ gcc-4.6.2/gcc/convert.c 2012-01-18 16:28:38.000000000 +0100 @@ -842,6 +842,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: