зеркало из https://github.com/microsoft/clang-1.git
Omit EmitConversion
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41438 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
4b0029d5f8
Коммит
10b00cfe64
|
@ -44,27 +44,6 @@ llvm::Value *CodeGenFunction::EvaluateExprAsBool(const Expr *E) {
|
|||
// Conversions
|
||||
//===--------------------------------------------------------------------===//
|
||||
|
||||
/// EmitConversion - Convert the value specied by Val, whose type is ValTy, to
|
||||
/// the type specified by DstTy, following the rules of C99 6.3.
|
||||
RValue CodeGenFunction::EmitConversion(RValue Val, QualType ValTy,
|
||||
QualType DstTy) {
|
||||
ValTy = ValTy.getCanonicalType();
|
||||
DstTy = DstTy.getCanonicalType();
|
||||
if (ValTy == DstTy) return Val;
|
||||
|
||||
// Handle conversions to bool first, they are special: comparisons against 0.
|
||||
if (const BuiltinType *DestBT = dyn_cast<BuiltinType>(DstTy))
|
||||
if (DestBT->getKind() == BuiltinType::Bool)
|
||||
return RValue::get(ConvertScalarValueToBool(Val, ValTy));
|
||||
|
||||
if (Val.isScalar() && !hasAggregateLLVMType(DstTy))
|
||||
return RValue::get(EmitScalarConversion(Val.getVal(), ValTy, DstTy));
|
||||
|
||||
|
||||
assert(0 && "FIXME: We don't support complex conversions yet!");
|
||||
}
|
||||
|
||||
|
||||
/// ConvertScalarValueToBool - Convert the specified expression value to a
|
||||
/// boolean (i1) truth value. This is equivalent to "Val == 0".
|
||||
llvm::Value *CodeGenFunction::ConvertScalarValueToBool(RValue Val, QualType Ty){
|
||||
|
|
|
@ -378,10 +378,8 @@ Value *ScalarExprEmitter::EmitCastExpr(const Expr *E, QualType DestTy) {
|
|||
|
||||
// If the destination is void, just evaluate the source.
|
||||
if (DestTy->isVoidType()) return 0;
|
||||
|
||||
// FIXME: Refactor EmitConversion to not return an RValue. Sink it into this
|
||||
// method.
|
||||
return CGF.EmitConversion(Src, E->getType(), DestTy).getVal();
|
||||
|
||||
assert(0 && "Can't convert from an aggregate yet!");
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -253,10 +253,6 @@ public:
|
|||
// Conversions
|
||||
//===--------------------------------------------------------------------===//
|
||||
|
||||
/// EmitConversion - Convert the value specied by Val, whose type is ValTy, to
|
||||
/// the type specified by DstTy, following the rules of C99 6.3.
|
||||
RValue EmitConversion(RValue Val, QualType ValTy, QualType DstTy);
|
||||
|
||||
/// ConvertScalarValueToBool - Convert the specified expression value to a
|
||||
/// boolean (i1) truth value. This is equivalent to "Val == 0".
|
||||
llvm::Value *ConvertScalarValueToBool(RValue Val, QualType Ty);
|
||||
|
|
Загрузка…
Ссылка в новой задаче