expmed.c (extract_bit_field_1): Avoid clobbering a yet-to-be-used base/index register.

* expmed.c (extract_bit_field_1): Avoid clobbering a
yet-to-be-used base/index register.

From-SVN: r223885
This commit is contained in:
DJ Delorie 2015-05-30 02:05:54 -04:00 committed by DJ Delorie
parent ec3dfdac4d
commit 7d21a61eb5
2 changed files with 10 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2015-05-28 DJ Delorie <dj@redhat.com>
* expmed.c (extract_bit_field_1): Avoid clobbering a
yet-to-be-used base/index register.
2015-05-30 Jan Hubicka <hubicka@ucw.cz>
* alias.c (alias_set_entry_d): Add is_pointer and has_pointer.

View File

@ -1616,6 +1616,11 @@ extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
if (target == 0 || !REG_P (target) || !valid_multiword_target_p (target))
target = gen_reg_rtx (mode);
/* In case we're about to clobber a base register or something
(see gcc.c-torture/execute/20040625-1.c). */
if (reg_mentioned_p (target, str_rtx))
target = gen_reg_rtx (mode);
/* Indicate for flow that the entire target reg is being set. */
emit_clobber (target);