Commit ef50b972 by Richard Biener Committed by Richard Biener

re PR target/92462 ([arm32] -ftree-pre makes a variable to be wrongly hoisted out)

2019-11-18  Richard Biener  <rguenther@suse.de>

	PR rtl-optimization/92462
	* alias.c (find_base_term): Restrict the look through ANDs.
	(find_base_value): Likewise.

From-SVN: r278391
parent 762ff5b3
2019-11-18 Richard Biener <rguenther@suse.de>
PR rtl-optimization/92462
* alias.c (find_base_term): Restrict the look through ANDs.
(find_base_value): Likewise.
2019-11-18 Georg-Johann Lay <avr@gjlay.de>
Add support for AVR devices from the 0-series.
......@@ -1464,9 +1464,11 @@ find_base_value (rtx src)
return find_base_value (XEXP (src, 1));
case AND:
/* If the second operand is constant set the base
address to the first operand. */
if (CONST_INT_P (XEXP (src, 1)) && INTVAL (XEXP (src, 1)) != 0)
/* Look through aligning ANDs. And AND with zero or one with
the LSB set isn't one (see for example PR92462). */
if (CONST_INT_P (XEXP (src, 1))
&& INTVAL (XEXP (src, 1)) != 0
&& (INTVAL (XEXP (src, 1)) & 1) == 0)
return find_base_value (XEXP (src, 0));
return 0;
......@@ -2024,7 +2026,11 @@ find_base_term (rtx x, vec<std::pair<cselib_val *,
}
case AND:
if (CONST_INT_P (XEXP (x, 1)) && INTVAL (XEXP (x, 1)) != 0)
/* Look through aligning ANDs. And AND with zero or one with
the LSB set isn't one (see for example PR92462). */
if (CONST_INT_P (XEXP (x, 1))
&& INTVAL (XEXP (x, 1)) != 0
&& (INTVAL (XEXP (x, 1)) & 1) == 0)
return find_base_term (XEXP (x, 0), visited_vals);
return 0;
......
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