================ @@ -283,6 +283,28 @@ bool ByteCodeExprGen<Emitter>::VisitCastExpr(const CastExpr *CE) { case CK_ToVoid: return discard(SubExpr); + case CK_IntegralRealToComplex: + case CK_FloatingRealToComplex: { + // We're creating a complex value here, so we need to + // allocate storage for it. + if (!Initializing) { + std::optional<unsigned> LocalIndex = + allocateLocal(CE, /*IsExtended=*/true); + if (!LocalIndex) + return false; + if (!this->emitGetPtrLocal(*LocalIndex, CE)) + return false; + } + + if (!this->visitArrayElemInit(0, SubExpr)) ---------------- shafik wrote:
Why the different init for first and second element? Complex is basiclly an array underneath: https://eel.is/c++draft/complex.numbers#general-4 but I am not sure I understand the difference in how we init the first and second element. Seems like a comment would be helpful. https://github.com/llvm/llvm-project/pull/75590 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits