Bläddra i källkod

Ignore __restrict when check overload.

Xiang Li 8 år sedan
förälder
incheckning
524697bf66

+ 1 - 0
tools/clang/lib/Sema/SemaOverload.cpp

@@ -4866,6 +4866,7 @@ TryObjectArgumentInitialization(Sema &S, QualType FromType,
   // First check the qualifiers.
   QualType FromTypeCanon = S.Context.getCanonicalType(FromType);
   // HLSL Change Starts - for calls other than subscript overloads, disregard const
+  FromTypeCanon.removeLocalRestrict(); // HLSL Change - disregard restrict.
   if (!S.getLangOpts().HLSL ||
      (Method != nullptr && Method->getDeclName() == S.Context.DeclarationNames.getCXXOperatorName(OO_Subscript))) {
   // HLSL Change Ends

+ 13 - 0
tools/clang/test/CodeGenHLSL/shader-compat-suite/inout_subscript.hlsl

@@ -0,0 +1,13 @@
+// RUN: %dxc -T lib_6_1 %s | FileCheck %s
+
+// Make sure subscript on inout vector works.
+// CHECK: noalias
+
+struct A {
+  float2 s;
+  int2  i;
+};
+
+float test(inout A a) {
+  return a.s[1];
+}