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: