diff options
author | Jim Laskey <jlaskey@mac.com> | 2006-03-23 20:13:25 +0000 |
---|---|---|
committer | Jim Laskey <jlaskey@mac.com> | 2006-03-23 20:13:25 +0000 |
commit | 9b2b21b62a415614c7ae791f9b04590315b70bb6 (patch) | |
tree | 774af59808d6ad332f81700dc261c4495175176b /lib/VMCore | |
parent | dc6af72781507383ba244cace39293fc244bb753 (diff) | |
download | external_llvm-9b2b21b62a415614c7ae791f9b04590315b70bb6.zip external_llvm-9b2b21b62a415614c7ae791f9b04590315b70bb6.tar.gz external_llvm-9b2b21b62a415614c7ae791f9b04590315b70bb6.tar.bz2 |
Add some more bulletproofing to auto upgrade of llvm.dbg intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26996 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore')
-rw-r--r-- | lib/VMCore/AutoUpgrade.cpp | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/lib/VMCore/AutoUpgrade.cpp b/lib/VMCore/AutoUpgrade.cpp index 646d4ae..af4417e 100644 --- a/lib/VMCore/AutoUpgrade.cpp +++ b/lib/VMCore/AutoUpgrade.cpp @@ -153,35 +153,31 @@ static Function *getUpgradedIntrinsic(Function *F) { // of zero in the array indicates replacing with UndefValue for the arg type. // NULL is returned if there is no permutation. It's assumed that the function // name is in the form "llvm.?????" -static unsigned *getArgumentPermutation(Function* F) { - const std::string& Name = F->getName(); - const FunctionType *FTy = F->getFunctionType(); - unsigned N = FTy->getNumParams(); +static unsigned *getArgumentPermutation(Function* Fn, Function* NewFn) { + const std::string& Name = Fn->getName(); + unsigned N = Fn->getFunctionType()->getNumParams(); + unsigned M = NewFn->getFunctionType()->getNumParams(); switch (Name[5]) { case 'd': if (Name == "llvm.dbg.stoppoint") { static unsigned Permutation[] = { 2, 3, 4 }; - assert(F->getFunctionType()->getNumParams() == - (sizeof(Permutation) / sizeof(unsigned)) && + assert(M == (sizeof(Permutation) / sizeof(unsigned)) && "Permutation is wrong length"); if (N == 4) return Permutation; } else if (Name == "llvm.dbg.region.start") { static unsigned Permutation[] = { 0 }; - assert(F->getFunctionType()->getNumParams() == - (sizeof(Permutation) / sizeof(unsigned)) && + assert(M == (sizeof(Permutation) / sizeof(unsigned)) && "Permutation is wrong length"); if (N == 0) return Permutation; } else if (Name == "llvm.dbg.region.end") { static unsigned Permutation[] = { 0 }; - assert(F->getFunctionType()->getNumParams() == - (sizeof(Permutation) / sizeof(unsigned)) && + assert(M == (sizeof(Permutation) / sizeof(unsigned)) && "Permutation is wrong length"); if (N == 0) return Permutation; } else if (Name == "llvm.dbg.declare") { static unsigned Permutation[] = { 0, 0 }; - assert(F->getFunctionType()->getNumParams() == - (sizeof(Permutation) / sizeof(unsigned)) && + assert(M == (sizeof(Permutation) / sizeof(unsigned)) && "Permutation is wrong length"); if (N == 0) return Permutation; } @@ -259,7 +255,7 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) { const FunctionType *NewFnTy = NewFn->getFunctionType(); std::vector<Value*> Oprnds; - unsigned *Permutation = getArgumentPermutation(F); + unsigned *Permutation = getArgumentPermutation(F, NewFn); unsigned N = NewFnTy->getNumParams(); if (Permutation) { |