===================================================================
@@ -0,0 +1,12 @@
+// PR c++/20140
+
+template<typename T> void foo()
+{
+ unsigned char s[] = "";
+}
+
+int main()
+{
+ foo<char>();
+ foo<int>();
+}
===================================================================
@@ -902,7 +902,11 @@ digest_init_r (tree type, tree init, bool nested,
}
}
- TREE_TYPE (init) = type;
+ if (type != TREE_TYPE (init))
+ {
+ init = copy_node (init);
+ TREE_TYPE (init) = type;
+ }
if (TYPE_DOMAIN (type) != 0 && TREE_CONSTANT (TYPE_SIZE (type)))
{
int size = TREE_INT_CST_LOW (TYPE_SIZE (type));