aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1992-04-27 09:55:54 -0700
committerJim Wilson <wilson@gcc.gnu.org>1992-04-27 09:55:54 -0700
commitbf1c694003abf85a066233c698e037b9e9c78953 (patch)
treef12fcbcc9c8b98a3453cc551b29a54105afa50ac
parenta87104d913a70d59e0641e9a68a88f3cd8671b9d (diff)
downloadgcc-bf1c694003abf85a066233c698e037b9e9c78953.zip
gcc-bf1c694003abf85a066233c698e037b9e9c78953.tar.gz
gcc-bf1c694003abf85a066233c698e037b9e9c78953.tar.bz2
*** empty log message ***
From-SVN: r841
-rw-r--r--gcc/flow.c3
-rw-r--r--gcc/print-tree.c1
-rw-r--r--gcc/unroll.c26
3 files changed, 14 insertions, 16 deletions
diff --git a/gcc/flow.c b/gcc/flow.c
index 1ee55c1..b5a07fa 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -519,7 +519,8 @@ find_basic_blocks (f, nonlocal_label_list)
if (GET_CODE (insn) == JUMP_INSN
&& GET_CODE (PATTERN (insn)) == SET
&& SET_DEST (PATTERN (insn)) == pc_rtx
- && GET_CODE (SET_SRC (PATTERN (insn))) == REG)
+ && (GET_CODE (SET_SRC (PATTERN (insn))) == REG
+ || GET_CODE (SET_SRC (PATTERN (insn))) == MEM))
{
rtx x;
for (x = label_value_list; x; x = XEXP (x, 1))
diff --git a/gcc/print-tree.c b/gcc/print-tree.c
index 9001373..74a6026 100644
--- a/gcc/print-tree.c
+++ b/gcc/print-tree.c
@@ -467,6 +467,7 @@ print_node (file, prefix, node, indent)
case BIND_EXPR:
print_node (file, "vars", TREE_OPERAND (node, 0), indent + 4);
print_node (file, "body", TREE_OPERAND (node, 1), indent + 4);
+ print_node (file, "block", TREE_OPERAND (node, 2), indent + 4);
return;
}
diff --git a/gcc/unroll.c b/gcc/unroll.c
index 92886fe..f4719e3 100644
--- a/gcc/unroll.c
+++ b/gcc/unroll.c
@@ -2435,25 +2435,21 @@ find_splittable_givs (bl, unroll_type, loop_start, loop_end, increment,
if (v->new_reg)
{
- /* If the giv is an address destination, it could be something other
- than a simple register, these have to be treated differently. */
- if (v->giv_type == DEST_REG)
- splittable_regs[REGNO (v->new_reg)] = value;
-
- /* If an addr giv was combined with another addr giv, then we
- can only split this giv if the addr giv it was combined with
- was reduced. This is because the value of v->new_reg is
- meaningless in this case. (There is no problem if it was
- combined with a dest_reg giv which wasn't reduced, v->new_reg
- is still meaningful in this case.) */
-
- else if (v->same && v->same->giv_type == DEST_ADDR
- && ! v->same->new_reg)
+ /* If a giv was combined with another giv, then we can only split
+ this giv if the giv it was combined with was reduced. This
+ is because the value of v->new_reg is meaningless in this
+ case. */
+ if (v->same && ! v->same->new_reg)
{
if (loop_dump_stream)
fprintf (loop_dump_stream,
- "DEST_ADDR giv not split, because combined with unreduced DEST_ADDR giv.\n");
+ "giv combined with unreduced giv not split.\n");
+ continue;
}
+ /* If the giv is an address destination, it could be something other
+ than a simple register, these have to be treated differently. */
+ else if (v->giv_type == DEST_REG)
+ splittable_regs[REGNO (v->new_reg)] = value;
else
{
/* Splitting address givs is useful since it will often allow us