Changeset View
Changeset View
Standalone View
Standalone View
cfe/trunk/lib/CodeGen/CGExprComplex.cpp
Show First 20 Lines • Show All 458 Lines • ▼ Show 20 Lines | ComplexPairTy ComplexExprEmitter::EmitCast(CastKind CK, Expr *Op, | ||||
case CK_LValueBitCast: { | case CK_LValueBitCast: { | ||||
LValue origLV = CGF.EmitLValue(Op); | LValue origLV = CGF.EmitLValue(Op); | ||||
Address V = origLV.getAddress(); | Address V = origLV.getAddress(); | ||||
V = Builder.CreateElementBitCast(V, CGF.ConvertType(DestTy)); | V = Builder.CreateElementBitCast(V, CGF.ConvertType(DestTy)); | ||||
return EmitLoadOfLValue(CGF.MakeAddrLValue(V, DestTy), Op->getExprLoc()); | return EmitLoadOfLValue(CGF.MakeAddrLValue(V, DestTy), Op->getExprLoc()); | ||||
} | } | ||||
case CK_LValueToRValueBitCast: { | |||||
LValue SourceLVal = CGF.EmitLValue(Op); | |||||
Address Addr = Builder.CreateElementBitCast(SourceLVal.getAddress(), | |||||
CGF.ConvertTypeForMem(DestTy)); | |||||
LValue DestLV = CGF.MakeAddrLValue(Addr, DestTy); | |||||
DestLV.setTBAAInfo(TBAAAccessInfo::getMayAliasInfo()); | |||||
return EmitLoadOfLValue(DestLV, Op->getExprLoc()); | |||||
} | |||||
case CK_BitCast: | case CK_BitCast: | ||||
case CK_BaseToDerived: | case CK_BaseToDerived: | ||||
case CK_DerivedToBase: | case CK_DerivedToBase: | ||||
case CK_UncheckedDerivedToBase: | case CK_UncheckedDerivedToBase: | ||||
case CK_Dynamic: | case CK_Dynamic: | ||||
case CK_ToUnion: | case CK_ToUnion: | ||||
case CK_ArrayToPointerDecay: | case CK_ArrayToPointerDecay: | ||||
case CK_FunctionToPointerDecay: | case CK_FunctionToPointerDecay: | ||||
▲ Show 20 Lines • Show All 684 Lines • Show Last 20 Lines |