Skip to content

Commit 0bbb4b0

Browse files
committed
Fix
Signed-off-by: Jiang, Zhiwei <zhiwei.jiang@intel.com>
1 parent 9f0e4bf commit 0bbb4b0

4 files changed

Lines changed: 18 additions & 14 deletions

File tree

clang/lib/DPCT/AnalysisInfo.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2811,7 +2811,6 @@ void CtTypeInfo::setArrayInfo(const DependentSizedArrayTypeLoc &TL,
28112811
bool NeedSizeFold) {
28122812
ContainSizeofType = containSizeOfType(TL.getSizeExpr());
28132813
ExprAnalysis EA;
2814-
//
28152814
EA.analyze(TL.getSizeExpr());
28162815
auto TDSI = EA.getTemplateDependentStringInfo();
28172816
if (TDSI->containsTemplateDependentMacro())

clang/lib/DPCT/RuleInfra/ExprAnalysis.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -625,11 +625,13 @@ void ExprAnalysis::analyzeExpr(const DeclRefExpr *DRE) {
625625
VD && VD->isConstexpr()) {
626626
if (VD->getInit() && VD->getInit()->getBeginLoc().isValid() &&
627627
!ConstExprExpansion) {
628-
std::string VDInitStr = ExprAnalysis::ref(VD->getInit());
628+
ConstExprExpansion = true;
629+
ExprAnalysis EA(VD->getInit());
630+
std::string VDInitStr = EA.getReplacedString();
629631
std::string VDStr = VD->getNameAsString();
630632
ReplSet.addConstExprExpansionInfo(VDStr, VDInitStr);
631-
ConstExprExpansion = true;
632-
dispatch(VD->getInit());
633+
ReplSet.addTemplateDependentReplacementInConstExprExpansion(
634+
EA.getReplSetTDRs());
633635
ConstExprExpansion = false;
634636
}
635637
} else if (auto ECD = dyn_cast<EnumConstantDecl>(DRE->getDecl())) {

clang/lib/DPCT/RuleInfra/ExprAnalysis.h

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,9 @@ class StringReplacements {
139139
}
140140

141141
inline void addTemplateDependentReplacementInConstExprExpansion(
142-
size_t Offset, size_t Length, unsigned TemplateIndex) {
143-
TDRsInConstExprExpansion.insert(
144-
std::make_pair(Offset, std::make_shared<TemplateDependentReplacement>(
145-
SourceStr, Offset, Length, TemplateIndex)));
142+
const std::map<size_t, std::shared_ptr<TemplateDependentReplacement>>
143+
&InTDRs) {
144+
TDRsInConstExprExpansion.insert(InTDRs.begin(), InTDRs.end());
146145
}
147146

148147
inline void addConstExprExpansionInfo(std::string VDStr,
@@ -183,6 +182,10 @@ class StringReplacements {
183182
replaceString();
184183
return SourceStr;
185184
}
185+
inline std::map<size_t, std::shared_ptr<TemplateDependentReplacement>>
186+
getTDRs() {
187+
return TDRs;
188+
}
186189

187190
private:
188191
StringReplacements(const StringReplacements &) = delete;
@@ -255,6 +258,10 @@ class ExprAnalysis {
255258
inline const std::string &getReplacedString() {
256259
return ReplSet.getReplacedString();
257260
}
261+
inline std::map<size_t, std::shared_ptr<TemplateDependentReplacement>>
262+
getReplSetTDRs() {
263+
return ReplSet.getTDRs();
264+
}
258265
inline std::shared_ptr<TemplateDependentStringInfo>
259266
getTemplateDependentStringInfo() {
260267
auto Res = ReplSet.getTemplateDependentStringInfo();
@@ -608,11 +615,7 @@ class ExprAnalysis {
608615

609616
inline void addReplacement(size_t Offset, size_t Length,
610617
unsigned TemplateIndex) {
611-
if (ConstExprExpansion)
612-
ReplSet.addTemplateDependentReplacementInConstExprExpansion(
613-
Offset, Length, TemplateIndex);
614-
else
615-
ReplSet.addTemplateDependentReplacement(Offset, Length, TemplateIndex);
618+
ReplSet.addTemplateDependentReplacement(Offset, Length, TemplateIndex);
616619
}
617620

618621
// Analyze the expression, jump to corresponding analysis function according

clang/test/dpct/sharedmem_var_static.cu

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,6 @@ template <int ThreadsPerBlock, int NumWarpQ> __global__ void kerfunc() {
236236
}
237237

238238
void foo2() {
239-
// CHECK: sycl::local_accessor<int, 1> smem_acc_ct1(sycl::range<1>(ThreadsPerBlock / kWarpSize * 8), cgh);
239+
// CHECK: sycl::local_accessor<int, 1> smem_acc_ct1(sycl::range<1>(128 / kWarpSize * 8), cgh);
240240
kerfunc<128, 8><<<32, 32>>>();
241241
}

0 commit comments

Comments
 (0)