This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix PR target/5626 (was Re: Infrastructure for long branches?)


> Please try the following patch which should increase the +-32kinsn
> limitation for branch on register to +-2Minsns (which I believe is the top
> what can be reasonably supported, because otherwise every branch would
> require a scratch register one could build destination address into
> to issue a jmpl).

Unfortunately, this patch causes a bootstrap comparison failure:

Bootstrap comparison failure!
fold-const.o differs

I'd like to ask another question re:

> -  [(set_attr "type" "branch")])
> +  [(set_attr "type" "branch")
> +   (set (attr "length")
> +        (if_then_else (lt (pc) (match_dup 2))
> +		      (if_then_else (lt (minus (match_dup 2) (pc))
> +					(const_int 32000))
> +				    (const_int 1)
> +				    (const_int 3))
> +		      (if_then_else (lt (minus (pc) (match_dup 2))
> +					(const_int 32000))
> +				    (const_int 1)
> +				    (const_int 3))))])

It seems that you're saying that if the jump is < 32000 instructions,
just put it in, otherwise put in the three-instruction long jump
sequence.

Couldn't this cause a problem if more than 384 jumps between the jump
and the target were lengthened?  Then you'd still have a 32768 instruction
jump limit, but a longer jump.

Brad


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]