Author: erichkeane Date: 2025-05-05T10:35:49-07:00 New Revision: 91867337ada52fb113d3d4808b5acb5790b869ff
URL: https://github.com/llvm/llvm-project/commit/91867337ada52fb113d3d4808b5acb5790b869ff DIFF: https://github.com/llvm/llvm-project/commit/91867337ada52fb113d3d4808b5acb5790b869ff.diff LOG: [OpenACC] Fix infinite loop bug with the device_type checking I noticed while writing a test that we ended up infinite looping thanks to an early exit not correctly setting the next step of the loop. Added: Modified: clang/lib/Sema/SemaOpenACCClause.cpp clang/test/SemaOpenACC/loop-construct-collapse-clause.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaOpenACCClause.cpp b/clang/lib/Sema/SemaOpenACCClause.cpp index 5a335352e6704..6187e0e719bb1 100644 --- a/clang/lib/Sema/SemaOpenACCClause.cpp +++ b/clang/lib/Sema/SemaOpenACCClause.cpp @@ -403,8 +403,10 @@ class SemaOpenACCClauseVisitor { // There are no clauses of the current kind between these device_types, so // continue. - if (CurClauseKindItr == CurDevTypeItr) + if (CurClauseKindItr == CurDevTypeItr) { + PrevDeviceTypeItr = CurDevTypeItr; continue; + } // At this point, we know that this device_type region has a collapse. So // diagnose if the two device_types have any overlap in their diff --git a/clang/test/SemaOpenACC/loop-construct-collapse-clause.cpp b/clang/test/SemaOpenACC/loop-construct-collapse-clause.cpp index 784e657cccb53..9a5f6347dec9f 100644 --- a/clang/test/SemaOpenACC/loop-construct-collapse-clause.cpp +++ b/clang/test/SemaOpenACC/loop-construct-collapse-clause.cpp @@ -572,4 +572,9 @@ void no_dupes_since_last_device_type() { #pragma acc loop device_type(radeon) collapse(1) device_type(nvidia, radeon) collapse(2) for(unsigned i = 0; i < 5; ++i) for(unsigned j = 0; j < 5; ++j); + + int NotConstexpr; + // expected-error@+1 3{{OpenACC 'collapse' clause loop count must be a constant expression}} +#pragma acc loop collapse(NotConstexpr) device_type(radeon, nvidia) collapse(NotConstexpr) device_type(host) collapse(NotConstexpr) + for(unsigned j = 0; j < 5; ++j); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits