From e1785a8b9f871b72d324bd7e163bc837c77491ec Mon Sep 17 00:00:00 2001 From: Evgeny Mankov Date: Tue, 28 Jun 2016 19:57:08 +0300 Subject: [PATCH] clang-hipify: Array of elements of typedef type translation support. Example: cudaStream_t streams[2] --- clang-hipify/src/Cuda2Hip.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/clang-hipify/src/Cuda2Hip.cpp b/clang-hipify/src/Cuda2Hip.cpp index fdbf8ae1a6..7c121425a4 100644 --- a/clang-hipify/src/Cuda2Hip.cpp +++ b/clang-hipify/src/Cuda2Hip.cpp @@ -1288,7 +1288,11 @@ public: if (const VarDecl *cudaTypedefVar = Result.Nodes.getNodeAs("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"),