yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Yong HeAdd static for loop iteration inference. (#2659)8b05df418

master
1.1 KiB60 linesraw
1//DIAGNOSTIC_TEST:SIMPLE:
2
3
4float doSomething(int x)
5{
6    for (int i = 0; i < x; i--) // warn.
7    {}
8    for (int i = 0; i < 5; i-=-2) // ok.
9    {}
10    for (int j = 0; j < 3; j += 0) // warn.
11    {}
12    for (int i = 0; i < 5; i++) // ok
13    {
14        for (int j = 0; j < 3; i++) // warn.
15        {}
16    }
17    for (int i = 0; i < 5; i++) // ok
18    {
19        for (int j = 0; i < 4; j++) // warn.
20        {}
21    }
22
23    [MaxIters(6)] // warn
24    for (int i = 0; i <= 6; i+=3)
25    {
26    }
27
28    [MaxIters(6)] // warn
29    for (int i = 5; i >= 0; i -= 3)
30    {
31    }
32    [MaxIters(6)] // warn
33    for (int i = 5; i > 0; i--)
34    {
35    }
36
37    [MaxIters(5)] // ok
38    for (int i = 0; i < 5; i++) // ok
39    {
40    }
41
42    for (int i = 1; i < 0; i++) // warn
43    {
44    }
45    for (int i = 1; i >= 2; i--) // warn
46    {
47    }
48    for (int i = 1; i >= 1; i--) // ok
49    {
50    }
51    for (int i = 1; i > 1; i--) // warn
52    {
53    }
54    [MaxIters(5)] // ok, because the loop body modifies i so we can't infer the iterations.
55    for (int i = 0; i < 5; i+=2)
56    {
57        i--;
58    }
59    return 0.0;
60}