================ @@ -570,9 +570,17 @@ CIRGenFunction::emitArraySubscriptExpr(const clang::ArraySubscriptExpr *e) { } // The base must be a pointer; emit it with an estimate of its alignment. - cgm.errorNYI(e->getSourceRange(), - "emitArraySubscriptExpr: The base must be a pointer"); - return {}; + assert(e->getBase()->getType()->isPointerType() && + "The base must be a pointer"); + + LValueBaseInfo eltBaseInfo; + const Address ptrAddr = emitPointerWithAlignment(e->getBase(), &eltBaseInfo); + // Propagate the alignment from the array itself to the result. + const Address addxr = emitArraySubscriptPtr( + *this, cgm.getLoc(e->getBeginLoc()), cgm.getLoc(e->getEndLoc()), ptrAddr, + e->getType(), idx, cgm.getLoc(e->getExprLoc()), + /*shouldDecay=*/false); + return LValue::makeAddr(addxr, e->getType(), eltBaseInfo); ---------------- andykaylor wrote:
You're missing an errorNYI here for ObjectC garbage collection. This should also happen for the case that returns on line 569 here but falls through in the incubator implementation. https://github.com/llvm/llvm-project/pull/135493 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits