package/pixman: backport patch to fix inlining issue

pixman fails to build with -Og or -O3 due to forced inlining
statements:

pixman-combine-float.c:370:5: error: inlining failed in call to 'always_inline' 'combine_soft_light_c': function not considered for inlining

The first occurence in the autobuilders is on May 12, 2024, but the
problem already existed before as we haven't updated pixman in a long
time. Therefore, the issue started occurring because we started
testing more random configurations.

Fixes:

  https://autobuild.buildroot.org/results/2f3df7961b3181d9eef79893439ae7ebbe4415ad/

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
(cherry picked from commit 696de595e028daaec4d66792bb2d3db74c72f07e)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Thomas Petazzoni 2025-01-03 21:17:43 +01:00 committed by Peter Korsgaard
parent d1b481bf80
commit 138e4b2d14

View File

@ -0,0 +1,56 @@
From 643f098a3922592c82f3ea19668a1596d92a3e7b Mon Sep 17 00:00:00 2001
From: Changqing Li <changqing.li@windriver.com>
Date: Tue, 16 Jul 2024 15:31:16 +0800
Subject: [PATCH] pixman-combine-float.c: fix inlining failed error
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Refer [1], always-inline is not suggested to be used if you have indirect
calls. so replace force_inline with inline to fix error like:
In function combine_inner,
inlined from combine_soft_light_ca_float at ../pixman/pixman-combine-float.c:655:511:
../pixman/pixman-combine-float.c:655:211: error: inlining failed in call to always_inline combine_soft_light_c: function not considered for inlining
Test with gcc-9 and gcc-14, both works well
[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115679
Signed-off-by: Changqing Li <changqing.li@windriver.com>
Upstream: https://gitlab.freedesktop.org/pixman/pixman/-/commit/643f098a3922592c82f3ea19668a1596d92a3e7b
---
pixman/pixman-combine-float.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/pixman/pixman-combine-float.c b/pixman/pixman-combine-float.c
index e1f8030..230164f 100644
--- a/pixman/pixman-combine-float.c
+++ b/pixman/pixman-combine-float.c
@@ -261,7 +261,7 @@ get_factor (combine_factor_t factor, float sa, float da)
}
#define MAKE_PD_COMBINERS(name, a, b) \
- static float force_inline \
+ static float \
pd_combine_ ## name (float sa, float s, float da, float d) \
{ \
const float fa = get_factor (a, sa, da); \
@@ -360,13 +360,13 @@ MAKE_PD_COMBINERS (conjoint_xor, ONE_MINUS_DA_OVER_SA, ONE_MINUS_SA_OVER_DA)
*/
#define MAKE_SEPARABLE_PDF_COMBINERS(name) \
- static force_inline float \
+ static float \
combine_ ## name ## _a (float sa, float s, float da, float d) \
{ \
return da + sa - da * sa; \
} \
\
- static force_inline float \
+ static float \
combine_ ## name ## _c (float sa, float s, float da, float d) \
{ \
float f = (1 - sa) * d + (1 - da) * s; \
--
2.47.1