================ @@ -45,11 +47,36 @@ OpenACCDirectiveKind ParseOpenACCDirectiveKind(Parser &P) { P.ConsumeToken(); std::string FirstTokSpelling = P.getPreprocessor().getSpelling(FirstTok); - OpenACCDirectiveKind DirKind = GetOpenACCDirectiveKind(FirstTokSpelling); + OpenACCDirectiveKind DirKind = getOpenACCDirectiveKind(FirstTokSpelling); if (DirKind == OpenACCDirectiveKind::Invalid) P.Diag(FirstTok, diag::err_acc_invalid_directive) << FirstTokSpelling; + // Combined Constructs allows parallel loop, serial loop, or kernels loop. Any + // other attempt at a combined construct will be diagnosed as an invalid + // clause. + Token SecondTok = P.getCurToken(); + if (!SecondTok.isAnnotation() && + P.getPreprocessor().getSpelling(SecondTok) == "loop") { ---------------- erichkeane wrote:
Done. https://github.com/llvm/llvm-project/pull/72692 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits