aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/Designator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CodeGen/Designator.cc')
-rw-r--r--lib/CodeGen/Designator.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/CodeGen/Designator.cc b/lib/CodeGen/Designator.cc
index c7d0796..019c19e 100644
--- a/lib/CodeGen/Designator.cc
+++ b/lib/CodeGen/Designator.cc
@@ -231,6 +231,9 @@ Value *CodeGen::emitCoercedExpr(ExprAST *E, const TypeInfo *Target) {
return nullptr;
}
if (Src && Src->sameType(Target) && !Target->isVoid()) return emitExpr(E);
+ if (Src && Src->Kind == TypeKind::CScalar && Target->Kind == TypeKind::CScalar &&
+ !Src->isVoid() && !Target->isVoid())
+ return convertNumericValue(emitExpr(E), Src, Target);
reportError("Cannot implicitly convert %s to %s; use an explicit cast",
Src ? Src->Name.c_str() : "expression", Target->Name.c_str());
return nullptr;