[PATCH] lib: bzip2: remove inlining

Heinrich Schuchardt heinrich.schuchardt at canonical.com
Thu Feb 23 22:53:44 CET 2023



On 2/23/23 17:40, Tom Rini wrote:
> On Thu, Feb 23, 2023 at 05:39:08PM +0100, Heinrich Schuchardt wrote:
>> On 2/23/23 17:30, Tom Rini wrote:
>>> On Thu, Feb 23, 2023 at 08:15:25AM +0100, Heinrich Schuchardt wrote:
>>>> Compiling sandbox_defconfig with CONFIG_CC_OPTIMIZE_FOR_DEBUG=y and
>>>> gcc 12.2.0-14ubuntu1 leads to a build error:
>>>>
>>>>       lib/bzip2/bzlib.c: In function 'BZ2_decompress':
>>>>       lib/bzip2/bzlib.c:726:18: error: inlining failed in call to
>>>>       'always_inline' 'BZ2_indexIntoF': function not considered for inlining
>>>>         726 | __inline__ Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab )
>>>>             |                  ^
>>>>
>>>> Leave it to the compiler if it inlines or not.
>>>>
>>>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
>>>
>>> What did previous compilers do here? If we're telling the compiler to
>>> always inline, presumably for good reason, we shouldn't just stop.
>>>
>>
>> Inlining may make the code a bit faster. But without inlining it would be
>> smaller. Grep for BZ_GET_SMALL to find where the inlined function is used.
>>
>> In test/compression.c we check the result. 'ut compression' does not find a
>> problem.
> 
> OK, and I'm wondering if the compiler regressed.
> 

CONFIG_CC_OPTIMIZE_FOR_DEBUG is not used in any of our defconfigs and 
has been introduced long after bzip2.

Typically CONFIG_CC_OPTIMIZE_FOR_DEBUG is used in conjunction with 
CONFIG_LTO=n. In this case the error does not occur.

It seems that gcc with -Og -flto has an issue.

Best regards

Heinrich


More information about the U-Boot mailing list