== Quote from "Jérôme M. Berger" ([email protected])'s article
> This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
> --------------enigFA970E325419AA4704D394C4
> Content-Type: multipart/mixed;
>  boundary="------------020802090108050507010000"
> This is a multi-part message in MIME format.
> --------------020802090108050507010000
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: quoted-printable
>       Hi,
>       Gdc (c3e22fb3bf19) fails to build phobos on x86_64:
> > /home/jerome/abs/gdc-hg/src/gcc-build/./gcc/gdc -B/home/jerome/abs/gdc-=
> hg/src/gcc-build/./gcc/ -B/usr/x86_64-unknown-linux-gnu/bin/ -B/usr/x86_6=
> 4-unknown-linux-gnu/lib/ -isystem /usr/x86_64-unknown-linux-gnu/include -=
> isystem /usr/x86_64-unknown-linux-gnu/sys-include -o std/regexp.o -g -fre=
> lease -O2 -fversion=3DGC_Use_Alloc_MMap -fversion=3DGC_Use_Stack_GLibC -f=
> version=3DGC_Use_Data_Fixed -nostdinc -pipe   \
> >     -I ../../../gcc-4.4.5-build/libphobos -I ../../../gcc-4.4.5-build/libp=
> hobos/internal/gc -I ./x86_64-unknown-linux-gnu -c ../../../gcc-4.4.5-bui=
> ld/libphobos/std/regexp.d
> > ../../../gcc-4.4.5-build/libphobos/std/regexp.d:1632: Error: function s=
> td.intrinsic.bt (ulong*,ulong) does not match parameter types (uint*,uint=
> )
> > ../../../gcc-4.4.5-build/libphobos/std/regexp.d:1632: Error: cannot imp=
> licitly convert expression (cast(uint*)&this.program[pc + 1LU + 4LU]) of =
> type uint* to ulong*
> > ../../../gcc-4.4.5-build/libphobos/std/regexp.d:1647: Error: function s=
> td.intrinsic.bt (ulong*,ulong) does not match parameter types (uint*,uint=
> )
> > ../../../gcc-4.4.5-build/libphobos/std/regexp.d:1647: Error: cannot imp=
> licitly convert expression (cast(uint*)&this.program[pc + 1LU + 4LU]) of =
> type uint* to ulong*
> > ../../../gcc-4.4.5-build/libphobos/std/regexp.d:1662: Error: function s=
> td.intrinsic.bt (ulong*,ulong) does not match parameter types (uint*,uint=
> )
> > ../../../gcc-4.4.5-build/libphobos/std/regexp.d:1662: Error: cannot imp=
> licitly convert expression (cast(uint*)&this.program[pc + 1LU + 4LU]) of =
> type uint* to ulong*
> > make[3]: *** [std/regexp.o] Error 1
> > make[3]: Leaving directory `/home/jerome/abs/gdc-hg/src/gcc-build/x86_6=
> 4-unknown-linux-gnu/libphobos'
> > make[2]: *** [all] Error 2
> > make[2]: Leaving directory `/home/jerome/abs/gdc-hg/src/gcc-build/x86_6=
> 4-unknown-linux-gnu/libphobos'
> > make[1]: *** [all-target-libphobos] Error 2
> > make[1]: Leaving directory `/home/jerome/abs/gdc-hg/src/gcc-build'
> > make: *** [all] Error 2
>       The attached patch allows it to build (but I haven't tested the
> resulting lib since I don't use regexp myself).
>               Jerome
> --=20
> mailto:[email protected]
> http://jeberger.free.fr
> Jabber: [email protected]
> --------------020802090108050507010000
> Content-Type: text/x-patch;
>  name="regexp-x86_64.patch"
> Content-Transfer-Encoding: quoted-printable
> Content-Disposition: inline;
>  filename="regexp-x86_64.patch"
> # HG changeset patch
> # Parent c3e22fb3bf19523679289f50b83bd0c5c39fc463
> Fix phobos 1 build issues on x86_64.
> diff -r c3e22fb3bf19 -r f424bf435a88 d/phobos/std/regexp.d
> --- a/d/phobos/std/regexp.d   Thu Oct 14 14:15:30 2010 +0100
> +++ b/d/phobos/std/regexp.d   Sat Oct 16 09:09:09 2010 +0200
> @@ -1486,7 +1486,7 @@
>      size_t pop;
>      size_t ss;
>      regmatch_t *psave;
> -    uint c1;
> +    size_t c1;
>      uint c2;
>      ushort* pu;
>      uint* puint;
> @@ -1629,7 +1629,7 @@
>                  c1 =3D input[src];
>                  //printf("[x%02x]=3Dx%02x, x%02x\n", c1 >> 3, ((&program=
> [pc + 1 + 4])[c1 >> 3] ), (1 << (c1 & 7)));
>                  if (c1 <=3D pu[0] &&
> -                    !bt(cast(uint*)&(program[pc + 1 + 4]), c1)) // assum=
> es BitArray implementation
> +                    !bt(cast(size_t*)&(program[pc + 1 + 4]), c1)) // ass=
> umes BitArray implementation
>                      goto Lnomatch;
>                  pc +=3D 1 + 2 * ushort.sizeof + len;
>                  break;
> @@ -1644,7 +1644,7 @@
>                  c1 =3D input[src];
>                  if (c1 > pu[0])
>                      goto Lnomatch;
> -                if (!bt(cast(uint*)&(program[pc + 1 + 4]), c1)) // assum=
> es BitArray implementation
> +                if (!bt(cast(size_t*)&(program[pc + 1 + 4]), c1)) // ass=
> umes BitArray implementation
>                      goto Lnomatch;
>                  src++;
>                  pc +=3D 1 + 2 * ushort.sizeof + len;
> @@ -1659,7 +1659,7 @@
>                  len =3D pu[1];
>                  c1 =3D input[src];
>                  if (c1 <=3D pu[0] &&
> -                    bt(cast(uint*)&(program[pc + 1 + 4]), c1)) // assume=
> s BitArray implementation
> +                    bt(cast(size_t*)&(program[pc + 1 + 4]), c1)) // assu=
> mes BitArray implementation
>                      goto Lnomatch;
>                  src++;
>                  pc +=3D 1 + 2 * ushort.sizeof + len;
> --------------020802090108050507010000--
> --------------enigFA970E325419AA4704D394C4
> Content-Type: application/pgp-signature; name="signature.asc"
> Content-Description: OpenPGP digital signature
> Content-Disposition: attachment; filename="signature.asc"
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> iEYEARECAAYFAky5T94ACgkQd0kWM4JG3k87PgCghlzpo3/dPTAtBaW0D7Ordf7I
> 1v0AoLFdbWDHc1VnHiboqlCmMFidn5i1
> =mj9j
> -----END PGP SIGNATURE-----
> --------------enigFA970E325419AA4704D394C4--

Strange, I thought I fixed this in commit 282, but according to history it got
reverted back in 288 by accident. Thanks for letting us know!

Regards
Iain

Reply via email to