aboutsummaryrefslogtreecommitdiff
path: root/gcc/resource.c
diff options
context:
space:
mode:
authorJoern Rennecke <amylaar@gcc.gnu.org>2013-09-06 18:37:50 +0100
committerJoern Rennecke <amylaar@gcc.gnu.org>2013-09-06 18:37:50 +0100
commit3a001aff33dee19c0e93dddd4a31b67b044db267 (patch)
tree203b948fdf9aeb277ad7db4a330532f3c0fce32f /gcc/resource.c
parentc42091c1b505de009cea3420537a5453d81d0165 (diff)
downloadgcc-3a001aff33dee19c0e93dddd4a31b67b044db267.zip
gcc-3a001aff33dee19c0e93dddd4a31b67b044db267.tar.gz
gcc-3a001aff33dee19c0e93dddd4a31b67b044db267.tar.bz2
resource.c (mark_referenced_resources): Handle COND_EXEC.
gcc: * resource.c (mark_referenced_resources): Handle COND_EXEC. gcc/testsuite: * gcc.target/arc/cond-set-use.c: New test. From-SVN: r202344
Diffstat (limited to 'gcc/resource.c')
-rw-r--r--gcc/resource.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/resource.c b/gcc/resource.c
index 919cffb..3671812 100644
--- a/gcc/resource.c
+++ b/gcc/resource.c
@@ -374,6 +374,16 @@ mark_referenced_resources (rtx x, struct resources *res,
case INSN:
case JUMP_INSN:
+ if (GET_CODE (PATTERN (x)) == COND_EXEC)
+ /* In addition to the usual references, also consider all outputs
+ as referenced, to compensate for mark_set_resources treating
+ them as killed. This is similar to ZERO_EXTRACT / STRICT_LOW_PART
+ handling, execpt that we got a partial incidence instead of a partial
+ width. */
+ mark_set_resources (x, res, 0,
+ include_delayed_effects
+ ? MARK_SRC_DEST_CALL : MARK_SRC_DEST);
+
#ifdef INSN_REFERENCES_ARE_DELAYED
if (! include_delayed_effects
&& INSN_REFERENCES_ARE_DELAYED (x))