CharacterValueTy CharacterExprEmitter::VisitCallExpr(const CallExpr *E) {
  CharacterValueTy Dest;
  if(hasDestination())
    Dest = takeDestination();
  else {
    // FIXME function returning CHARACTER*(*)
    auto RetType = E->getFunction()->getType();
    Dest = CGF.GetCharacterValueFromPtr(
             CGF.CreateTempAlloca(CGF.ConvertTypeForMem(RetType), "characters"),
             RetType);
  }

  CallArgList ArgList;
  ArgList.addReturnValueArg(Dest);
  return CGF.EmitCall(E->getFunction(), ArgList, E->getArguments()).asCharacter();
}