diff --git a/Test/hlsl.PointSize.geom b/Test/hlsl.PointSize.geom
index d2a04a48d4cbe30918cb2105b96c76c1ea54e5ce..ef66fc891437bb3f1b40c159b7d53f1dd0e47b28 100644
--- a/Test/hlsl.PointSize.geom
+++ b/Test/hlsl.PointSize.geom
@@ -1,5 +1,5 @@
 struct S {
-    [[vk::builtin("PointSize")]] float ps;
+    [[vk::builtin("PointSize")]] float ps : PSIZE;
 };
 
 [maxvertexcount(4)]
diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp
index 31ea82a161d9f95919a760f1369c42966c5de29d..a3e5e8a737d4df746c3765b3e386f070677430e4 100755
--- a/hlsl/hlslParseHelper.cpp
+++ b/hlsl/hlslParseHelper.cpp
@@ -5856,7 +5856,8 @@ void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, TBu
         break;
     }
 
-    qualifier.builtIn = builtIn;
+    if (qualifier.builtIn == EbvNone)
+        qualifier.builtIn = builtIn;
     qualifier.semanticName = intermediate.addSemanticName(upperCase);
 }