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 ping


On Mon, 2004-04-19 at 14:16, Paul Brook wrote:
> On Monday 19 April 2004 13:57, Andreas Schwab wrote:
> > "Paolo Bonzini" <bonzini@gnu.org> writes:
> > >> Paolo,
> > >>
> > >> on which platform did you bootstrap this?
> > >
> > > i686-pc-linux-gnu, all languages except Ada/treelang.
> > >
> > >> It causes build errors on
> > >> both Linux/x86-64 and Linux/ia64 as reported by Andreas Schwab and
> > >> myself on the main GCC list yesterday.
> > >>
> > >> Please fix the regressions that your patch has caused.
> > >
> > > As I wrote on gcc, I don't think I can be blamed on this.  The bugs are
> > > not in the code I touched, but only in the code I enabled.  All I can do
> > > is disabling -frename-registers on the affected archs, as per the
> > > attached patch disable-ada-rename-regs.patch.
> >
> > This has nothing to do with Ada, the same error happens with libstdc++ as
> > well, see <http://gcc.gnu.org/ml/gcc/2004-04/msg00830.html>. It seems like
> > -frename-registers is generally broken, or triggers generally broken code.
> 
> It also breaks libstdc++ on arm/thumb.
> 
> Paul

If you are seeing this bug:

/work/rearnsha/gnu/egcs/gcc/xgcc -shared-libgcc -B/work/rearnsha/gnu/egcs/gcc/ -
nostdinc++ -L/work/rearnsha/gnu/egcs/arm-elf/libstdc++-v3/src -L/work/rearnsha/g
nu/egcs/arm-elf/libstdc++-v3/src/.libs -nostdinc -B/work/rearnsha/gnu/egcs/arm-e
lf/newlib/ -isystem /work/rearnsha/gnu/egcs/arm-elf/newlib/targ-include -isystem
 /home/rearnsha/gnusrc/egcs-cross/newlib/libc/include -B/work/rearnsha/gnu/testi
nstall/arm-elf/bin/ -B/work/rearnsha/gnu/testinstall/arm-elf/lib/ -isystem /work
/rearnsha/gnu/testinstall/arm-elf/include -isystem /work/rearnsha/gnu/testinstal
l/arm-elf/sys-include -L/work/rearnsha/gnu/egcs/ld -I/work/rearnsha/gnu/egcs/arm
-elf/libstdc++-v3/include/arm-elf -I/work/rearnsha/gnu/egcs/arm-elf/libstdc++-v3
/include -I/home/rearnsha/gnusrc/egcs-cross/libstdc++-v3/libsupc++ -O2 -g -O2 -g
 -O2 -fno-implicit-templates -Wall -W -Wwrite-strings -Wcast-qual -fdiagnostics-
show-location=once -c /home/rearnsha/gnusrc/egcs-cross/libstdc++-v3/src/complex_
io.cc -o complex_io.o
/work/rearnsha/gnu/egcs/arm-elf/libstdc++-v3/include/complex: In function `std::
basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Trai
ts>&, conststd::complex<_Tp>&) [with _Tp = float, _CharT = char, _Traits = std::
char_traits<char>]':
/work/rearnsha/gnu/egcs/arm-elf/libstdc++-v3/include/complex:1455: error: insn d
oes not satisfy its constraints:
(insn:HI 2559 6401 6402 47 /work/rearnsha/gnu/egcs/arm-elf/libstdc++-v3/include/
streambuf:187 (set (mem/s:SI (post_modify:SI (reg:SI 12 ip)
                (plus:SI (reg:SI 12 ip)
                    (const_int 28 [0x1c]))) [9 <variable>._vptr.basic_streambuf+
0 S4 A32])
        (reg/f:SI 3 r3 [314])) 140 {*arm_movsi_insn} (insn_list 2558 (nil))
    (expr_list:REG_DEAD (reg/f:SI 3 r3 [314])
        (expr_list:REG_INC (reg:SI 12 ip)
            (nil))))

Then I think this is because arm_legitimate_address_p is doing something
wrong.  Probably this test:

  else if ((GET_CODE (x) == POST_MODIFY || GET_CODE (x) == PRE_MODIFY)
	   && GET_MODE_SIZE (mode) <= 4
	   && arm_address_register_rtx_p (XEXP (x, 0), strict_p)
	   && GET_CODE (XEXP (x, 1)) == PLUS
	   && XEXP (XEXP (x, 1), 0) == XEXP (x, 0))

That final equivalence should probably be using rtx_equal_p(), but I
haven't tested that yet.

R.


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