Re: [PATCH v2 1/2] Makefile: Fix distcc compilation with x86 macros
From: Nadav Amit
Date: Fri Nov 16 2018 - 16:03:25 EST
From: Masahiro Yamada
Sent: November 16, 2018 at 7:45:45 AM GMT
> To: Nadav Amit <namit@xxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>, Michal Marek <michal.lkml@xxxxxxxxxxx>, Thomas Gleixner <tglx@xxxxxxxxxxxxx>, Borislav Petkov <bp@xxxxxxxxx>, H. Peter Anvin <hpa@xxxxxxxxx>, X86 ML <x86@xxxxxxxxxx>, Linux Kbuild mailing list <linux-kbuild@xxxxxxxxxxxxxxx>, Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>
> Subject: Re: [PATCH v2 1/2] Makefile: Fix distcc compilation with x86 macros
>
>
> On Thu, Nov 15, 2018 at 1:01 PM Nadav Amit <namit@xxxxxxxxxx> wrote:
>> Introducing the use of asm macros in c-code broke distcc, since it only
>> sends the preprocessed source file. The solution is to break the
>> compilation into two separate phases of compilation and assembly, and
>> between the two concatenate the assembly macros and the compiled (yet
>> not assembled) source file. Since this is less efficient, this
>> compilation mode is only used when distcc or icecc are used.
>>
>> Note that the assembly stage should also be distributed, if distcc is
>> configured using "CFLAGS=-DENABLE_REMOTE_ASSEMBLE".
>>
>> Reported-by: Logan Gunthorpe <logang@xxxxxxxxxxxx>
>> Signed-off-by: Nadav Amit <namit@xxxxxxxxxx>
>
>
> Wow, this is so ugly.
Indeed, it is not pretty from the Makefile system point of view.
But it does have merits when it comes to the actual use (by developers). If
you look on x86, there are a lot of duplicated implementation for C and Asm
and crazy C macros, for example for PV function call or the alternative
mechanism. The code is also less readable in its current form.
> I realized how much I hated this by now.
>
> My question is, how long do we need to carry this?
If it is purely about performance, I am not sure it would make sense to
put it in, as it will indeed be (eventually) solved by the compiler, and
the penalty is not too great.
There is also an advantage for having assembly macros that can override the
generated assembly that was generated by the compiler. I think HPA (ccâd)
looks in this direction (and so do I).
Regards,
Nadav