================
@@ -3649,6 +3649,25 @@ FunctionProtoType::FunctionProtoType(QualType result, 
ArrayRef<QualType> params,
     auto &EllipsisLoc = *getTrailingObjects<SourceLocation>();
     EllipsisLoc = epi.EllipsisLoc;
   }
+
+  if (!epi.FunctionEffects.empty()) {
+    auto &ExtraBits = *getTrailingObjects<FunctionTypeExtraBitfields>();
+    // TODO: bitfield overflow?
+    ExtraBits.NumFunctionEffects = epi.FunctionEffects.size();
+
+    ArrayRef<FunctionEffect> SrcFX = epi.FunctionEffects.effects();
+    auto *DestFX = getTrailingObjects<FunctionEffect>();
+    std::copy(SrcFX.begin(), SrcFX.end(), DestFX);
+
+    ArrayRef<FunctionEffectCondition> SrcConds =
+        epi.FunctionEffects.conditions();
+    if (!SrcConds.empty()) {
+      ExtraBits.EffectsHaveConditions = true;
+      auto *DestConds = getTrailingObjects<FunctionEffectCondition>();
+      std::copy(SrcConds.begin(), SrcConds.end(), DestConds);
----------------
Sirraide wrote:

```suggestion
      std::uninitialized_copy(SrcConds.begin(), SrcConds.end(), DestConds);
```

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

Reply via email to