From 2a562b0ab31fe77a48dcaca05d2e6d31c29bbeab Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Tue, 5 Apr 2011 10:04:44 +0000 Subject: [PATCH] re PR target/43920 (Choosing conditional execution over conditional branches for code size in some cases.) 2011-04-05 Tom de Vries PR target/43920 * cfgcleanup.c (flow_find_cross_jump): Don't count USE or CLOBBER as insn. From-SVN: r171976 --- gcc/ChangeLog | 6 ++++++ gcc/cfgcleanup.c | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d9bc24e3e7f..6cde480d9d8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-04-05 Tom de Vries + + PR target/43920 + * cfgcleanup.c (flow_find_cross_jump): Don't count USE or CLOBBER as + insn. + 2011-04-05 Tom de Vries * cfgcleanup.c (try_crossjump_bb): Remove 2 superfluous variables. diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 6178b59a7c4..112cb4907b4 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -1070,6 +1070,7 @@ flow_find_cross_jump (basic_block bb1, basic_block bb2, rtx *f1, rtx *f2) { rtx i1, i2, last1, last2, afterlast1, afterlast2; int ninsns = 0; + rtx p1; /* Skip simple jumps at the end of the blocks. Complex jumps still need to be compared for equivalence, which we'll do below. */ @@ -1118,7 +1119,9 @@ flow_find_cross_jump (basic_block bb1, basic_block bb2, rtx *f1, rtx *f2) afterlast1 = last1, afterlast2 = last2; last1 = i1, last2 = i2; - ninsns++; + p1 = PATTERN (i1); + if (!(GET_CODE (p1) == USE || GET_CODE (p1) == CLOBBER)) + ninsns++; } i1 = PREV_INSN (i1); -- 2.30.2