https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127206
--- Comment #2 from David Binderman <dcb314 at hotmail dot com> ---
Reduced code seems to be:
enum ChannelType {};
enum DeblockEdgeDir { EDGE_VER };
int getLadfQpOffset() {}
void xPelFilterLuma(short *, int, int, int, bool, int, bool, bool, int);
int xEdgeFilterLuma_clpRng, xEdgeFilterLuma_iThrCut,
xEdgeFilterLuma___trans_tmp_3, xEdgeFilterLuma_offset, xCalcDP_iOffset,
loopFilterCTU_ctuArea, xEdgeFilterLuma_iStride, xDeblockCtuArea_slice,
xDeblockCtuArea_lineLfpPtr, xEdgeFilterLuma_iTc;
bool xEdgeFilterLuma_sidePisLarge, xEdgeFilterLuma_bFilterP,
xEdgeFilterLuma_bFilterQ, xEdgeFilterLuma_sw;
short xEdgeFilterLuma_piSrc;
struct LoopFilter {
template <DeblockEdgeDir edgeDir>
void xDeblockCtuArea(int &cs, int, ChannelType) const {
xEdgeFilterLuma<edgeDir>(cs, {}, xDeblockCtuArea_lineLfpPtr,
xDeblockCtuArea_slice);
}
template <DeblockEdgeDir>
void xEdgeFilterLuma(int &, const int &, const int &, const int &) const;
void deriveLADFShift(short *src, int stride) const {
int lumaLevel = src[0] + src[3 * stride] + src[1] + src[1];
for (int k; k;)
if (lumaLevel)
getLadfQpOffset();
}
void loopFilterCTU(int &) const;
};
ChannelType loopFilterCTU_chType;
void LoopFilter::loopFilterCTU(int &cs) const {
xDeblockCtuArea<EDGE_VER>(cs, loopFilterCTU_ctuArea, loopFilterCTU_chType);
}
void xUseStrongFiltering(short *, int, bool);
template <DeblockEdgeDir>
void LoopFilter::xEdgeFilterLuma(int &, const int &, const int &,
const int &) const {
int __trans_tmp_2;
deriveLADFShift(&xEdgeFilterLuma_piSrc, xEdgeFilterLuma_iStride);
short *piSrc0 = &xEdgeFilterLuma_piSrc,
*piSrc3 = &xEdgeFilterLuma_piSrc + 3 * xEdgeFilterLuma_iStride;
xEdgeFilterLuma___trans_tmp_3 = piSrc0[xCalcDP_iOffset];
__trans_tmp_2 = piSrc3[xCalcDP_iOffset];
int d0 = xEdgeFilterLuma___trans_tmp_3 + piSrc0[0];
int d3 = __trans_tmp_2 + piSrc3[0];
int dp0L = xEdgeFilterLuma_sidePisLarge ?: xEdgeFilterLuma___trans_tmp_3;
int dp3L = xEdgeFilterLuma_sidePisLarge ?: __trans_tmp_2;
int d0L = dp0L + piSrc0[0];
int d3L = dp3L + piSrc3[0];
int dL = d0L + d3L;
if (dL)
xUseStrongFiltering(piSrc3, xEdgeFilterLuma_offset, 2);
int d = d0 + d3;
if (d)
xPelFilterLuma(&xEdgeFilterLuma_piSrc, xEdgeFilterLuma_iStride,
xEdgeFilterLuma_offset, xEdgeFilterLuma_iTc,
xEdgeFilterLuma_sw, xEdgeFilterLuma_iThrCut,
xEdgeFilterLuma_bFilterP, xEdgeFilterLuma_bFilterQ,
xEdgeFilterLuma_clpRng);
}