Commit b88a3142 by Richard Kenner

(optimize_bit_field): Put any insns made by change_address in front of INSN.

(expand_function_end): Don't pass DECL_INITIAL to setjmp_protect if it is
error_mark_node.

From-SVN: r8146
parent 5b065c21
...@@ -2192,6 +2192,8 @@ optimize_bit_field (body, insn, equiv_mem) ...@@ -2192,6 +2192,8 @@ optimize_bit_field (body, insn, equiv_mem)
and then for which byte of the word is wanted. */ and then for which byte of the word is wanted. */
register int offset = INTVAL (XEXP (bitfield, 2)); register int offset = INTVAL (XEXP (bitfield, 2));
rtx insns;
/* Adjust OFFSET to count bits from low-address byte. */ /* Adjust OFFSET to count bits from low-address byte. */
#if BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN #if BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN
offset = (GET_MODE_BITSIZE (GET_MODE (XEXP (bitfield, 0))) offset = (GET_MODE_BITSIZE (GET_MODE (XEXP (bitfield, 0)))
...@@ -2210,8 +2212,12 @@ optimize_bit_field (body, insn, equiv_mem) ...@@ -2210,8 +2212,12 @@ optimize_bit_field (body, insn, equiv_mem)
#endif #endif
} }
start_sequence ();
memref = change_address (memref, mode, memref = change_address (memref, mode,
plus_constant (XEXP (memref, 0), offset)); plus_constant (XEXP (memref, 0), offset));
insns = get_insns ();
end_sequence ();
emit_insns_before (insns, insn);
/* Store this memory reference where /* Store this memory reference where
we found the bit field reference. */ we found the bit field reference. */
...@@ -5064,7 +5070,9 @@ expand_function_end (filename, line, end_bindings) ...@@ -5064,7 +5070,9 @@ expand_function_end (filename, line, end_bindings)
on a machine that fails to restore the registers. */ on a machine that fails to restore the registers. */
if (NON_SAVING_SETJMP && current_function_calls_setjmp) if (NON_SAVING_SETJMP && current_function_calls_setjmp)
{ {
if (DECL_INITIAL (current_function_decl) != error_mark_node)
setjmp_protect (DECL_INITIAL (current_function_decl)); setjmp_protect (DECL_INITIAL (current_function_decl));
setjmp_protect_args (); setjmp_protect_args ();
} }
#endif #endif
......
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