Changeset View
Changeset View
Standalone View
Standalone View
lib/CodeGen/CGExpr.cpp
Show First 20 Lines • Show All 461 Lines • ▼ Show 20 Lines | if (ownership != Qualifiers::OCL_None && | ||||
} | } | ||||
pushTemporaryCleanup(*this, M, E, Object); | pushTemporaryCleanup(*this, M, E, Object); | ||||
return RefTempDst; | return RefTempDst; | ||||
} | } | ||||
SmallVector<const Expr *, 2> CommaLHSs; | SmallVector<const Expr *, 2> CommaLHSs; | ||||
SmallVector<SubobjectAdjustment, 2> Adjustments; | SmallVector<SubobjectAdjustment, 2> Adjustments; | ||||
E = E->skipRValueSubobjectAdjustments(CommaLHSs, Adjustments); | SmallVector<const CastExpr *, 2> SkippedCasts; | ||||
E = E->skipRValueSubobjectAdjustments(CommaLHSs, Adjustments, SkippedCasts); | |||||
for (const auto &Ignored : CommaLHSs) | for (const auto &Ignored : CommaLHSs) | ||||
EmitIgnoredExpr(Ignored); | EmitIgnoredExpr(Ignored); | ||||
if (const auto *opaque = dyn_cast<OpaqueValueExpr>(E)) { | if (const auto *opaque = dyn_cast<OpaqueValueExpr>(E)) { | ||||
if (opaque->getType()->isRecordType()) { | if (opaque->getType()->isRecordType()) { | ||||
assert(Adjustments.empty()); | assert(Adjustments.empty()); | ||||
return EmitOpaqueValueLValue(opaque); | return EmitOpaqueValueLValue(opaque); | ||||
▲ Show 20 Lines • Show All 4,401 Lines • Show Last 20 Lines |