@@ -8335,6 +8335,26 @@ static NodeBase* parseCUDASMVersionModifier(Parser* parser, void* /*userData*/)
8335
8335
parser->sink ->diagnose (token, Diagnostics::invalidCUDASMVersion);
8336
8336
return nullptr ;
8337
8337
}
8338
+
8339
+ static NodeBase* parseSharedModifier (Parser* parser, void * /* userData*/ )
8340
+ {
8341
+ Modifier* modifier = nullptr ;
8342
+
8343
+ // While in GLSL compatibility mode, 'shared' = 'groupshared' and not the
8344
+ // D3D11 effect syntax.
8345
+ if (parser->options .allowGLSLInput )
8346
+ {
8347
+ modifier = parser->astBuilder ->create <HLSLGroupSharedModifier>();
8348
+ }
8349
+ else
8350
+ {
8351
+ modifier = parser->astBuilder ->create <HLSLEffectSharedModifier>();
8352
+ }
8353
+ modifier->keywordName = getName (parser, " shared" );
8354
+ modifier->loc = parser->tokenReader .peekLoc ();
8355
+ return modifier;
8356
+ }
8357
+
8338
8358
static NodeBase* parseVolatileModifier (Parser* parser, void * /* userData*/ )
8339
8359
{
8340
8360
ModifierListBuilder listBuilder;
@@ -8762,7 +8782,7 @@ static const SyntaxParseInfo g_parseSyntaxEntries[] = {
8762
8782
_makeParseModifier (" sample" , HLSLSampleModifier::kReflectClassInfo ),
8763
8783
_makeParseModifier (" centroid" , HLSLCentroidModifier::kReflectClassInfo ),
8764
8784
_makeParseModifier (" precise" , PreciseModifier::kReflectClassInfo ),
8765
- _makeParseModifier (" shared" , HLSLEffectSharedModifier:: kReflectClassInfo ),
8785
+ _makeParseModifier (" shared" , parseSharedModifier ),
8766
8786
_makeParseModifier (" groupshared" , HLSLGroupSharedModifier::kReflectClassInfo ),
8767
8787
_makeParseModifier (" static" , HLSLStaticModifier::kReflectClassInfo ),
8768
8788
_makeParseModifier (" uniform" , HLSLUniformModifier::kReflectClassInfo ),
0 commit comments