@@ -254,9 +254,6 @@ class AccAttributeVisitor : DirectiveAttributeVisitor<llvm::acc::Directive> {
254254 Symbol::Flag::AccCopyIn, Symbol::Flag::AccCopyOut,
255255 Symbol::Flag::AccDelete, Symbol::Flag::AccPresent};
256256
257- Symbol::Flags accFlagsRequireNewSymbol{Symbol::Flag::AccPrivate,
258- Symbol::Flag::AccFirstPrivate, Symbol::Flag::AccReduction};
259-
260257 Symbol::Flags accDataMvtFlags{
261258 Symbol::Flag::AccDevice, Symbol::Flag::AccHost, Symbol::Flag::AccSelf};
262259
@@ -266,7 +263,7 @@ class AccAttributeVisitor : DirectiveAttributeVisitor<llvm::acc::Directive> {
266263 Symbol::Flag::AccDevicePtr, Symbol::Flag::AccDeviceResident,
267264 Symbol::Flag::AccLink, Symbol::Flag::AccPresent};
268265
269- void PrivatizeAssociatedLoopIndex (const parser::OpenACCLoopConstruct &);
266+ void CheckAssociatedLoopIndex (const parser::OpenACCLoopConstruct &);
270267 void ResolveAccObjectList (const parser::AccObjectList &, Symbol::Flag);
271268 void ResolveAccObject (const parser::AccObject &, Symbol::Flag);
272269 Symbol *ResolveAcc (const parser::Name &, Symbol::Flag, Scope &);
@@ -877,7 +874,7 @@ bool AccAttributeVisitor::Pre(const parser::OpenACCLoopConstruct &x) {
877874 }
878875 ClearDataSharingAttributeObjects ();
879876 SetContextAssociatedLoopLevel (GetAssociatedLoopLevelFromClauses (clauseList));
880- PrivatizeAssociatedLoopIndex (x);
877+ CheckAssociatedLoopIndex (x);
881878 return true ;
882879}
883880
@@ -1141,13 +1138,12 @@ std::int64_t AccAttributeVisitor::GetAssociatedLoopLevelFromClauses(
11411138 return 1 ; // default is outermost loop
11421139}
11431140
1144- void AccAttributeVisitor::PrivatizeAssociatedLoopIndex (
1141+ void AccAttributeVisitor::CheckAssociatedLoopIndex (
11451142 const parser::OpenACCLoopConstruct &x) {
11461143 std::int64_t level{GetContext ().associatedLoopLevel };
1147- if (level <= 0 ) { // collpase value was negative or 0
1144+ if (level <= 0 ) { // collapse value was negative or 0
11481145 return ;
11491146 }
1150- Symbol::Flag ivDSA{Symbol::Flag::AccPrivate};
11511147
11521148 const auto getNextDoConstruct =
11531149 [this ](const parser::Block &block) -> const parser::DoConstruct * {
@@ -1166,16 +1162,8 @@ void AccAttributeVisitor::PrivatizeAssociatedLoopIndex(
11661162
11671163 const auto &outer{std::get<std::optional<parser::DoConstruct>>(x.t )};
11681164 for (const parser::DoConstruct *loop{&*outer}; loop && level > 0 ; --level) {
1169- // go through all the nested do-loops and resolve index variables
1170- const parser::Name *iv{GetLoopIndex (*loop)};
1171- if (iv) {
1172- if (auto *symbol{ResolveAcc (*iv, ivDSA, currScope ())}) {
1173- symbol->set (Symbol::Flag::AccPreDetermined);
1174- iv->symbol = symbol; // adjust the symbol within region
1175- AddToContextObjectWithDSA (*symbol, ivDSA);
1176- }
1177- }
1178-
1165+ // Go through all nested loops to ensure index variable exists.
1166+ GetLoopIndex (*loop);
11791167 const auto &block{std::get<parser::Block>(loop->t )};
11801168 loop = getNextDoConstruct (block);
11811169 }
@@ -1328,20 +1316,12 @@ void AccAttributeVisitor::ResolveAccObject(
13281316
13291317Symbol *AccAttributeVisitor::ResolveAcc (
13301318 const parser::Name &name, Symbol::Flag accFlag, Scope &scope) {
1331- if (accFlagsRequireNewSymbol.test (accFlag)) {
1332- return DeclarePrivateAccessEntity (name, accFlag, scope);
1333- } else {
1334- return DeclareOrMarkOtherAccessEntity (name, accFlag);
1335- }
1319+ return DeclareOrMarkOtherAccessEntity (name, accFlag);
13361320}
13371321
13381322Symbol *AccAttributeVisitor::ResolveAcc (
13391323 Symbol &symbol, Symbol::Flag accFlag, Scope &scope) {
1340- if (accFlagsRequireNewSymbol.test (accFlag)) {
1341- return DeclarePrivateAccessEntity (symbol, accFlag, scope);
1342- } else {
1343- return DeclareOrMarkOtherAccessEntity (symbol, accFlag);
1344- }
1324+ return DeclareOrMarkOtherAccessEntity (symbol, accFlag);
13451325}
13461326
13471327Symbol *AccAttributeVisitor::DeclareOrMarkOtherAccessEntity (
@@ -1374,11 +1354,6 @@ static bool WithMultipleAppearancesAccException(
13741354void AccAttributeVisitor::CheckMultipleAppearances (
13751355 const parser::Name &name, const Symbol &symbol, Symbol::Flag accFlag) {
13761356 const auto *target{&symbol};
1377- if (accFlagsRequireNewSymbol.test (accFlag)) {
1378- if (const auto *details{symbol.detailsIf <HostAssocDetails>()}) {
1379- target = &details->symbol ();
1380- }
1381- }
13821357 if (HasDataSharingAttributeObject (*target) &&
13831358 !WithMultipleAppearancesAccException (symbol, accFlag)) {
13841359 context_.Say (name.source ,
0 commit comments