Skip to content

Commit f2dde67

Browse files
committed
Fix
Signed-off-by: Jiang, Zhiwei <zhiwei.jiang@intel.com>
1 parent d01ce43 commit f2dde67

2 files changed

Lines changed: 16 additions & 6 deletions

File tree

clang/lib/DPCT/RuleInfra/ExprAnalysis.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -552,18 +552,26 @@ void ExprAnalysis::analyzeExpr(const DeclRefExpr *DRE) {
552552
RefString = DRE->getNameInfo().getAsString();
553553
}
554554
if (auto TemplateDecl = dyn_cast<NonTypeTemplateParmDecl>(DRE->getDecl()))
555-
addReplacement(DRE, TemplateDecl->getIndex());
555+
if (FFFFF)
556+
addReplacement("ThreadsPerBlock", TemplateDecl->getIndex());
557+
else
558+
addReplacement(DRE, TemplateDecl->getIndex());
556559
else if (const auto *VD = dyn_cast<VarDecl>(DRE->getDecl());
557560
VD && VD->isConstexpr() &&
558561
IsAnalyzingCtTypeInfo /*&& IsDependent*/) {
559562
if (VD->getInit() && VD->getInit()->getBeginLoc().isValid()) {
560563
ExprAnalysis EA(VD->getInit());
561564
std::string VDInitStr = EA.getReplacedString();
562565
std::string VDStr = VD->getNameAsString();
563-
// This offset is relative to the original str
564-
addReplacement(0, VDStr.size(), VDInitStr);
565-
//
566-
addReplacement("ThreadsPerBlock", 0);
566+
567+
auto Loc = ReplSet.getSourceStr().find(VDStr);
568+
// TODO: more than 1 substrings matched
569+
if (Loc != std::string::npos) {
570+
addReplacement(Loc, VDStr.size(), VDInitStr);
571+
FFFFF = true;
572+
dispatch(VD->getInit());
573+
FFFFF = false;
574+
}
567575
}
568576
} else if (auto ECD = dyn_cast<EnumConstantDecl>(DRE->getDecl())) {
569577
std::unordered_set<std::string> targetStr = {

clang/lib/DPCT/RuleInfra/ExprAnalysis.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ class StringReplacements {
155155
inline void addTemplateDependentReplacement(std::string String,
156156
unsigned TemplateIndex) {
157157
auto TDR = std::make_shared<TemplateDependentReplacement>(
158-
String, String.size(), TemplateIndex);
158+
String, 0, String.size(), TemplateIndex);
159159
TDRs.insert(std::make_pair(0, TDR));
160160
}
161161

@@ -186,6 +186,7 @@ class StringReplacements {
186186
replaceString();
187187
return SourceStr;
188188
}
189+
inline const std::string &getSourceStr() { return SourceStr; }
189190

190191
private:
191192
StringReplacements(const StringReplacements &) = delete;
@@ -202,6 +203,7 @@ class StringReplacements {
202203

203204
/// Analyze expression and generate its migrated string
204205
class ExprAnalysis {
206+
bool FFFFF = false;
205207
public:
206208
inline std::string getRewritePrefix() { return RewritePrefix; }
207209

0 commit comments

Comments
 (0)