mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-13 14:47:00 +00:00
Reject attempts to define intrinsics. This fixes PR1047 and
Regression/Verifier/2006-12-12-IntrinsicDefine.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32529 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
32c081ae5f
commit
41af719526
@ -112,6 +112,7 @@ namespace { // Anonymous namespace for class
|
|||||||
bool runOnFunction(Function &F) {
|
bool runOnFunction(Function &F) {
|
||||||
// Get dominator information if we are being run by PassManager
|
// Get dominator information if we are being run by PassManager
|
||||||
if (RealPass) EF = &getAnalysis<ETForest>();
|
if (RealPass) EF = &getAnalysis<ETForest>();
|
||||||
|
|
||||||
visit(F);
|
visit(F);
|
||||||
InstsInThisBlock.clear();
|
InstsInThisBlock.clear();
|
||||||
|
|
||||||
@ -333,6 +334,12 @@ void Verifier::visitFunction(Function &F) {
|
|||||||
F.getReturnType() == Type::VoidTy,
|
F.getReturnType() == Type::VoidTy,
|
||||||
"Functions cannot return aggregate values!", &F);
|
"Functions cannot return aggregate values!", &F);
|
||||||
|
|
||||||
|
// Verify that this function (which has a body) is not named "llvm.*". It
|
||||||
|
// is not legal to define intrinsics.
|
||||||
|
if (F.getName().size() >= 5)
|
||||||
|
Assert1(F.getName().substr(0, 5) != "llvm.",
|
||||||
|
"llvm intrinsics cannot be defined!", &F);
|
||||||
|
|
||||||
// Check that this function meets the restrictions on this calling convention.
|
// Check that this function meets the restrictions on this calling convention.
|
||||||
switch (F.getCallingConv()) {
|
switch (F.getCallingConv()) {
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user