Subject: Re: bin/14489: C++ compiler problem cross compiling from alpha to i386
To: None <netbsd-bugs@netbsd.org>
From: Robert Elz <kre@munnari.OZ.AU>
List: netbsd-bugs
Date: 11/07/2001 01:55:36
    Date:        Wed, 7 Nov 2001 01:40:28 +0700 (ICT)
    From:        kre@munnari.OZ.AU
    Message-ID:  <200111061840.fA6IeSn04752@brandenburg.cs.mu.OZ.AU>

  | /var/tmp/ccesZfXi.s:852: Error: Value of 4294967296 too large for field of 4 bytes at 1724

The code in question is ...

        movzwl %dx,%eax
        leal (%eax,%eax,2),%eax
        leal tags+4294962496(,%eax,4),%ebx
        jmp .L90
        .align 4
.L89:   
        leal -12(%ebp),%ebx
.L90:   

I don't understand much about i386 processors, but I doubt that it
is really wanting to make a 4GB offset (plus a bit) from what's in
some register...

This has all the smells of some code that assumes integers will
overflow at 2^32, and knows that the overflow is irrelevant, and
wants it to be ignored (but didn't bother explicitly masking).

All of the errors were that kind of thing - different instructions,
but always "tags+big_number".

This is just in case this helps someone find & fix the problem.

kre