Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
authorRichard Kenner <kenner@gcc.gnu.org>
Thu, 1 Jun 2000 01:12:19 +0000 (21:12 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Thu, 1 Jun 2000 01:12:19 +0000 (21:12 -0400)
* Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
* alias.c (struct alias_entry): alias_set is HOST_WIDE_INT.
(REG_BASE_VALUE): Remove unneeded cast to unsigned.
(get_alias_set_entry): ALIAS_SET arg is HOST_WIDE_INT.
(find_base_decl): New function, from c_find_base_decl in c-common.c.
(new_alias_set): Moved from tree.c; return is HOST_WIDE_INT.
(get_alias_set): Likewise.
Major rework to do more things and allow language-specific code
to just handle special-cases.
(record_alias_subset): Args are HOST_WIDE_INT.
(record_component_alias): Local vars are HOST_WIDE_INT.
Don't handle COMPLEX_EXPR.
(get_varargs_alias_set): Moved from builtins.c.
(get_frame_alias_set): New function.
* builtins.c (expand_builtin_return_address): Use frame alias set.
(expand_builtin_setjmp, expand_builtin_longjmp): Use alias set
for setjmp buffer.
(get_memory_rtx): Rework to use set_mem_attributes.
(get_varargs_alias_set): Deleted from here.
* c-common.c (c_apply_type_quals_to_decl): Alias sets now HOST_WIDE_INT.
(c_find_base_decl): Deleted from here.
(c_get_alias_set): Remove many cases and rework to just handle
C-specific cases.
* c-common.h (c_get_alias_set): Returns HOST_WIDE_INT.
* c-decl.c (rtl.h, expr.h): Now included.
(init_decl_processing): Call record_component_aliases on array types.
(grokdeclarator): Likewise.
Set TREE_ADDRESSABLE for all fields that are not bitfields.
* c-typeck.c (common_type): Call record_component_aliases for array.
* caller-save.c (setup_save_areas): Rework register loop for unsigned.
Set all save areas to the frame alias set.
* calls.c (initialie_argument_information): Call set_mem_attributes.
(compute_argument_addresses, expand_call): Likewise.
* explow.c (set_mem_attributes): New function.
(stabilize): Use MEM_COPY_ATTRIBUTES and force_reg.
* expr.c (struct move_by_pieces): Remove {to,from}_{struct,readonly}.
LEN and OFFSET now HOST_WIDE_INT.
(clear_by_pieces): Similar changes.
(move_by_pieces): LEN now HOST_WIDE_INT; don't set deleted fields.
(move_by_pieces_ninsns): Now returns unsigned HOST_WIDE_INT.
(move_by_pieces_1): Don't use deleted fields, use MEM_COPY_ATTRIBUTES.
(clear_by_pieces_1): Likewise.
(emit_push_insn): Call set_mem_attributes.
(expand_expr, case INDIRECT_REF): Likewise.
(expand_expr, case VAR_DECL): Call change_address.
* expr.h (ADD_PARM_SIZE, SUB_PARM_SIZE): Use host_integerp and
tree_low_cst.
(get_varargs_alias_set, get_frame_alias_set): New decls.
(record_base_value, record_alias_subset, lang_get_alias_set): Likewise.
(new_alias_set, set_mem_attributes): Likewse.
* function.c (struct temp_slot): ALIAS_SET is HOST_WIDE_INT.
(assign_stack_temp_for_type): Likewise.
Can split slot even if alias set since can copy.
Set MEM_ALIAS_SET and MEM_SET_IN_STRUCT_P.
(assign_temp): Use host_integerp and tree_low_cst.
(put_var_into_stack): Properly handle SAVE_EXPR.
(put_addressof_into_stack): Likewise.
(assign_parms): Call set_mem_attributes.
Delete #if 0 code.
(fix_lexical_address): Put reference to chain into frame alias set.
(expand_function_start): Call set_mem_attributes.
* integrate.c (expand_inline_function): Likewise.
* recog.c (adj_offsettable_operand): Use MEM_COPY_ATTRIBUTES.
* regmove.c (try_apply_stack_adjustment): Likewise.
* reload.c (push_reload, make_memloc): Likewise.
* reload1.c (alter_reg): Make alias sets for spilled pseudos.
* rtl.def (MEM): Update comment.
* rtl.h (MEM_ALIAS_SET): Now uses XCWINT.
(move_by_pieces): Change length to HOST_WIDE_INT.
(record_base_value, record_alias_subset): Delete from here.
* stmt.c (expand_decl): Call set_mem_attributes.
* stor-layout.c (finish_record_layout): Call record_component_aliases.i
* toplev.c (compile_file): Call init_alias_once earlier.
* tree.c (lang_get_alias_set, get_alias_set, new_alias_set): Deleted
from here: now in alias.c.
* tree.h (struct tree_type): alias_set is HOST_WIDE_INT.
(struct tree_decl): Likewise.
(get_alias_set, new_alias_set, lang_get_alias_set): Deleted from here.
* varasm.c (make_function_rtl, make_decl_rtl): Call set_mem_attributes.
(output_constant_def, force_const_mem): Likewise.
* cp/Makefile.in (decl.o): Include ../expr.h.
* cp/decl.c (expr.h): Include.
(init_decl_processing): Call record_component_aliases for arrays.
(grokdeclarator): Likewise.
Set TREE_ADDRESSABLE for fields that aren't bitfields.
* cp/tree.c (build_cplus_array_type_1): Call record_component_aliases.

From-SVN: r34325

gcc/integrate.c
gcc/varasm.c

index 53295744ff48bc2b0664788891ca3cd4acdcc3e2..ee473f6e3f7e409f59421b08fc7dcd6e0ae25fc4 100644 (file)
@@ -1186,7 +1186,7 @@ expand_inline_function (fndecl, parms, target, ignore, type,
       target = gen_rtx_MEM (TYPE_MODE (type),
                            memory_address (TYPE_MODE (type),
                                            structure_value_addr));
-      MEM_SET_IN_STRUCT_P (target, 1);
+      set_mem_attributes (target, type, 1);
     }
 
   /* Make sure we free the things we explicitly allocated with xmalloc.  */
index 1731839480cdcf2281cdec04dac74ff3cd8d7da8..04937370c909aade7d91cfe2d80d1f1a4f61c392 100644 (file)
@@ -559,10 +559,12 @@ make_function_rtl (decl)
       DECL_RTL (decl)
        = gen_rtx_MEM (DECL_MODE (decl),
                       gen_rtx_SYMBOL_REF (Pmode, name));
+      set_mem_attributes (DECL_RTL (decl), decl, 1);
 
-      /* Optionally set flags or add text to the name to record information
-        such as that it is a function name.  If the name is changed, the macro
-        ASM_OUTPUT_LABELREF will have to know how to strip this information.  */
+      /* Optionally set flags or add text to the name to record
+        information such as that it is a function name.  If the name
+        is changed, the macro ASM_OUTPUT_LABELREF will have to know
+        how to strip this information.  */
 #ifdef ENCODE_SECTION_INFO
       ENCODE_SECTION_INFO (decl);
 #endif
@@ -798,30 +800,19 @@ make_decl_rtl (decl, asmspec, top_level)
              name = new_name;
            }
 
