Commit 36088299 by Richard Biener Committed by Richard Biener

match.pd ((T)(T2)x -> (T)x): Remove restriction on final precision not matching mode precision.

2016-07-29  Richard Biener  <rguenther@suse.de>

	* match.pd ((T)(T2)x -> (T)x): Remove restriction on final
	precision not matching mode precision.

From-SVN: r237838
parent c0587ee5
2016-07-29 Richard Biener <rguenther@suse.de>
* match.pd ((T)(T2)x -> (T)x): Remove restriction on final
precision not matching mode precision.
2016-06-28 John David Anglin <danglin@gcc.gnu.org> 2016-06-28 John David Anglin <danglin@gcc.gnu.org>
* config/pa/pa.md (call_symref_64bit_post_reload): Don't call * config/pa/pa.md (call_symref_64bit_post_reload): Don't call
......
...@@ -1652,14 +1652,11 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) ...@@ -1652,14 +1652,11 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
float or both integer, we don't need the middle conversion if the float or both integer, we don't need the middle conversion if the
former is wider than the latter and doesn't change the signedness former is wider than the latter and doesn't change the signedness
(for integers). Avoid this if the final type is a pointer since (for integers). Avoid this if the final type is a pointer since
then we sometimes need the middle conversion. Likewise if the then we sometimes need the middle conversion. */
final type has a precision not equal to the size of its mode. */
(if (((inter_int && inside_int) || (inter_float && inside_float)) (if (((inter_int && inside_int) || (inter_float && inside_float))
&& (final_int || final_float) && (final_int || final_float)
&& inter_prec >= inside_prec && inter_prec >= inside_prec
&& (inter_float || inter_unsignedp == inside_unsignedp) && (inter_float || inter_unsignedp == inside_unsignedp))
&& ! (final_prec != GET_MODE_PRECISION (TYPE_MODE (type))
&& TYPE_MODE (type) == TYPE_MODE (inter_type)))
(ocvt @0)) (ocvt @0))
/* If we have a sign-extension of a zero-extended value, we can /* If we have a sign-extension of a zero-extended value, we can
...@@ -1692,9 +1689,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) ...@@ -1692,9 +1689,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
&& ((inter_unsignedp && inter_prec > inside_prec) && ((inter_unsignedp && inter_prec > inside_prec)
== (final_unsignedp && final_prec > inter_prec)) == (final_unsignedp && final_prec > inter_prec))
&& ! (inside_ptr && inter_prec != final_prec) && ! (inside_ptr && inter_prec != final_prec)
&& ! (final_ptr && inside_prec != inter_prec) && ! (final_ptr && inside_prec != inter_prec))
&& ! (final_prec != GET_MODE_PRECISION (TYPE_MODE (type))
&& TYPE_MODE (type) == TYPE_MODE (inter_type)))
(ocvt @0)) (ocvt @0))
/* A truncation to an unsigned type (a zero-extension) should be /* A truncation to an unsigned type (a zero-extension) should be
......
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