- if (COMPLETE_TYPE_P (TREE_TYPE (obj)))
- {
- tree object_size;
-
- mf_mark (obj);
-
- object_size = size_in_bytes (TREE_TYPE (obj));
-
- if (dump_file)
- {
- fprintf (dump_file, "enqueue_decl obj=`");
- print_generic_expr (dump_file, obj, dump_flags);
- fprintf (dump_file, "' size=");
- print_generic_expr (dump_file, object_size, dump_flags);
- fprintf (dump_file, "\n");
- }
-
- /* NB: the above condition doesn't require TREE_USED or
- TREE_ADDRESSABLE. That's because this object may be a global
- only used from other compilation units. XXX: Maybe static
- objects could require those attributes being set. */
-
- mudflap_register_call (obj, object_size, mf_varname_tree (obj));
- }
- else
- {
- size_t i;
-
- if (! deferred_static_decls)
- VARRAY_TREE_INIT (deferred_static_decls, 10, "deferred static list");
-
- /* Ugh, linear search... */
- for (i = 0; i < VARRAY_ACTIVE_SIZE (deferred_static_decls); i++)
- if (VARRAY_TREE (deferred_static_decls, i) == obj)
- {
- warning ("mudflap cannot track unknown size extern %qs",
- IDENTIFIER_POINTER (DECL_NAME (obj)));
- return;
- }
-
- VARRAY_PUSH_TREE (deferred_static_decls, obj);
- }