d: Suboptimal codegen for __builtin_expect(cond, false)
[official-gcc.git] / gcc / testsuite / gdc.dg / pr110359.d
blobbf69201d9a575a6a583e88ac7283ab288f3bd9b4
1 // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110359
2 // { dg-do compile }
3 // { dg-options "-fdump-tree-original" }
4 double pow(in double x, in ulong p)
6 import gcc.builtins : __builtin_expect;
7 if (__builtin_expect(p == 0, false))
8 return 1;
9 if (__builtin_expect(p == 1, false))
10 return x;
12 double s = x;
13 double v = 1;
14 for (ulong i = p; i > 1; i >>= 1)
16 v = (i & 0x1) ? s * v : v;
17 s = s * s;
19 return v * s;
21 // { dg-final { scan-tree-dump "if \\(__builtin_expect \\(p == 0, 0\\) != 0\\)" "original" } }
22 // { dg-final { scan-tree-dump "if \\(__builtin_expect \\(p == 1, 0\\) != 0\\)" "original" } }