summaryrefslogtreecommitdiffstats
path: root/tests/diagnostics/invalid-constant-pointer-taking.slang
blob: 349f8cc259b96eb59c021a85cacb8e8397867732 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK): -stage compute -entry computeMain -target spirv

RWStructuredBuffer<float> mutable_float_buffer;
RWStructuredBuffer<uint> mutable_uint_buffer;

StructuredBuffer<float> constant_float_buffer;
StructuredBuffer<uint> constant_uint_buffer;

[shader("compute")]
[numthreads(1,1,1)]
void computeMain(uint3 threadId : SV_DispatchThreadID)
{
    float* mutablePtr = &mutable_float_buffer[threadId.x];

    InterlockedAdd(mutable_uint_buffer[threadId.x], 1);

    // Constant pointers arent a thing in slang
    // CHECK: error 30078:
    float* ptr = &constant_float_buffer[threadId.x];


    InterlockedAdd(constant_uint_buffer[0], 1);
}