File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -686,6 +686,26 @@ void ExprAnalysis::analyzeExpr(const CXXConstructExpr *Ctor) {
686686 }
687687}
688688
689+ void ExprAnalysis::analyzeExpr (const CXXDependentScopeMemberExpr *CDSME) {
690+ if (auto AE = dyn_cast<ArraySubscriptExpr>(CDSME->getBase ())) {
691+ auto Base = AE->getBase ();
692+ if (auto BT =
693+ dyn_cast<DependentSizedArrayType>(Base->getType ().getTypePtr ())) {
694+ auto ET = BT->getElementType ();
695+ if (isTypeInAnalysisScope (ET.getTypePtr ()))
696+ return ;
697+ std::string BaseType = dpct::DpctGlobalInfo::getUnqualifiedTypeName (ET);
698+ if (MapNamesLang::SupportedVectorTypes.find (BaseType) !=
699+ MapNamesLang::SupportedVectorTypes.end ()) {
700+ std::string MemberName = CDSME->getMemberNameInfo ().getAsString ();
701+ if (MapNames::replaceName (MapNamesLang::MemberNamesMap, MemberName)) {
702+ addReplacement (CDSME->getMemberLoc (), CDSME->getEndLoc (), MemberName);
703+ }
704+ }
705+ }
706+ }
707+ }
708+
689709void ExprAnalysis::analyzeExpr (const MemberExpr *ME) {
690710 const auto BaseType = getBaseTypeRemoveTemplateArguments (ME);
691711
Original file line number Diff line number Diff line change @@ -631,7 +631,7 @@ class ExprAnalysis {
631631 inline void analyzeExpr (const ExprWithCleanups *EWC) {
632632 dispatch (EWC->getSubExpr ());
633633 }
634-
634+ void analyzeExpr ( const CXXDependentScopeMemberExpr *CDSME);
635635 void analyzeExpr (const CXXConstructExpr *Ctor);
636636 void analyzeExpr (const CXXTemporaryObjectExpr *Temp);
637637 void analyzeExpr (const CXXUnresolvedConstructExpr *Ctor);
Original file line number Diff line number Diff line change @@ -14,6 +14,16 @@ void func_char1(char1 a) {
1414__global__ void kernel_char1 (char1 *a, char1 *b) {
1515}
1616
17+ template <int np> __global__ void kernel_foo () {
18+ constexpr int nmeta = np;
19+ float2 meta[nmeta];
20+ float KQ_cmn;
21+ for (int imeta = 1 ; imeta < nmeta; ++imeta) {
22+ // CHECK: KQ_cmn = sycl::fmax(KQ_cmn, (float)(meta[imeta].x()));
23+ KQ_cmn = fmaxf (KQ_cmn, meta[imeta].x );
24+ }
25+ }
26+
1727int main_char1 () {
1828 // range default constructor does the right thing.
1929 // CHECK: int8_t char1_a;
You can’t perform that action at this time.
0 commit comments