summaryrefslogtreecommitdiff
path: root/gcc/resource.c
diff options
context:
space:
mode:
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2013-09-06 17:37:50 +0000
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2013-09-06 17:37:50 +0000
commit02b1a16c723f587755b25df5aa82ddee073ed13e (patch)
tree203b948fdf9aeb277ad7db4a330532f3c0fce32f /gcc/resource.c
parentd8e17376c1b6ba379cc918f06843792e35c4e38e (diff)
downloadgcc-02b1a16c723f587755b25df5aa82ddee073ed13e.tar.gz
gcc:
* resource.c (mark_referenced_resources): Handle COND_EXEC. gcc/testsuite: * gcc.target/arc/cond-set-use.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@202344 138bc75d-0d04-0410-961f-82ee72b054a4
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 919cffbd0a0..367181289df 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))