Commit 12f289ac by Jim Wilson Committed by Jim Wilson

Fix for powerpc/c4x problem with missed loop optimizations.

	* loop.c (get_condition): Allow combine when either compare is
	VOIDmode.

From-SVN: r22922
parent 1636b950
Thu Oct 8 12:50:47 1998 Jim Wilson <wilson@cygnus.com>
* loop.c (get_condition): Allow combine when either compare is
VOIDmode.
Thu Oct 8 11:31:01 PDT 1998 Jeff Law (law@cygnus.com) Thu Oct 8 11:31:01 PDT 1998 Jeff Law (law@cygnus.com)
* version.c: Bump for snapshot. * version.c: Bump for snapshot.
......
...@@ -7765,7 +7765,14 @@ get_condition (jump, earliest) ...@@ -7765,7 +7765,14 @@ get_condition (jump, earliest)
like Alpha that have an IEEE compliant EQ instruction, and like Alpha that have an IEEE compliant EQ instruction, and
a non-IEEE compliant BEQ instruction. The use of CCmode is a non-IEEE compliant BEQ instruction. The use of CCmode is
actually artificial, simply to prevent the combination, but actually artificial, simply to prevent the combination, but
should not affect other platforms. */ should not affect other platforms.
However, we must allow VOIDmode comparisons to match either
CCmode or non-CCmode comparison, because some ports have
modeless comparisons inside branch patterns.
??? This mode check should perhaps look more like the mode check
in simplify_comparison in combine. */
if ((GET_CODE (SET_SRC (set)) == COMPARE if ((GET_CODE (SET_SRC (set)) == COMPARE
|| (((code == NE || (((code == NE
...@@ -7783,8 +7790,9 @@ get_condition (jump, earliest) ...@@ -7783,8 +7790,9 @@ get_condition (jump, earliest)
#endif #endif
)) ))
&& GET_RTX_CLASS (GET_CODE (SET_SRC (set))) == '<')) && GET_RTX_CLASS (GET_CODE (SET_SRC (set))) == '<'))
&& ((GET_MODE_CLASS (mode) == MODE_CC) && (((GET_MODE_CLASS (mode) == MODE_CC)
== (GET_MODE_CLASS (inner_mode) == MODE_CC))) == (GET_MODE_CLASS (inner_mode) == MODE_CC))
|| mode == VOIDmode || inner_mode == VOIDmode))
x = SET_SRC (set); x = SET_SRC (set);
else if (((code == EQ else if (((code == EQ
|| (code == GE || (code == GE
...@@ -7801,8 +7809,10 @@ get_condition (jump, earliest) ...@@ -7801,8 +7809,10 @@ get_condition (jump, earliest)
#endif #endif
)) ))
&& GET_RTX_CLASS (GET_CODE (SET_SRC (set))) == '<' && GET_RTX_CLASS (GET_CODE (SET_SRC (set))) == '<'
&& ((GET_MODE_CLASS (mode) == MODE_CC) && (((GET_MODE_CLASS (mode) == MODE_CC)
== (GET_MODE_CLASS (inner_mode) == MODE_CC))) == (GET_MODE_CLASS (inner_mode) == MODE_CC))
|| mode == VOIDmode || inner_mode == VOIDmode))
{ {
/* We might have reversed a LT to get a GE here. But this wasn't /* We might have reversed a LT to get a GE here. But this wasn't
actually the comparison of data, so we don't flag that we actually the comparison of data, so we don't flag that we
......
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