Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Sep 2013 18:34:56 +0200
From:      Tijl Coosemans <tijl@FreeBSD.org>
To:        toolchain@FreeBSD.org
Subject:   Re: i386 clang optimisation problem with stack alignment
Message-ID:  <20130910183456.175162f7@kalimero.tijl.coosemans.org>
In-Reply-To: <20130910181601.2e89af87@kalimero.tijl.coosemans.org>
References:  <20130910181601.2e89af87@kalimero.tijl.coosemans.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--Sig_/5VDEFAF.LE0.vGvdKaQumHB
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

On Tue, 10 Sep 2013 18:16:01 +0200 Tijl Coosemans wrote:
> I've attached a small test program extracted from multimedia/gstreamer-ff=
mpeg
> (libavcodec/h264_cabac.c:ff_h264_init_cabac_states(H264Context *h)).
>=20
> When you compile and run it like this on FreeBSD/i386, it results in a
> SIGBUS:
>=20
> % cc -o paddd paddd.c -O3 -msse2 -fPIE -fomit-frame-pointer=20
> % ./paddd
> Bus error
>=20
> The reason is this instruction where %esp isn't 16-byte aligned:
> paddd   (%esp), %xmm7
>=20
> Is this an upstream bug or is this because of local changes (to make the
> stack 4 byte aligned by default or something)?

Sigh, let me just inline the attachment:

#define NUM 16

signed char state[NUM];
signed char tab[NUM][2];

void
init_states(int slice) {
    int i;

    /* calculate pre-state */
    for( i=3D 0; i < NUM; i++ ) {
        int pre =3D 2*(((tab[i][0] * slice) >>4 ) + tab[i][1]) - 127;

        pre^=3D pre>>31;
        if(pre > 124)
            pre=3D 124 + (pre&1);

        state[i] =3D  pre;
    }
}

int
main(void) {
	init_states(10);
}

--Sig_/5VDEFAF.LE0.vGvdKaQumHB
Content-Type: application/pgp-signature; name=signature.asc
Content-Disposition: attachment; filename=signature.asc

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.21 (FreeBSD)

iF4EAREIAAYFAlIvSjEACgkQfoCS2CCgtivHBgD9Hk96eyg3rHbXETFqcIE1TxOb
/DZOb3Dkr3apof85M/AA/06mAtqDSj8sfqCOL6bEYRqtbdzhiZlIgilI4rjJRZAL
=fJ17
-----END PGP SIGNATURE-----

--Sig_/5VDEFAF.LE0.vGvdKaQumHB--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130910183456.175162f7>