*** objc-act.c Sun Aug 29 10:46:44 1999 --- /net/user/mgd/objc-act.c Sat Aug 14 15:43:19 1999 *************** *** 6837,6845 **** if (TYPE_MODE (type) == SFmode) obstack_1grow (&util_obstack, 'f'); ! else if (TYPE_MODE (type) == DFmode ! || TYPE_MODE (type) == TFmode) obstack_1grow (&util_obstack, 'd'); } else if (code == VOID_TYPE) --- 6909,6918 ---- if (TYPE_MODE (type) == SFmode) obstack_1grow (&util_obstack, 'f'); ! else if (TYPE_MODE (type) == DFmode) obstack_1grow (&util_obstack, 'd'); + else if (TYPE_MODE (type) == TFmode || TYPE_MODE (type) == XFmode) + obstack_1grow (&util_obstack, 'X'); } else if (code == VOID_TYPE) *************** *** 8395,8401 **** --- 8468,8497 ---- pushdecl (decl); rest_of_decl_compilation (decl, 0, 0, 0); + #if 1 + { + char *string_ref = (char *) alloca (strlen (string) + 5); + tree refdecl; + + sprintf (string_ref, "%s_ref", string); + refdecl = build_decl (VAR_DECL, + get_identifier (string_ref), + const_ptr_type_node); + + TREE_PUBLIC (refdecl) = 0; + TREE_STATIC (refdecl) = 1; + TREE_READONLY (refdecl) = 1; + TREE_CONSTANT (refdecl) = 1; + DECL_CONTEXT (refdecl) = NULL_TREE; + DECL_ARTIFICIAL (refdecl) = 1; + exp = build1 (ADDR_EXPR, string_type_node, decl); + DECL_INITIAL (refdecl) = exp; + + make_decl_rtl (refdecl, NULL_PTR, 1); + assemble_variable (refdecl, 1, 0, 0); + } + #else /* Make following constant read-only (why not)? */ readonly_data_section (); *************** *** 8409,8414 **** --- 8505,8511 ---- /* Output a constant to reference this address. */ output_constant (exp, int_size_in_bytes (string_type_node)); + #endif } else { *************** *** 8447,8456 **** else { sprintf (string, "%sobjc_class_name_%s", (flag_next_runtime ? "." : "__"), class_name); ! assemble_global (string); ! assemble_label (string); } } --- 8544,8567 ---- else { + tree decl; + sprintf (string, "%sobjc_class_name_%s", (flag_next_runtime ? "." : "__"), class_name); ! ! decl = build_decl (VAR_DECL, ! get_identifier (string), ! void_type_node); ! ! TREE_PUBLIC (decl) = 1; ! TREE_READONLY (decl) = 1; ! TREE_CONSTANT (decl) = 1; ! DECL_CONTEXT (decl) = NULL_TREE; ! DECL_ARTIFICIAL (decl) = 1; ! DECL_INITIAL (decl) = decl; ! ! make_decl_rtl (decl, NULL_PTR, 1); ! assemble_variable (decl, 1, 0, 0); } } *************** *** 8479,8489 **** else { sprintf (string, "%sobjc_category_name_%s_%s", (flag_next_runtime ? "." : "__"), class_name, class_super_name); ! assemble_global (string); ! assemble_label (string); } } } --- 8590,8614 ---- else { + tree decl; + sprintf (string, "%sobjc_category_name_%s_%s", (flag_next_runtime ? "." : "__"), class_name, class_super_name); ! ! decl = build_decl (VAR_DECL, ! get_identifier (string), ! void_type_node); ! ! TREE_PUBLIC (decl) = 1; ! TREE_READONLY (decl) = 1; ! TREE_CONSTANT (decl) = 1; ! DECL_CONTEXT (decl) = NULL_TREE; ! DECL_ARTIFICIAL (decl) = 1; ! DECL_INITIAL (decl) = decl; ! ! make_decl_rtl (decl, NULL_PTR, 1); ! assemble_variable (decl, 1, 0, 0); } } }