On Wednesday, 14 June 2023 at 12:35:43 UTC, Cecil Ward wrote:
I have just noticed a bug in the latest release of GDC that
targets x86-64. For example GDC 12.3 and above versions too,
running on X86-64, targeting self. This was built with:
-O3 -frelease -march=alderlake
What leads you to believe that it is buggy?
Generated code is:
je L1
jbe L1
What I see is the first instruction is going to relate to this
condition.
if ( unlikely( p == 1 ) ) return x;
Then the next instruction is the condition in the following
for-loop.
for ( exp_ui_t i = p; i > 1; i >>= 1 )
Redundant jump? Yes, arguably. Leads to wrong runtime? Doesn't
look that way.