[cfe-dev] How clang from packages is build?
Mehdi Amini via cfe-dev
cfe-dev at lists.llvm.org
Thu Sep 22 11:53:13 PDT 2016
> On Sep 22, 2016, at 11:27 AM, Sylvestre Ledru <sylvestre at debian.org> wrote:
>
> I just tried and, with gcc 6.1 and GNU gold (GNU Binutils for Debian 2.26.1) 1.11
>
> I am getting:
> lto1: internal compiler error: in lhd_decl_printable_name, at langhooks.c:222
> 0x7fb47a lhd_decl_printable_name(tree_node*, int)
> ../../src/gcc/langhooks.c:222
> 0x69a45e gen_namespace_die
> […]
The idea is to enable LTO on the stage-2 only, here you have a crash in GCC LTO during the stage-1 right?
—
Mehdi
>
> Sylvestre
>
>
> Le 22/09/2016 à 19:37, Ivan Krasin a écrit :
>> I don't recall any specific problems, but yeah, could be that there're some.
>>
>> On Thu, Sep 22, 2016 at 10:29 AM, Hans Wennborg <hans at chromium.org <mailto:hans at chromium.org>> wrote:
>>
>> In Chromium we only build the gold plugin with LTO though, not Clang
>> itself. IIRC (but my memory is hazy), we ran into problems when we
>> tried that?
>>
>> On Thu, Sep 22, 2016 at 10:21 AM, Ivan Krasin <krasin at google.com <mailto:krasin at google.com>> wrote:
>>> Hi Mehdi,
>>>
>>> yes, on Linux we do 2-stage build exactly for this reason.
>>> For the reference, the code is
>>> https://cs.chromium.org/chromium/src/tools/clang/scripts/update.py?q=update.py&sq=package:chromium&dr=C&l=564 <https://cs.chromium.org/chromium/src/tools/clang/scripts/update.py?q=update.py&sq=package:chromium&dr=C&l=564>
>>> and we don't make use of LLVM_ENABLE_LTO at the moment (no good reason I can
>>> think of)
>>>
>>> krasin
>>>
>>> On Thu, Sep 22, 2016 at 9:26 AM, Mehdi Amini <mehdi.amini at apple.com <mailto:mehdi.amini at apple.com>> wrote:
>>>>
>>>>
>>>> On Sep 22, 2016, at 9:19 AM, Hans Wennborg <hans at chromium.org <mailto:hans at chromium.org>> wrote:
>>>>
>>>> On Thu, Sep 22, 2016 at 9:09 AM, Mehdi Amini <mehdi.amini at apple.com <mailto:mehdi.amini at apple.com>>
>>>> wrote:
>>>>
>>>>
>>>> On Sep 22, 2016, at 8:58 AM, Hans Wennborg <hans at chromium.org <mailto:hans at chromium.org>> wrote:
>>>>
>>>> On Thu, Sep 22, 2016 at 12:51 AM, Sylvestre Ledru via cfe-dev
>>>> <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>>>>
>>>> Le 22/09/2016 à 03:33, Mehdi Amini a écrit :
>>>>
>>>> Hi,
>>>>
>>>> I was wondering the same thing recently and Hans pointed me to
>>>> llvm/utils/release.
>>>>
>>>> It turns out we’re not using LTO :(
>>>> (Neither PGO…)
>>>>
>>>> In the Debian/Ubuntu packages (and this is general to packaging), we are:
>>>> * relying on the build system of the application itself
>>>> * adding some flags like "-g -O2" and the fortify options
>>>> https://wiki.debian.org/Hardening <https://wiki.debian.org/Hardening>
>>>>
>>>> For the linker, for the LLVM toolchain, it depends if the version of
>>>> binutils in the distro has it or not (at least 2.23.1-1~exp3).
>>>> Here, for the Debian & Ubuntu packages, I am using binutils gold but not
>>>> sure the LTO option is set to the llvm build system?!
>>>>
>>>> However, happy to try that (I think this should be part of the build
>>>> system,
>>>> at least for LTO).
>>>>
>>>>
>>>> I think that's what the -LLVM_ENABLE_LTO={Full,Thin} option is for,
>>>> but it's not enabled by default.
>>>>
>>>>
>>>> So, what about changing this?
>>>>
>>>>
>>>> I don't know how practical it would be at the moment. Would most build
>>>> environments support it? It seems to assume Clang is being built by
>>>> Clang, and that the gold plugin (which I think requires the binutils
>>>> headers to build) is around.
>>>>
>>>>
>>>> Aren’t you doing a 2-stage build? In which case the stage-2 always has
>>>> clang available.
>>>> It requires Gold on linux probably, but on OSX the system linker supports
>>>> LTO.
>>>>
>>>> At minima the OSX build could have it enabled without risk of failure.
>>>>
>>>> —
>>>> Mehdi
>>>>
>>>>
>>>
>>
>>
>
More information about the cfe-dev
mailing list