[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#207915: gcc-3.3: [mips/el] Potential solution



severity 207915 important
forwarded 207915 http://gcc.gnu.org/PR11716
thanks

workaround seems to be possible using --Wa,-relax-branch. Applying
Dan's patch.

Daniel Jacobowitz writes:
> Package: gcc-3.3
> Version: 1:3.3.2-0pre1
> Followup-For: Bug #207915
> 
> MontaVista hit the same problem.  Here's the patch (written by Michael
> Eager) we're using to avoid it:
> 
> diff -urNp gcc-3.3-orig/gcc/config/mips/mips.md gcc-3.3/gcc/config/mips/mips.md
> --- gcc-3.3-orig/gcc/config/mips/mips.md	Fri Aug 15 11:16:29 2003
> +++ gcc-3.3/gcc/config/mips/mips.md	Mon Aug 18 08:22:37 2003
> @@ -104,7 +104,7 @@
>  (define_attr "length" ""
>     (cond [(eq_attr "type" "branch")
>            (cond [(lt (abs (minus (match_dup 1) (plus (pc) (const_int 4))))
> -                     (const_int 131072))
> +                     (const_int 65536))
>                   (const_int 4)
>  		 (ne (symbol_ref "flag_pic && ! TARGET_EMBEDDED_PIC")
>  		     (const_int 0))
> @@ -9624,7 +9624,7 @@ move\\t%0,%z4\\n\\
>  		  (const_int 0))
>  	      (lt (abs (minus (match_dup 0)
>  			      (plus (pc) (const_int 4))))
> -		  (const_int 131072)))
> +		  (const_int 65536)))
>  	 (const_int 4) (const_int 16)))])
>  
>  ;; We need a different insn for the mips16, because a mips16 branch
> 
> 
> In other words, make GCC think that the maximum length of a short branch is
> 64K instead of 128K.  It's a big hammer, but it works.
> 
> We're also using this:
> 
> @@ -9606,9 +9606,9 @@ move\\t%0,%z4\\n\\
>        if (get_attr_length (insn) <= 8)
>  	return \"%*b\\t%l0\";
>        else if (Pmode == DImode)
> -	return \"%[dla\\t%@,%l0\;%*jr\\t%@%]\";
> +	return \"dla\\t%@,%l0\;%*jr\\t%@\";
>        else
> -	return \"%[la\\t%@,%l0\;%*jr\\t%@%]\";
> +	return \"la\\t%@,%l0\;%*jr\\t%@\";
>      }
>    else
>      return \"%*j\\t%l0\";
> 
> but that just trades one set of assembly warnings for another.  The %[%] are
> .set noat/.set at; but la is a macro which expands to a use of $at...
> 
> -- System Information:
> Debian Release: testing/unstable
> Architecture: i386
> Kernel: Linux nevyn 2.6.0-test4-nevyn #1 SMP Sat Aug 23 11:19:59 EDT 2003 i686
> Locale: LANG=en_US, LC_CTYPE=en_US
> 
> Versions of packages gcc-3.3 depends on:
> ii  binutils                 2.14.90.0.5-0.2 The GNU assembler, linker and bina
> ii  cpp-3.3                  1:3.3.2-0pre1   The GNU C preprocessor
> ii  gcc-3.3-base             1:3.3.2-0pre1   The GNU Compiler Collection (base 
> ii  libc6                    2.3.2-4         GNU C Library: Shared libraries an
> ii  libgcc1                  1:3.3.2-0pre1   GCC support library
> 
> -- no debconf information
> 
> 
> -- 
> Daniel Jacobowitz
> MontaVista Software                         Debian GNU/Linux Developer
> 
> 
> -- 
> To UNSUBSCRIBE, email to debian-gcc-request@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: