OSDN Git Service

(force_const_mem): Set MARK instead of clearing it.
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 29 Jan 1997 21:12:37 +0000 (21:12 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 29 Jan 1997 21:12:37 +0000 (21:12 +0000)
(output_constant_pool): Only mark constant pool if -O.
Check mark flag unconditionally.
(mark_constant_pool): Start by clearing all mark flags.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@13564 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/varasm.c

index 1bf3e51..45f8c68 100644 (file)
@@ -3486,7 +3486,7 @@ force_const_mem (mode, x)
       pool->labelno = const_labelno;
       pool->align = align;
       pool->offset = pool_offset;
-      pool->mark = 0;
+      pool->mark = 1;
       pool->next = 0;
 
       if (last_pool == 0)
@@ -3603,7 +3603,7 @@ output_constant_pool (fnname, fndecl)
   /* It is possible for gcc to call force_const_mem and then to later
      discard the instructions which refer to the constant.  In such a
      case we do not need to output the constant.  */
-  if (flag_expensive_optimizations)
+  if (optimize >= 0 && flag_expensive_optimizations)
     mark_constant_pool ();
 
 #ifdef ASM_OUTPUT_POOL_PROLOGUE
@@ -3614,7 +3614,7 @@ output_constant_pool (fnname, fndecl)
     {
       x = pool->constant;
 
-      if (flag_expensive_optimizations && ! pool->mark)
+      if (! pool->mark)
        continue;
 
       /* See if X is a LABEL_REF (or a CONST referring to a LABEL_REF)
@@ -3687,10 +3687,14 @@ static void
 mark_constant_pool ()
 {
   register rtx insn;
+  struct pool_constant *pool;
 
   if (first_pool == 0)
     return;
 
+  for (pool = first_pool; pool; pool = pool->next)
+    pool->mark = 0;
+
   for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
     if (GET_RTX_CLASS (GET_CODE (insn)) == 'i')
       mark_constants (PATTERN (insn));