Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Sep 2012 15:21:22 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Roman Divacky <rdivacky@freebsd.org>
Cc:        toolchain@freebsd.org, current@freebsd.org
Subject:   Re: Clang as default compiler November 4th
Message-ID:  <20120911122122.GJ37286@deviant.kiev.zoral.com.ua>
In-Reply-To: <20120911120649.GA52235@freebsd.org>
References:  <20120910211207.GC64920@lor.one-eyed-alien.net> <20120911104518.GF37286@deviant.kiev.zoral.com.ua> <20120911120649.GA52235@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--lYetfuAxy9ic4HK3
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, Sep 11, 2012 at 02:06:49PM +0200, Roman Divacky wrote:
> > > tl;dr: Clang will become the default compiler for x86 architectures o=
n 2012-11-04
> >=20
> > There was a chorus of voices talking about ports already. My POV
> > is that suggesting to 'fix remaining ports to work with clang' is
> > just a nonsense. You are proposing to fork the development of all the
> > programs which do not compile with clang. Often, upstream developers
> > do not care about clang at all since it not being default compiler in
> > Debian/Fedora/Whatever Linux. The project simply do not have resources
> > to maintain the fork of 20K programs.
> =20
> We currently dont compile 4680 ports (out of 23857). Top 10 ports that pr=
event
> the most other ports from compiling together prevent 2222 ports from
> compilation. So if we fixed those 10 ports we could be at around 2500 por=
ts
> not compiling. Thats quite far from your claim of forking 20k programs.
Sorry, I cannot buy the argument. How many patches there are already
in the ports tree to cope with clang incompatibility with gcc ? You may
declare that all of them are application bugs, but it completely misses
the point.

>=20
> > Looking from less amiable angle, you propose to knowingly break signifi=
cant
> > and important piece of the project work. My belief is that switch cannot
> > be done before ports switch to the port-provided compiler.
> =20
> I believe majority of the broken ports is broken because their maintainer
> never saw them being broken with clang just because it's not the default
> compiler. Thus by making it the default majority of the problems would ju=
st
> go away.
Can you, please, read what I wrote ? Fixing _ports_ to compile with
clang is plain wrong. Upstream developers use gcc almost always for
development and testing. Establishing another constant cost on the
porting work puts burden on the ports submitters, maintainers and even
ports users.

I do strongly oppose the attempt to drain the freebsd resources by
forcing porters to port third-party code to other compiler.

>=20
> Note that the work needed to make ports compiling with clang is largely s=
hared
> with the work to make them compiliable with newer GCCs (as they are stric=
ter
> etc.)
>=20
> > Another issue with the switch, which seems to be not only not addressed,
> > but even not talked about, is the performance impact of the change. I
> > do not remember any measurements, whatever silly they could be, of the
> > performance change by the compiler switch. We often have serious and
> > argumented push-back for kernel changes that give as low as 2-3% of
> > the speed hit. What are the numbers for clang change, any numbers ?
>=20
> Agreed. We should provide numbers. At least how buildworld times change
> with clang compiled kernel/workd and gcc compiler kernel/world.
For this 'silly' benchmark, I would suggest to benchmark the identical
buildworlds with only different kernels, compiled with in-tree gcc and
clang.

>=20
> > And, some small but annoying things left with clang, like ABI change
> > requiring 16-byte stack alignment on i386, but lets ignore this until
> > two big issues are resolved.
>=20
> Thank you for pointing this out. This is, in my opinion, one of the stron=
gest
> reasons to switch to clang. We can go, fix issues or report we find upstr=
eam
> and then import newer clang. Unlike with gcc.

We do not want to hunt for the compiler bugs at all, goal of FreeBSD
is to develop the OS and not a compiler.

--lYetfuAxy9ic4HK3
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (FreeBSD)

iEYEARECAAYFAlBPLMIACgkQC3+MBN1Mb4igOQCeKrtDri/g8Cxnlsm4JUdb++Sx
I9cAoJ3jv6OTuz3VvlMxLC1mtKjUzwGQ
=fhTx
-----END PGP SIGNATURE-----

--lYetfuAxy9ic4HK3--



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