Don't attempt to upgrade argument to va.start and va.end if there are none.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33171 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer 2007-01-13 00:22:40 +00:00
parent b3258a3c0f
commit 2b21761556

View File

@ -1888,11 +1888,13 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
} else {
static unsigned upgradeCount = 1;
if (*$4.val == "%llvm.va_start" || *$4.val == "%llvm.va_end") {
std::string name("%va_upgrade");
name += llvm::utostr(upgradeCount++);
$1->insert(0, name + " = bitcast " + *(*$6)[0].val + " to i8*\n ");
*(*$6)[0].val = "i8* " + name;
(*$6)[0].type = TypeInfo::get("i8", UByteTy)->getPointerType();
if (!$6->empty()) {
std::string name("%va_upgrade");
name += llvm::utostr(upgradeCount++);
$1->insert(0, name + " = bitcast " + *(*$6)[0].val + " to i8*\n ");
*(*$6)[0].val = "i8* " + name;
(*$6)[0].type = TypeInfo::get("i8", UByteTy)->getPointerType();
}
} else if (*$4.val == "%llvm.va_copy") {
std::string name0("%va_upgrade");
name0 += llvm::utostr(upgradeCount++);