mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-24 08:00:29 +08:00
re PR target/16494 ([3.3.2/3.4/3.5] Pessimization with FP conditional branches)
PR target/16494 * config/sparc/sparc.c (output_cbranch): Properly guard the code handling far branches with TARGET_V9. * config/sparc/sparc.md (length attribute): Document the side-effect of having a length greater or equal to 3. From-SVN: r84618
This commit is contained in:
parent
aeb29bae3d
commit
883d9e0c3f
@ -1,3 +1,11 @@
|
||||
2004-07-13 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR target/16494
|
||||
* config/sparc/sparc.c (output_cbranch): Properly guard
|
||||
the code handling far branches with TARGET_V9.
|
||||
* config/sparc/sparc.md (length attribute): Document the
|
||||
side-effect of having a length greater or equal to 3.
|
||||
|
||||
2004-07-13 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
Lloyd Parkes <lloyd@must-have-coffee.gen.nz>
|
||||
|
||||
|
@ -6131,7 +6131,7 @@ output_cbranch (rtx op, rtx dest, int label, int reversed, int annul,
|
||||
nop
|
||||
ba .LC29 */
|
||||
|
||||
far = get_attr_length (insn) >= 3;
|
||||
far = TARGET_V9 && (get_attr_length (insn) >= 3);
|
||||
if (reversed ^ far)
|
||||
{
|
||||
/* Reversal of FP compares takes care -- an ordered compare
|
||||
@ -6261,9 +6261,7 @@ output_cbranch (rtx op, rtx dest, int label, int reversed, int annul,
|
||||
spaces -= 2;
|
||||
}
|
||||
|
||||
if (! TARGET_V9)
|
||||
labelno = "";
|
||||
else
|
||||
if (TARGET_V9)
|
||||
{
|
||||
rtx note;
|
||||
int v8 = 0;
|
||||
@ -6313,6 +6311,9 @@ output_cbranch (rtx op, rtx dest, int label, int reversed, int annul,
|
||||
spaces -= 3;
|
||||
}
|
||||
}
|
||||
else
|
||||
labelno = "";
|
||||
|
||||
if (spaces > 0)
|
||||
*p++ = '\t';
|
||||
else
|
||||
|
@ -128,6 +128,8 @@
|
||||
(symbol_ref "flag_delayed_branch != 0"))
|
||||
|
||||
;; Length (in # of insns).
|
||||
;; Beware that setting a length greater or equal to 3 for conditional branches
|
||||
;; has a side-effect (see output_cbranch and output_v9branch).
|
||||
(define_attr "length" ""
|
||||
(cond [(eq_attr "type" "uncond_branch,call")
|
||||
(if_then_else (eq_attr "empty_delay_slot" "true")
|
||||
|
Loading…
x
Reference in New Issue
Block a user