diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2000-06-03 01:57:46 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2000-06-02 21:57:46 -0400 |
commit | 2bf105ab5ba3b1b12f4efd828434c39030cdb6fe (patch) | |
tree | 08e18810256295f8a740aab217825918008b48b2 /gcc/function.c | |
parent | 0e13506e499502b91699f089465bc50532e8c65f (diff) | |
download | gcc-2bf105ab5ba3b1b12f4efd828434c39030cdb6fe.zip gcc-2bf105ab5ba3b1b12f4efd828434c39030cdb6fe.tar.gz gcc-2bf105ab5ba3b1b12f4efd828434c39030cdb6fe.tar.bz2 |
alias.c (struct alias_set_entry): New field has_zero_child.
* alias.c (struct alias_set_entry): New field has_zero_child.
(mem_in_disjoint_alias_sets_p): Return 0 if set in either ase.
(get_alias_set): If language-dependent routine set TYPE_ALIAS_SET,
do nothing.
Call record_component_aliases for aggregate types.
(record_alias_subset): Set has_zero_child.
(record_component_aliases, case ARRAY_TYPE): Do nothing if
TYPE_NONALIASES_COMPONENT.
(record_component_aliases, case RECORD_TYPE): Test
DECL_NONADDRESSABLE_P.
* c-decl.c (grokdeclarator): Set DECL_NONADDRESSABLE_P instead
of TREE_ADDRESSABLE.
* calls.c (initialize_argument_information): Only test
TYPE_TRANSPARENT_UNION for UNION_TYPE.
* function.c (assign_parms): Likewise.
* integrate.c (function_cannot_inline_p): Likewise.
* stor-layout.c (finish_record_layout): Don't call
record_component_aliases.
* tree.h (struct tree_int_cst): Use struct tree_common.
(struct tree_real_cst, struct tree_string): Likewise.
(struct tree_complex, struct tree_identifier): Likewise.
(struct tree_list, struct tree_vec, struct tree_exp): Likewise.
(struct tree_block, struct tree_type, struct tree_decl): Likewise.
(TYPE_TRANSPARENT_UNION): Use UNION_TYPE_CHECK.
(TYPE_NONALIASES_COMPONENT): New macro.
(TYPE_AMBIENT_BOUNDEDNESS): Use FUNCTION_TYPE_CHECK.
(DECL_NONADDRESSABLE_P): New macro.
(struct tree_decl): Reorder bits for clarity of how many left;
add non_adressable.
* cp/cp-tree.h: Use struct tree_common instead of a char array.
* cp/decl.c (grokdeclarator): Set DECL_NONADDRESSABLE_P instead
of TREE_ADDRESSABLE.
From-SVN: r34373
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/function.c b/gcc/function.c index 978dc81..31b71c6 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -4231,7 +4231,8 @@ assign_parms (fndecl) type of the first field for the tests below. We have already verified that the modes are the same. */ if (DECL_TRANSPARENT_UNION (parm) - || TYPE_TRANSPARENT_UNION (passed_type)) + || (TREE_CODE (passed_type) == UNION_TYPE + && TYPE_TRANSPARENT_UNION (passed_type))) passed_type = TREE_TYPE (TYPE_FIELDS (passed_type)); /* See if this arg was passed by invisible reference. It is if |