re PR c/48517 (ICE in build_unary_op, at c-typeck.c:3786)
PR c/48517 * c-typeck.c (store_init_value): Set TREE_TYPE (decl) to qualified type. * gcc.c-torture/compile/pr48517.c: New test. From-SVN: r172299
This commit is contained in:
parent
bae5cddff8
commit
e30ecc5d62
2 changed files with 16 additions and 1 deletions
|
@ -5773,11 +5773,13 @@ store_init_value (location_t init_loc, tree decl, tree init, tree origtype)
|
|||
/* For int foo[] = (int [3]){1}; we need to set array size
|
||||
now since later on array initializer will be just the
|
||||
brace enclosed list of the compound literal. */
|
||||
tree etype = strip_array_types (TREE_TYPE (decl));
|
||||
type = build_distinct_type_copy (TYPE_MAIN_VARIANT (type));
|
||||
TREE_TYPE (decl) = type;
|
||||
TYPE_DOMAIN (type) = TYPE_DOMAIN (TREE_TYPE (cldecl));
|
||||
layout_type (type);
|
||||
layout_decl (cldecl, 0);
|
||||
TREE_TYPE (decl)
|
||||
= c_build_qualified_type (type, TYPE_QUALS (etype));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
13
gcc/testsuite/gcc.c-torture/compile/pr48517.c
Normal file
13
gcc/testsuite/gcc.c-torture/compile/pr48517.c
Normal file
|
@ -0,0 +1,13 @@
|
|||
/* PR c/48517 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "" } */
|
||||
|
||||
void bar (const unsigned short *);
|
||||
|
||||
void
|
||||
foo (void)
|
||||
{
|
||||
static const unsigned short array[] = (const unsigned short []) { 0x0D2B };
|
||||
const unsigned short *ptr = array;
|
||||
bar (ptr);
|
||||
}
|
Loading…
Add table
Reference in a new issue