From: Eric Botcazou Date: Mon, 25 Mar 2013 11:25:28 +0000 (+0000) Subject: * postreload.c (reload_combine): Fix code detecting returns. X-Git-Tag: upstream/12.2.0~70701 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5789594736ea2fae7b4d45a5486560fd2f8d9aea;p=platform%2Fupstream%2Fgcc.git * postreload.c (reload_combine): Fix code detecting returns. From-SVN: r197037 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 072efd7..89e0b7a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2013-03-25 Eric Botcazou + * postreload.c (reload_combine): Fix code detecting returns. + +2013-03-25 Eric Botcazou + * function.c (emit_use_return_register_into_block): On cc0 targets, do not emit the sequence between cc0 setter and user. diff --git a/gcc/postreload.c b/gcc/postreload.c index daabaa1..33462e4 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -1387,7 +1387,7 @@ reload_combine (void) } } - if (control_flow_insn && GET_CODE (PATTERN (insn)) != RETURN) + if (control_flow_insn && !ANY_RETURN_P (PATTERN (insn))) { /* Non-spill registers might be used at the call destination in some unknown fashion, so we have to mark the unknown use. */ @@ -1395,13 +1395,19 @@ reload_combine (void) if ((condjump_p (insn) || condjump_in_parallel_p (insn)) && JUMP_LABEL (insn)) - live = &LABEL_LIVE (JUMP_LABEL (insn)); + { + if (ANY_RETURN_P (JUMP_LABEL (insn))) + live = NULL; + else + live = &LABEL_LIVE (JUMP_LABEL (insn)); + } else live = &ever_live_at_start; - for (r = 0; r < FIRST_PSEUDO_REGISTER; r++) - if (TEST_HARD_REG_BIT (*live, r)) - reg_state[r].use_index = -1; + if (live) + for (r = 0; r < FIRST_PSEUDO_REGISTER; r++) + if (TEST_HARD_REG_BIT (*live, r)) + reg_state[r].use_index = -1; } reload_combine_note_use (&PATTERN (insn), insn, reload_combine_ruid,