diff --git a/lib/IRGen/GenBuiltin.cpp b/lib/IRGen/GenBuiltin.cpp index 558f4d9a80eaf..a15187bddd5e0 100644 --- a/lib/IRGen/GenBuiltin.cpp +++ b/lib/IRGen/GenBuiltin.cpp @@ -210,7 +210,11 @@ void irgen::emitBuiltinCall(IRGenFunction &IGF, const BuiltinInfo &Builtin, // getCurrentAsyncTask has no arguments. if (Builtin.ID == BuiltinValueKind::GetCurrentAsyncTask) { auto task = IGF.getAsyncTask(); - out.add(IGF.Builder.CreateBitCast(task, IGF.IGM.RefCountedPtrTy)); + if (!task->getType()->isPointerTy()) { + out.add(IGF.Builder.CreateIntToPtr(task, IGF.IGM.RefCountedPtrTy)); + } else { + out.add(IGF.Builder.CreateBitCast(task, IGF.IGM.RefCountedPtrTy)); + } return; }