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>