================ @@ -2209,6 +2209,18 @@ void CodeGenFunction::EmitStoreOfScalar(llvm::Value *Value, Address Addr, } } + // When storing a pointer, perform address space cast if needed. ---------------- macurtis-amd wrote:
@efriedma-quic Thanks for looking at this. Did not realize that the types are expected to match at this point. Would just before to [the call to `EmitStoreThroughLValue`](https://github.com/llvm/llvm-project/blob/460e9a883786c23197d064e71c810cb2a95f3564/clang/lib/CodeGen/CGDecl.cpp#L800) in [`CodeGenFunction::EmitScalarInit`](https://github.com/llvm/llvm-project/blob/460e9a883786c23197d064e71c810cb2a95f3564/clang/lib/CodeGen/CGDecl.cpp#L786) be an appropriate place to do the cast if needed? ``` void CodeGenFunction::EmitScalarInit(const Expr *init, const ValueDecl *D, LValue lvalue, bool capturedByInit) { Qualifiers::ObjCLifetime lifetime = lvalue.getObjCLifetime(); if (!lifetime) { llvm::Value *Value; if (PointerAuthQualifier PtrAuth = lvalue.getQuals().getPointerAuth()) { Value = EmitPointerAuthQualify(PtrAuth, init, lvalue.getAddress()); lvalue.getQuals().removePointerAuth(); } else { Value = EmitScalarExpr(init); } if (capturedByInit) drillIntoBlockVariable(*this, lvalue, cast<VarDecl>(D)); EmitNullabilityCheck(lvalue, Value, init->getExprLoc()); EmitStoreThroughLValue(RValue::get(Value), lvalue, true); return; } ``` https://github.com/llvm/llvm-project/pull/154380 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits