// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -finclude-default-header -verify %s // expected-no-diagnostics RWBuffer In : register(u0); RWStructuredBuffer Out0 : register(u1); RWStructuredBuffer Out1 : register(u2); RWStructuredBuffer OutArr[]; cbuffer c { bool cond; }; void no_initial_assignment(uint idx) { RWStructuredBuffer Out; if (cond) { Out = Out1; } Out[idx] = In[idx]; } void assignment_to_uninitialized(uint idx) { RWStructuredBuffer Out; Out = Out; Out[idx] = In[idx]; } void same_assignment(uint idx) { RWStructuredBuffer Out = Out1; if (cond) { Out = Out1; } Out[idx] = In[idx]; } void conditional_initialization_with_index(uint idx) { RWStructuredBuffer Out = cond ? OutArr[0] : OutArr[1]; Out[idx] = In[idx]; } void conditional_assignment_with_index(uint idx) { RWStructuredBuffer Out; if (cond) { Out = OutArr[0]; } else { Out = OutArr[1]; } Out[idx] = In[idx]; } void reassignment(uint idx) { RWStructuredBuffer Out = Out0; if (cond) { Out = Out0; } Out[idx] = In[idx]; } void conditional_result_in_same(uint idx) { RWStructuredBuffer Out = cond ? Out0 : Out0; Out[idx] = In[idx]; }