1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00

Add recognition and verification of new llvm.stacksave/llvm.stackrestore intrinsics

llvm-svn: 25266
This commit is contained in:
Chris Lattner 2006-01-13 02:15:39 +00:00
parent 6f8204560f
commit e13a03d217
2 changed files with 18 additions and 4 deletions

View File

@ -249,10 +249,12 @@ unsigned Function::getIntrinsicID() const {
if (getName() == "llvm.readcyclecounter") return Intrinsic::readcyclecounter;
break;
case 's':
if (getName() == "llvm.setjmp") return Intrinsic::setjmp;
if (getName() == "llvm.sigsetjmp") return Intrinsic::sigsetjmp;
if (getName() == "llvm.siglongjmp") return Intrinsic::siglongjmp;
if (getName() == "llvm.sqrt") return Intrinsic::sqrt;
if (getName() == "llvm.setjmp") return Intrinsic::setjmp;
if (getName() == "llvm.sigsetjmp") return Intrinsic::sigsetjmp;
if (getName() == "llvm.siglongjmp") return Intrinsic::siglongjmp;
if (getName() == "llvm.stackrestore") return Intrinsic::stackrestore;
if (getName() == "llvm.stacksave") return Intrinsic::stacksave;
if (getName() == "llvm.sqrt") return Intrinsic::sqrt;
break;
case 'v':
if (getName() == "llvm.va_copy") return Intrinsic::vacopy;

View File

@ -796,6 +796,18 @@ void Verifier::visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI) {
case Intrinsic::memmove: NumArgs = 4; break;
case Intrinsic::memset: NumArgs = 4; break;
case Intrinsic::stacksave:
NumArgs = 0;
Assert1(CI.getType() == PointerType::get(Type::SByteTy),
"llvm.stacksave must return an sbyte*", &CI);
break;
case Intrinsic::stackrestore:
NumArgs = 1;
Assert1(CI.getOperand(1)->getType() == PointerType::get(Type::SByteTy),
"llvm.stackrestore must take an sbyte*", &CI);
Assert1(CI.getType() == Type::VoidTy,
"llvm.stackrestore return void", &CI);
break;
case Intrinsic::prefetch: NumArgs = 3; break;
case Intrinsic::pcmarker:
NumArgs = 1;