rjmccall added a comment.

You're gating on OpenCL C++ in several places in this patch, but I don't think 
you need to.  This extension should be available to anyone using address spaces 
and C++.



================
Comment at: lib/Parse/ParseDecl.cpp:6162
+        }
+      }
+
----------------
This is enforcing a restriction that users write `const __private`, which seems 
unreasonable.  It looks like `ParseTypeQualifierList` takes a flag saying not 
to parse attributes; try adding a new option to that enum allowing 
address-space attributes.

Collecting the attributes on the type-qualifiers `DeclSpec` rather than adding 
them as function attributes seems correct.


================
Comment at: lib/Sema/SemaOverload.cpp:1157
+        NewMethod->getTypeQualifiers().getAddressSpace())
+      return true;
   }
----------------
If you leave `OldQuals` and `NewQuals` as `Qualifiers` and then just remove 
`restrict` from both sets, I think you don't need a special check for address 
spaces here.


================
Comment at: lib/Sema/SemaOverload.cpp:6671
+    }
+  }
 }
----------------
I would expect this to fail in `TryObjectArgumentInitialization` above and not 
to need a special case here.


================
Comment at: lib/Sema/SemaOverload.cpp:9279
+        (CandAS1 != LangAS::opencl_generic && CandAS1 != LangAS::Default))
+      return true;
+  }
----------------
This at least needs a comment explaining the rule you're trying to implement.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55850/new/

https://reviews.llvm.org/D55850



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to