[llvm-dev] Should we split llvm Support and ADT?

Mehdi AMINI via llvm-dev llvm-dev at lists.llvm.org
Tue May 30 14:36:34 PDT 2017


2017-05-30 14:31 GMT-07:00 Zachary Turner <zturner at google.com>:

> But it will still re-write the output files, updating their timestamps and
> trigger rebuild of all dependencies (at worst) or a diff-and-noop (at
> best), no?
>

Why would this happen? What would trigger that in the dependency tree?
The llvm-tblgen binary used to generate the output files cannot change...
(I may be missing something)

-- 
Mehdi




> Since the original proposal was about reducing the number of situations in
> which tablegen runs at all, I would think that the best comparison would be
> one in which tablegen doesn't run at all.
>
> On Tue, May 30, 2017 at 2:29 PM Mehdi AMINI <joker.eph at gmail.com> wrote:
>
>> 2017-05-30 14:28 GMT-07:00 Zachary Turner <zturner at google.com>:
>>
>>> Doesn't that just tell it what tablegen to use?  I was looking for an
>>> option to make it not run *anything*, and just assume that all tablegen
>>> definitions were up to date
>>>
>>
>> If you tell it to run an external llvm-tblgen, this external tablegen
>> becomes the producers of all the generated file. And since this external
>> tablegen binary is not produced by your CMake, it does not depends on any
>> source file.
>>
>> --
>> Mehdi
>>
>>
>>
>>
>>>
>>> On Tue, May 30, 2017 at 2:27 PM Mehdi AMINI <joker.eph at gmail.com> wrote:
>>>
>>>> 2017-05-30 13:50 GMT-07:00 Zachary Turner via llvm-dev <
>>>> llvm-dev at lists.llvm.org>:
>>>>
>>>>>
>>>>>
>>>>> On Tue, May 30, 2017 at 12:52 PM Bob Haarman <llvm at inglorion.net>
>>>>> wrote:
>>>>>
>>>>>> I would like to better understand how you came to conclude that the
>>>>>> tablegen re-runs based on changes in Support are what's causing your build
>>>>>> to be slow and what part specifically is taking all that time. I can do a
>>>>>> clean release + assertions build of LLVM, Clang, compiler-rt and lld in
>>>>>> about 5 minutes, plus 40 seconds to run cmake, on what I think is similar
>>>>>> hardware to what Zach is using. If I swap Ptr += ret and Size -= Ret in
>>>>>> raw_fd_ostream::write_impl so that Support changes, I can do an incremental
>>>>>> build in about 10 seconds, including the regeneration of various .inc
>>>>>> files. How do we get from there to 10 minutes for an incremental build?
>>>>>>
>>>>>
>>>>> For the sake of comparison, I made the same change and it took
>>>>>  1:58.39.  A slightly different but more intrusive change to Format.h in
>>>>> format_object_base::print() took 5:6.54.  A clean build on the same machine
>>>>> takes about 12 minutes.
>>>>>
>>>>> I tried a few hacks to the CMake to say "don't run tablegen, no matter
>>>>> what, and don't make anything depend on tablegen's output", but I couldn't
>>>>> come up with the right magic.  If anyone knows, I can test a side-by-side
>>>>> comparison without tablegen.
>>>>>
>>>>
>>>> I mentioned earlier in the thread that there is already a CMake option
>>>> for this: -DLLVM_TABLEGEN=path/to/llvm-tblgen
>>>>
>>>>
>>>> --
>>>> Mehdi
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170530/e88cef95/attachment.html>


More information about the llvm-dev mailing list