clang-hipify: Array of elements of typedef type translation support.

Example: cudaStream_t streams[2]
Este commit está contenido en:
Evgeny Mankov
2016-06-28 19:57:08 +03:00
padre 8f9bdf641f
commit e1785a8b9f
+11 -1
Ver fichero
@@ -1288,7 +1288,11 @@ public:
if (const VarDecl *cudaTypedefVar =
Result.Nodes.getNodeAs<VarDecl>("cudaTypedefVar")) {
QualType QT = cudaTypedefVar->getType().getUnqualifiedType();
QualType QT = cudaTypedefVar->getType();
if (QT->isArrayType()) {
QT = QT.getTypePtr()->getAsArrayTypeUnsafe()->getElementType();
}
QT = QT.getUnqualifiedType();
StringRef name = QT.getAsString();
const auto found = N.cuda2hipRename.find(name);
if (found != N.cuda2hipRename.end()) {
@@ -1496,6 +1500,12 @@ int main(int argc, const char **argv) {
hasType(typedefDecl(matchesName("cuda.*|cublas.*"))))
.bind("cudaTypedefVar"),
&Callback);
// Array of elements of typedef type, Example: cudaStream_t streams[2];
Finder.addMatcher(varDecl(isExpansionInMainFile(),
hasType(arrayType(hasElementType(typedefType(
hasDeclaration(typedefDecl(matchesName("cuda.*|cublas.*"))))))))
.bind("cudaTypedefVar"),
&Callback);
Finder.addMatcher(varDecl(isExpansionInMainFile(),
hasType(cxxRecordDecl(matchesName("cuda.*|cublas.*"))))
.bind("cudaStructVar"),