================
@@ -258,6 +258,37 @@ class AggExprEmitter : public StmtVisitor<AggExprEmitter> {
break;
}
+
+ case CK_NonAtomicToAtomic:
+ case CK_AtomicToNonAtomic: {
+ bool isToAtomic = (e->getCastKind() == CK_NonAtomicToAtomic);
+ if (!isToAtomic) {
+ cgf.cgm.errorNYI(e->getSourceRange(),
+ "AggExprEmitter: CK_AtomicToNonAtomic");
+ return;
+ }
+
+ // Determine the atomic and value types.
+ QualType atomicType = e->getSubExpr()->getType();
+ QualType valueType = e->getType();
+ if (isToAtomic)
+ std::swap(atomicType, valueType);
+
+ assert(atomicType->isAtomicType());
+ assert(cgf.getContext().hasSameUnqualifiedType(
+ valueType, atomicType->castAs<AtomicType>()->getValueType()));
+
+ // Just recurse normally if we're ignoring the result or the
+ // atomic type doesn't change representation.
+ if (dest.isIgnored() || !cgf.cgm.isPaddedAtomicType(atomicType)) {
+ return Visit(e->getSubExpr());
+ }
+
+ cgf.cgm.errorNYI(
+ e->getSourceRange(),
+ "AggExprEmitter: AtomicCast not ignored or has padded atomic type");
----------------
Lancern wrote:
```suggestion
"AggExprEmitter: AtomicCast not ignored and has padded atomic type");
```
https://github.com/llvm/llvm-project/pull/204653
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits