From 3e06497eaad2084d437b05093cc7e25399c523b3 Mon Sep 17 00:00:00 2001 From: Evgeny Mankov Date: Fri, 28 Apr 2017 21:03:03 +0300 Subject: [PATCH] [HIPIFY] [FIX] replacement error: cudaError_t -> hipError_t_t https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/71 [Solution] getUnqualifiedType for enumConstantDecl's type is added, except ordinary enum declarations (w/o typedef). [ToDo] Find more appropriate way of distinguishing redefined enum declarations and ordinary ones. [ROCm/clr commit: 5f76cf3098d41f8e596899549f844020a6a29cd4] --- projects/clr/hipamd/hipify-clang/src/Cuda2Hip.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/projects/clr/hipamd/hipify-clang/src/Cuda2Hip.cpp b/projects/clr/hipamd/hipify-clang/src/Cuda2Hip.cpp index 5a2940322e..f0fa8331dc 100644 --- a/projects/clr/hipamd/hipify-clang/src/Cuda2Hip.cpp +++ b/projects/clr/hipamd/hipify-clang/src/Cuda2Hip.cpp @@ -191,7 +191,7 @@ struct cuda2hipMap { // Error codes and return types cuda2hipRename["CUresult"] = {"hipError_t", CONV_TYPE, API_DRIVER}; - cuda2hipRename["cudaError_enum"] = {"hipError_t", CONV_TYPE, API_DRIVER}; +// cuda2hipRename["cudaError_enum"] = {"hipError_t", CONV_TYPE, API_DRIVER}; cuda2hipRename["cudaError_t"] = {"hipError_t", CONV_TYPE, API_RUNTIME}; cuda2hipRename["cudaError"] = {"hipError_t", CONV_TYPE, API_RUNTIME}; @@ -2806,12 +2806,11 @@ private: bool cudaEnumConstantDecl(const MatchFinder::MatchResult &Result) { if (const VarDecl *enumConstantDecl = Result.Nodes.getNodeAs("cudaEnumConstantDecl")) { - StringRef name = - enumConstantDecl->getType()->getAsTagDecl()->getNameAsString(); - // anonymous typedef enum - if (name.empty()) { - QualType QT = enumConstantDecl->getType().getUnqualifiedType(); - name = QT.getAsString(); + StringRef name = enumConstantDecl->getType()->getAsTagDecl()->getNameAsString(); + QualType QT = enumConstantDecl->getType().getUnqualifiedType(); + StringRef name_unqualified = QT.getAsString(); + if ((name_unqualified.find(' ') == StringRef::npos && name.find(' ') == StringRef::npos) || name.empty()) { + name = name_unqualified; } SourceLocation sl = enumConstantDecl->getLocStart(); SourceManager *SM = Result.SourceManager;