================
@@ -11074,13 +11079,44 @@ OMPClause 
*TreeTransform<Derived>::TransformOMPXBareClause(OMPXBareClause *C) {
 
//===----------------------------------------------------------------------===//
 // OpenACC transformation
 
//===----------------------------------------------------------------------===//
+template <typename Derived>
+OpenACCClause *TreeTransform<Derived>::TransformOpenACCClause(
+    ArrayRef<const OpenACCClause *> ExistingClauses,
+    OpenACCDirectiveKind DirKind, const OpenACCClause *OldClause) {
+
+  SemaOpenACC::OpenACCParsedClause ParsedClause(
+      DirKind, OldClause->getClauseKind(), OldClause->getBeginLoc());
+  ParsedClause.setEndLoc(OldClause->getEndLoc());
+
+  if (const auto *WithParms = dyn_cast<OpenACCClauseWithParams>(OldClause))
+    ParsedClause.setLParenLoc(WithParms->getLParenLoc());
+
+  switch (OldClause->getClauseKind()) {
+  case OpenACCClauseKind::Default:
+    // There is nothing to do here as nothing dependent can appear in this
+    // clause. So just set the values so Sema can set the right value.
+    ParsedClause.setDefaultDetails(
+        cast<OpenACCDefaultClause>(OldClause)->getDefaultClauseKind());
+    break;
+  default:
+    assert(false && "Unhandled OpenACC clause in TreeTransform");
----------------
erichkeane wrote:

According to Aaron Ballman, this isn't really what 'unreachable' is for.  

There is a pretty extensive discussion somewhere between 'assert(false...) ' 
and 'llvm_unreachable', as the latter performs optimizations on release builds 
that can result in an unstable compiler.

In this case, I'm using it somewhat for potential flow-control during 
development, but once I'm sure I have all the cases covered, this will either 
go away or switch to an unreachable.

https://github.com/llvm/llvm-project/pull/88135
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to