Christophe Leroy wrote:
> This reverts commit 1e688dd2a3d6759d416616ff07afc4bb836c4213.
>
> That commit aimed at optimising the code around generation of
> WARN_ON/BUG_ON but this leads to a lot of dead code erroneously
> generated by GCC.
>
> text data bss dec hex filename
> 9551585 3627834 224376 13403795 cc8693 vmlinux.before
> 9535281 3628358 224376 13388015 cc48ef vmlinux.after
>
> Once this change is reverted, in a standard configuration (pmac32 +
> function tracer) the text is reduced by 16k which is around 1.7%
Aneesh recently reported a build failure due to the use of 'asm goto' in
WARN_ON(). We were able to root-cause it to the use of 'asm goto' with
two config options: CONFIG_CC_OPTIMIZE_FOR_SIZE and
CONFIG_DEBUG_SECTION_MISMATCH.
Along with the issues we found with 'asm goto' during objtool
enablement, I think it might be better to disable it for now.
Acked-by: Naveen N Rao <[email protected]>
- Naveen
On Tue, Jun 20, 2023 at 10:51:25AM +0530, Naveen N Rao wrote:
> Christophe Leroy wrote:
> > This reverts commit 1e688dd2a3d6759d416616ff07afc4bb836c4213.
> >
> > That commit aimed at optimising the code around generation of
> > WARN_ON/BUG_ON but this leads to a lot of dead code erroneously
> > generated by GCC.
> >
> > text data bss dec hex filename
> > 9551585 3627834 224376 13403795 cc8693 vmlinux.before
> > 9535281 3628358 224376 13388015 cc48ef vmlinux.after
> >
> > Once this change is reverted, in a standard configuration (pmac32 +
> > function tracer) the text is reduced by 16k which is around 1.7%
>
> Aneesh recently reported a build failure due to the use of 'asm goto' in
> WARN_ON(). We were able to root-cause it to the use of 'asm goto' with two
> config options: CONFIG_CC_OPTIMIZE_FOR_SIZE and
> CONFIG_DEBUG_SECTION_MISMATCH.
FWIW;
I recently had clang-powerpc report a very dodgy build error that was
due to a combination of these asm-goto and the usage of __cleanup__.
For some reason the label of the asm-goto crossed over the __cleanup__
variable declaration -- which is not valid, but also was completely
insane for that's not what the code called for.
https://lkml.kernel.org/r/[email protected]
But in my book that's a compiler issue, not a kernel issue and I'd be
hesitant to pull the asm-goto use just for that.