From b6c9b9bcca7a1fa238b99a89793b6240659727f0 Mon Sep 17 00:00:00 2001 From: Zdenek Dvorak Date: Thu, 16 Feb 2006 16:59:00 +0100 Subject: [PATCH] loop-invariant.c (invariant_for_use, [...]): Fail for read-write uses. * loop-invariant.c (invariant_for_use, check_dependencies): Fail for read-write uses. From-SVN: r111141 --- gcc/ChangeLog | 5 +++++ gcc/loop-invariant.c | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d01a0490d8d..953abf6cadd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-02-16 Zdenek Dvorak + + * loop-invariant.c (invariant_for_use, check_dependencies): Fail for + read-write uses. + 2006-02-16 Zdenek Dvorak PR rtl-optimization/26296 diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c index 03a0c34e6cb..04531a0e05f 100644 --- a/gcc/loop-invariant.c +++ b/gcc/loop-invariant.c @@ -233,6 +233,9 @@ invariant_for_use (struct df_ref *use) struct df_ref *def; basic_block bb = BLOCK_FOR_INSN (use->insn), def_bb; + if (use->flags & DF_REF_READ_WRITE) + return NULL; + defs = DF_REF_CHAIN (use); if (!defs || defs->next) return NULL; @@ -682,7 +685,8 @@ record_use (struct def *def, rtx *use, rtx insn) } /* Finds the invariants INSN depends on and store them to the DEPENDS_ON - bitmap. */ + bitmap. Returns true if all dependencies of INSN are known to be + loop invariants, false otherwise. */ static bool check_dependencies (rtx insn, bitmap depends_on) @@ -695,6 +699,9 @@ check_dependencies (rtx insn, bitmap depends_on) for (use = DF_INSN_GET (df, insn)->uses; use; use = use->next_ref) { + if (use->flags & DF_REF_READ_WRITE) + return false; + defs = DF_REF_CHAIN (use); if (!defs) continue; -- 2.30.2