aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/combine.c5
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 25b1813..9ebae9c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2006-11-15 Rask Ingemann Lambertsen <rask@sygehus.dk>
+ J"orn Rennecke <joern.rennecke@st.com>
+
+ * combine.c (likely_spilled_retval_1): Fix masking operation.
+ (likely_spilled_retval_p): Use proper pattern for call to
+ likely_spilled_retval_1.
+
2006-11-15 Bernd Schmidt <bernd.schmidt@analog.com>
* tree-ssa-loop-ivopts.c (determine_iv_costs): Fix formatting.
diff --git a/gcc/combine.c b/gcc/combine.c
index e85e9d1..7f75f9d 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -1659,7 +1659,7 @@ likely_spilled_retval_1 (rtx x, rtx set, void *data)
new_mask >>= info->regno - regno;
else
new_mask <<= regno - info->regno;
- info->mask &= new_mask;
+ info->mask &= ~new_mask;
}
/* Return nonzero iff part of the return value is live during INSN, and
@@ -1695,7 +1695,8 @@ likely_spilled_retval_p (rtx insn)
info.nregs = nregs;
info.mask = mask;
for (p = PREV_INSN (use); info.mask && p != insn; p = PREV_INSN (p))
- note_stores (PATTERN (insn), likely_spilled_retval_1, &info);
+ if (INSN_P (p))
+ note_stores (PATTERN (p), likely_spilled_retval_1, &info);
mask = info.mask;
/* Check if any of the (probably) live return value registers is