Commit d2ce9169 by Richard Kenner

(force_const_mem): Set MARK instead of clearing it.

(output_constant_pool): Only mark constant pool if -O.
Check mark flag unconditionally.
(mark_constant_pool): Start by clearing all mark flags.

From-SVN: r13564
parent 69b7087e
...@@ -3486,7 +3486,7 @@ force_const_mem (mode, x) ...@@ -3486,7 +3486,7 @@ force_const_mem (mode, x)
pool->labelno = const_labelno; pool->labelno = const_labelno;
pool->align = align; pool->align = align;
pool->offset = pool_offset; pool->offset = pool_offset;
pool->mark = 0; pool->mark = 1;
pool->next = 0; pool->next = 0;
if (last_pool == 0) if (last_pool == 0)
...@@ -3603,7 +3603,7 @@ output_constant_pool (fnname, fndecl) ...@@ -3603,7 +3603,7 @@ output_constant_pool (fnname, fndecl)
/* It is possible for gcc to call force_const_mem and then to later /* 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 discard the instructions which refer to the constant. In such a
case we do not need to output the constant. */ case we do not need to output the constant. */
if (flag_expensive_optimizations) if (optimize >= 0 && flag_expensive_optimizations)
mark_constant_pool (); mark_constant_pool ();
#ifdef ASM_OUTPUT_POOL_PROLOGUE #ifdef ASM_OUTPUT_POOL_PROLOGUE
...@@ -3614,7 +3614,7 @@ output_constant_pool (fnname, fndecl) ...@@ -3614,7 +3614,7 @@ output_constant_pool (fnname, fndecl)
{ {
x = pool->constant; x = pool->constant;
if (flag_expensive_optimizations && ! pool->mark) if (! pool->mark)
continue; continue;
/* See if X is a LABEL_REF (or a CONST referring to a LABEL_REF) /* See if X is a LABEL_REF (or a CONST referring to a LABEL_REF)
...@@ -3687,10 +3687,14 @@ static void ...@@ -3687,10 +3687,14 @@ static void
mark_constant_pool () mark_constant_pool ()
{ {
register rtx insn; register rtx insn;
struct pool_constant *pool;
if (first_pool == 0) if (first_pool == 0)
return; return;
for (pool = first_pool; pool; pool = pool->next)
pool->mark = 0;
for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
if (GET_RTX_CLASS (GET_CODE (insn)) == 'i') if (GET_RTX_CLASS (GET_CODE (insn)) == 'i')
mark_constants (PATTERN (insn)); mark_constants (PATTERN (insn));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment