Nondeterministic block placement in nsCSSBorderRenderer::DrawBorders() with clang-11
Categories
(Firefox Build System :: Toolchains, defect)
Tracking
(Not tracked)
People
(Reporter: away, Unassigned)
References
(Blocks 2 open bugs)
Details
https://firefoxci.taskcluster-artifacts.net/MvdcZql-ToeXR5VQb_dtsA/2/public/diff.html
The placement of the jump target changes the size of the je
instruction, which changes the size of the overall function, which affects so many other things down the line that the diff.html
becomes pretty much unreadable.
First build: https://firefox-ci-tc.services.mozilla.com/tasks/dqXn6GKFRR2yMyXrlmkJLw
libxul!ZN19nsCSSBorderRenderer11DrawBordersEv+0x1322:
04324242 8b8d88feffff mov ecx,dword ptr [ebp-178h]
04324248 8b4228 mov eax,dword ptr [edx+28h]
0432424b 0f57d2 xorps xmm2,xmm2
0432424e 80f903 cmp cl,3
04324251 745b je libxul!ZN19nsCSSBorderRenderer11DrawBordersEv+0x138e (043242ae) Branch
Second build: https://firefox-ci-tc.services.mozilla.com/tasks/KB7e4FEaSvqR3mU-wpEJrQ
libxul!ZN19nsCSSBorderRenderer11DrawBordersEv+0x1322:
04324242 8b8d88feffff mov ecx,dword ptr [ebp-178h]
04324248 8b4228 mov eax,dword ptr [edx+28h]
0432424b 0f57d2 xorps xmm2,xmm2
0432424e 80f903 cmp cl,3
04324251 0f84bd000000 je libxul!ZN19nsCSSBorderRenderer11DrawBordersEv+0x13f4 (04324314) Branch
I believe the affected instruction was originally part of GetCornerRect
: https://searchfox.org/mozilla-central/rev/1b95a0179507a4dc7d4b0c94c2df420dc1a72885/layout/painting/nsCSSRenderingBorders.cpp#428
Comment 2•4 years ago
|
||
There's a large difference in the jump target (an offset of 102), which suggests more changes to that function. Like a large block reordering.
Updated•4 years ago
|
Updated•4 years ago
|
Comment 3•3 years ago
|
||
It seems like this is not happening anymore.
Description
•