Commit acceac1a by J"orn Rennecke Committed by Jeff Law

* sched.c (update_flow_info) When looking if to set found_split_dest

        or found_orig_dest, look at all parts of a PARALLEL.
        * haifa-sched.c (update_flow_info): Likewise.

From-SVN: r15115
parent e20d4801
Fri Sep 5 13:36:44 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
* sched.c (update_flow_info) When looking if to set found_split_dest
or found_orig_dest, look at all parts of a PARALLEL.
* haifa-sched.c (update_flow_info): Likewise.
Fri Sep 5 10:08:44 1997 Jeffrey A Law (law@cygnus.com) Fri Sep 5 10:08:44 1997 Jeffrey A Law (law@cygnus.com)
* v850: New directory for v850 port. * v850: New directory for v850 port.
......
...@@ -8205,21 +8205,37 @@ update_flow_info (notes, first, last, orig_insn) ...@@ -8205,21 +8205,37 @@ update_flow_info (notes, first, last, orig_insn)
for (insn = first;; insn = NEXT_INSN (insn)) for (insn = first;; insn = NEXT_INSN (insn))
{ {
set = single_set (insn); rtx pat;
if (set) int i;
/* I'm not sure if this can happen, but let's be safe. */
if (GET_RTX_CLASS (GET_CODE (insn)) != 'i')
continue;
pat = PATTERN (insn);
i = GET_CODE (pat) == PARALLEL ? XVECLEN (pat, 0) : 0;
set = pat;
for (;;)
{ {
if (GET_CODE (SET_DEST (set)) == REG if (GET_CODE (set) == SET)
&& REGNO (SET_DEST (set)) == REGNO (orig_dest))
{
found_orig_dest = 1;
break;
}
else if (GET_CODE (SET_DEST (set)) == SUBREG
&& SUBREG_REG (SET_DEST (set)) == orig_dest)
{ {
found_split_dest = 1; if (GET_CODE (SET_DEST (set)) == REG
break; && REGNO (SET_DEST (set)) == REGNO (orig_dest))
{
found_orig_dest = 1;
break;
}
else if (GET_CODE (SET_DEST (set)) == SUBREG
&& SUBREG_REG (SET_DEST (set)) == orig_dest)
{
found_split_dest = 1;
break;
}
} }
if (--i < 0)
break;
set = XVECEXP (pat, 0, i);
} }
if (insn == last) if (insn == last)
......
...@@ -4108,21 +4108,36 @@ update_flow_info (notes, first, last, orig_insn) ...@@ -4108,21 +4108,36 @@ update_flow_info (notes, first, last, orig_insn)
for (insn = first; ; insn = NEXT_INSN (insn)) for (insn = first; ; insn = NEXT_INSN (insn))
{ {
set = single_set (insn); rtx pat;
if (set) int i;
/* I'm not sure if this can happen, but let's be safe. */
if (GET_RTX_CLASS (GET_CODE (insn)) != 'i')
continue;
pat = PATTERN (insn);
i = GET_CODE (pat) == PARALLEL ? XVECLEN (pat, 0) : 0;
set = pat;
for (;;)
{ {
if (GET_CODE (SET_DEST (set)) == REG if (GET_CODE (set) == SET)
&& REGNO (SET_DEST (set)) == REGNO (orig_dest))
{
found_orig_dest = 1;
break;
}
else if (GET_CODE (SET_DEST (set)) == SUBREG
&& SUBREG_REG (SET_DEST (set)) == orig_dest)
{ {
found_split_dest = 1; if (GET_CODE (SET_DEST (set)) == REG
break; && REGNO (SET_DEST (set)) == REGNO (orig_dest))
{
found_orig_dest = 1;
break;
}
else if (GET_CODE (SET_DEST (set)) == SUBREG
&& SUBREG_REG (SET_DEST (set)) == orig_dest)
{
found_split_dest = 1;
break;
}
} }
if (--i < 0)
break;
set = XVECEXP (pat, 0, i);
} }
if (insn == last) if (insn == last)
......
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