mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-23 09:19:01 +08:00
objc-act.c (build_constructor): Cast initializer values to the proper field types.
* objc/objc-act.c (build_constructor): Cast initializer values to the proper field types. From-SVN: r47884
This commit is contained in:
parent
50cc5dd29b
commit
ff1c8a1a18
@ -1,3 +1,8 @@
|
||||
2001-12-11 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* objc/objc-act.c (build_constructor): Cast initializer values
|
||||
to the proper field types.
|
||||
|
||||
2001-12-11 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* unwind-dw2.c (execute_cfa_program): Fix DW_CFA_restore handling.
|
||||
|
@ -1371,8 +1371,27 @@ static tree
|
||||
build_constructor (type, elts)
|
||||
tree type, elts;
|
||||
{
|
||||
tree constructor = build (CONSTRUCTOR, type, NULL_TREE, elts);
|
||||
tree constructor, f, e;
|
||||
|
||||
/* ??? Most of the places that we build constructors, we don't fill in
|
||||
the type of integers properly. Convert them all en masse. */
|
||||
if (TREE_CODE (type) == ARRAY_TYPE)
|
||||
{
|
||||
f = TREE_TYPE (type);
|
||||
if (TREE_CODE (f) == POINTER_TYPE || TREE_CODE (f) == INTEGER_TYPE)
|
||||
for (e = elts; e ; e = TREE_CHAIN (e))
|
||||
TREE_VALUE (e) = convert (f, TREE_VALUE (e));
|
||||
}
|
||||
else
|
||||
{
|
||||
f = TYPE_FIELDS (type);
|
||||
for (e = elts; e ; e = TREE_CHAIN (e), f = TREE_CHAIN (f))
|
||||
if (TREE_CODE (TREE_TYPE (f)) == POINTER_TYPE
|
||||
|| TREE_CODE (TREE_TYPE (f)) == INTEGER_TYPE)
|
||||
TREE_VALUE (e) = convert (TREE_TYPE (f), TREE_VALUE (e));
|
||||
}
|
||||
|
||||
constructor = build (CONSTRUCTOR, type, NULL_TREE, elts);
|
||||
TREE_CONSTANT (constructor) = 1;
|
||||
TREE_STATIC (constructor) = 1;
|
||||
TREE_READONLY (constructor) = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user