From: Eric Botcazou Date: Tue, 13 Jul 2004 12:08:56 +0000 (+0200) Subject: re PR target/16494 ([3.3.2/3.4/3.5] Pessimization with FP conditional branches) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=883d9e0c3f8da4b06c0fdef2c4e0db8d1c7c7a19;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2062462b1a5..4191d045f1c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2004-07-13 Eric Botcazou + + 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 Lloyd Parkes diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 8f73f1b15f6..199ae0abbfc 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -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 diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index f81482aecaa..fecce781b2e 100644 --- a/gcc/config/sparc/sparc.md +++ b/gcc/config/sparc/sparc.md @@ -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")