diff options
| author | venkataram-nv <vedavamadath@nvidia.com> | 2024-08-12 14:18:02 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-12 14:18:02 -0700 |
| commit | 20bd48659d0009de5477380c335e2419f4c66f8b (patch) | |
| tree | 1b5df96436eaea9adbe5ef524b39fe6da4697387 /tests/language-feature/struct-field-initializers | |
| parent | 9b580e58417a77109617804362be872f05885f23 (diff) | |
Warn when inout parameter is never written (#4777)
Addresses #4698 as one approach to diagnose the potential problem.
Emit warnings when a user marks a parameter as `inout` but never writes to it in the function. A new intrinsic function `unmodified(out T)` has been added to explicitly indicate that an `inout` variable will not be modified in the function.
This is only one way to address the specific validation error in #4698. In general it seems that DXC does some more extensive checks on actual struct fields (as opposed to observing arbitrary struct writes), so that will be the next step.
Diffstat (limited to 'tests/language-feature/struct-field-initializers')
| -rw-r--r-- | tests/language-feature/struct-field-initializers/struct-field-no-initializer-complex-types.slang | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/tests/language-feature/struct-field-initializers/struct-field-no-initializer-complex-types.slang b/tests/language-feature/struct-field-initializers/struct-field-no-initializer-complex-types.slang index a55c4725d..66a3a2c64 100644 --- a/tests/language-feature/struct-field-initializers/struct-field-no-initializer-complex-types.slang +++ b/tests/language-feature/struct-field-initializers/struct-field-no-initializer-complex-types.slang @@ -6,7 +6,7 @@ //TEST_INPUT:ubuffer(data=[0 0], stride=4):out,name=outputBuffer RWStructuredBuffer<int> outputBuffer; -struct DefaultData +struct DefaultData : IDefaultInitializable { static const int2 val = int2(0, 1); float2 size; @@ -16,13 +16,10 @@ struct DefaultData extension DefaultData { - int someGet() - { - return val.x; - } + int someGet() { return val.x; } } -int loadDefaultData(inout DefaultData noInit) +int loadDefaultData(DefaultData noInit) { outputBuffer[1] = 1; return noInit.someGet(); |
