Basic fix for PR#591; don't convert an fprintf() to an fwrite() if there

is a mismatch in their character type pointers (i.e. fprintf() prints an
array of ubytes while fwrite() takes an array of sbytes).
We can probably do better than this (such as casting the ubyte to an
sbyte).

llvm-svn: 22310
This commit is contained in:
John Criswell 2005-06-29 15:03:18 +00:00
parent 4401049f05
commit 4642afdcc1
1 changed files with 9 additions and 0 deletions

View File

@ -1305,6 +1305,15 @@ public:
Function* fwrite_func = SLC.get_fwrite(FILEptr_type);
if (!fwrite_func)
return false;
// Make sure that the fprintf() and fwrite() functions both take the
// same type of char pointer.
if (ci->getOperand(2)->getType() !=
fwrite_func->getFunctionType()->getParamType(0))
{
return false;
}
std::vector<Value*> args;
args.push_back(ci->getOperand(2));
args.push_back(ConstantUInt::get(SLC.getIntPtrType(),len));