Changeset View
Changeset View
Standalone View
Standalone View
clang/test/SemaHLSL/resource_binding_attr_error.hlsl
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -o - -fsyntax-only %s -verify | // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -o - -fsyntax-only %s -verify | ||||||||||
// expected-error@+5 {{expected ';' after top level declarator}} | // expected-error@+1 {{invalid resource class specifier 'c' used; expected 'b', 's', 't', or 'u'}} | ||||||||||
// expected-error@+4 {{expected ')'}} | |||||||||||
// expected-note@+3 {{to match this '('}} | |||||||||||
// expected-error@+2 {{a type specifier is required for all declarations}} | |||||||||||
// expected-error@+1 {{illegal storage class on file-scoped variable}} | |||||||||||
float a : register(c0, space1); | float a : register(c0, space1); | ||||||||||
// expected-error@+1 {{invalid resource class specifier 'i' used; expected 'b', 's', 't', or 'u'}} | // expected-error@+1 {{invalid resource class specifier 'i' used; expected 'b', 's', 't', or 'u'}} | ||||||||||
cbuffer b : register(i0) { | cbuffer b : register(i0) { | ||||||||||
} | } | ||||||||||
// expected-error@+1 {{invalid space specifier 's2' used; expected 'space' followed by an integer, like space1}} | // expected-error@+1 {{invalid space specifier 's2' used; expected 'space' followed by an integer, like space1}} | ||||||||||
cbuffer c : register(b0, s2) { | cbuffer c : register(b0, s2) { | ||||||||||
Show All 15 Lines | |||||||||||
cbuffer B : register(space1) {} | cbuffer B : register(space1) {} | ||||||||||
// expected-error@+1 {{wrong argument format for hlsl attribute, use b2 instead}} | // expected-error@+1 {{wrong argument format for hlsl attribute, use b2 instead}} | ||||||||||
cbuffer C : register(b 2) {} | cbuffer C : register(b 2) {} | ||||||||||
// expected-error@+2 {{wrong argument format for hlsl attribute, use b2 instead}} | // expected-error@+2 {{wrong argument format for hlsl attribute, use b2 instead}} | ||||||||||
// expected-error@+1 {{wrong argument format for hlsl attribute, use space3 instead}} | // expected-error@+1 {{wrong argument format for hlsl attribute, use space3 instead}} | ||||||||||
cbuffer D : register(b 2, space 3) {} | cbuffer D : register(b 2, space 3) {} | ||||||||||
// expected-warning@+1 {{'register' attribute only applies to cbuffer/tbuffer and external global variables}} | |||||||||||
static RWBuffer<float> U : register(u5); | |||||||||||
void foo() { | |||||||||||
// expected-warning@+1 {{'register' attribute only applies to cbuffer/tbuffer and external global variables}} | |||||||||||
RWBuffer<float> U : register(u3); | |||||||||||
} | |||||||||||
void foo2() { | |||||||||||
// expected-warning@+1 {{'register' attribute only applies to cbuffer/tbuffer and external global variables}} | |||||||||||
aaron.ballmanUnsubmitted Done ReplyInline Actions
aaron.ballman: | |||||||||||
extern RWBuffer<float> U2 : register(u5); | |||||||||||
} | |||||||||||
// FIXME: expect-error once fix https://github.com/llvm/llvm-project/issues/57886. | |||||||||||
float b : register(u0, space1); | |||||||||||
// expected-warning@+1 {{'register' attribute only applies to cbuffer/tbuffer and external global variables}} | |||||||||||
void bar(RWBuffer<float> U : register(u3)) { | |||||||||||
Let's add another test for a local extern, like: void func() { extern RWBuffer<float> U : register(u5); } aaron.ballman: Let's add another test for a local extern, like:
```
void func() {
extern RWBuffer<float> U… | |||||||||||
Nice catch. python3kgae: Nice catch.
Never know you could do this. | |||||||||||
} | |||||||||||
struct S { | |||||||||||
// FIXME: generate better error when support semantic on struct field. | |||||||||||
// See https://github.com/llvm/llvm-project/issues/57889. | |||||||||||
// expected-error@+1 {{expected expression}} | |||||||||||
RWBuffer<float> U : register(u3); | |||||||||||
}; |