re PR rtl-optimization/71976 (insn-combiner deletes a live 64-bit shift)

gcc/
	PR rtl-optimization/71976
	* combine.c (get_last_value): Return 0 if the argument for which
	the function is called has a wider mode than the recorded value.

Co-Authored-By: Georg-Johann Lay <avr@gjlay.de>

From-SVN: r238863
This commit is contained in:
Segher Boessenkool 2016-07-29 14:34:21 +02:00 committed by Georg-Johann Lay
parent 673a107a40
commit cc80b225c5
2 changed files with 13 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2016-07-29 Segher Boessenkool <segher@kernel.crashing.org>
Georg-Johann Lay <avr@gjlay.de>
PR rtl-optimization/71976
* combine.c (get_last_value): Return 0 if the argument for which
the function is called has a wider mode than the recorded value.
2016-07-29 Marek Polacek <polacek@redhat.com>
PR c/7652

View File

@ -13210,6 +13210,12 @@ get_last_value (const_rtx x)
&& DF_INSN_LUID (rsp->last_set) >= subst_low_luid)
return 0;
/* If fewer bits were set than what we are asked for now, we cannot use
the value. */
if (GET_MODE_PRECISION (rsp->last_set_mode)
< GET_MODE_PRECISION (GET_MODE (x)))
return 0;
/* If the value has all its registers valid, return it. */
if (get_last_value_validate (&value, rsp->last_set, rsp->last_set_label, 0))
return value;