From ee53c355d153ae73662cb0d740aed89c6e8fce1c 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] [ROCm/clr commit: f19992760ef7b8d52cd496f3aeed7c66c9153f90] --- projects/clr/hipamd/clang-hipify/src/Cuda2Hip.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/projects/clr/hipamd/clang-hipify/src/Cuda2Hip.cpp b/projects/clr/hipamd/clang-hipify/src/Cuda2Hip.cpp index fdbf8ae1a6..7c121425a4 100644 --- a/projects/clr/hipamd/clang-hipify/src/Cuda2Hip.cpp +++ b/projects/clr/hipamd/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"),