+         /* If this variable is to be treated as volatile, show its
+            tree node has side effects.   */
+         if ((flag_volatile_global && TREE_CODE (decl) == VAR_DECL
+              && TREE_PUBLIC (decl))
+             || ((flag_volatile_static && TREE_CODE (decl) == VAR_DECL
+                  && (TREE_PUBLIC (decl) || TREE_STATIC (decl)))))
+           TREE_SIDE_EFFECTS (decl) = 1;
+
          DECL_ASSEMBLER_NAME (decl)
            = get_identifier (name[0] == '*' ? name + 1 : name);
          DECL_RTL (decl) = gen_rtx_MEM (DECL_MODE (decl),
                                         gen_rtx_SYMBOL_REF (Pmode, name));
-         MEM_ALIAS_SET (DECL_RTL (decl)) = get_alias_set (decl);
-
-         /* If this variable is to be treated as volatile, show its
-            tree node has side effects.  If it has side effects, either
-            because of this test or from TREE_THIS_VOLATILE also
-            being set, show the MEM is volatile.  */
-         if (flag_volatile_global && TREE_CODE (decl) == VAR_DECL
-             && TREE_PUBLIC (decl))
-           TREE_SIDE_EFFECTS (decl) = 1;
-         else if (flag_volatile_static && TREE_CODE (decl) == VAR_DECL
-              && (TREE_PUBLIC (decl) || TREE_STATIC (decl)))
-           TREE_SIDE_EFFECTS (decl) = 1;
-
-         if (TREE_SIDE_EFFECTS (decl))
-           MEM_VOLATILE_P (DECL_RTL (decl)) = 1;
-
-         if (TREE_READONLY (decl))
-           RTX_UNCHANGING_P (DECL_RTL (decl)) = 1;
-         MEM_SET_IN_STRUCT_P (DECL_RTL (decl),
-                              AGGREGATE_TYPE_P (TREE_TYPE (decl)));
+         set_mem_attributes (DECL_RTL (decl), decl, 1);
 
          /* Optionally set flags or add text to the name to record information
             such as that it is a function name.
@@ -3109,10 +3100,7 @@ output_constant_def (exp)
        = gen_rtx_MEM (TYPE_MODE (TREE_TYPE (exp)),
                       gen_rtx_SYMBOL_REF (Pmode, desc->label));
 
-      RTX_UNCHANGING_P (desc->rtl) = 1;
-      if (AGGREGATE_TYPE_P (TREE_TYPE (exp)))
-       MEM_SET_IN_STRUCT_P (desc->rtl, 1);
-
+      set_mem_attributes (desc->rtl, exp, 1);
       pop_obstacks ();
 
       found = 0;
@@ -3668,8 +3656,9 @@ force_const_mem (mode, x)
   /* We have a symbol name; construct the SYMBOL_REF and the MEM.  */
 
   def = gen_rtx_MEM (mode, gen_rtx_SYMBOL_REF (Pmode, found));
-
+  set_mem_attributes (def, type_for_mode (mode, 0), 1);
   RTX_UNCHANGING_P (def) = 1;
+
   /* Mark the symbol_ref as belonging to this constants pool.  */
   CONSTANT_POOL_ADDRESS_P (XEXP (def, 0)) = 1;
   current_function_uses_const_pool = 1;