question about code in CGBuiltin.cpp

It seems to me that line 1333 in CGBuiltin.cpp will never assert since it
is checking whether PTy can be bitcast to FTy->getParamType(i) which is equal
to PTy.

Shouldn't the assertion check whether ArgValue->getType() can be bitcast to
PTy without loss instead?

01329       // If the intrinsic arg type is different from the builtin arg type
01330       // we need to do a bit cast.
01331       llvm::Type *PTy = FTy->getParamType(i);
01332       if (PTy != ArgValue->getType()) {
01333         assert(PTy->canLosslesslyBitCastTo(FTy->getParamType(i)) &&
01334                "Must be able to losslessly bit cast to param");
01335         ArgValue = Builder.CreateBitCast(ArgValue, PTy);
01336       }
01337 
01338       Args.push_back(ArgValue);