aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2010-02-15 22:09:09 +0000
committerNick Lewycky <nicholas@mxc.ca>2010-02-15 22:09:09 +0000
commit6a7cb63f6fe4b9ce707e88490e2eeb76cb40ed80 (patch)
tree00177f3ee697ea23e4c4f4958a8a5e7fcd565e1b /lib
parent8eea48a43da9e861841abe869c5f3215c1f42d27 (diff)
downloadexternal_llvm-6a7cb63f6fe4b9ce707e88490e2eeb76cb40ed80.zip
external_llvm-6a7cb63f6fe4b9ce707e88490e2eeb76cb40ed80.tar.gz
external_llvm-6a7cb63f6fe4b9ce707e88490e2eeb76cb40ed80.tar.bz2
Teach the verifier to check the condition on a branch and ensure that it has
'i1' type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96282 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/VMCore/Verifier.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp
index be86614..2b4892b 100644
--- a/lib/VMCore/Verifier.cpp
+++ b/lib/VMCore/Verifier.cpp
@@ -317,6 +317,7 @@ namespace {
void visitStoreInst(StoreInst &SI);
void visitInstruction(Instruction &I);
void visitTerminatorInst(TerminatorInst &I);
+ void visitBranchInst(BranchInst &BI);
void visitReturnInst(ReturnInst &RI);
void visitSwitchInst(SwitchInst &SI);
void visitSelectInst(SelectInst &SI);
@@ -749,6 +750,14 @@ void Verifier::visitTerminatorInst(TerminatorInst &I) {
visitInstruction(I);
}
+void Verifier::visitBranchInst(BranchInst &BI) {
+ if (BI.isConditional()) {
+ Assert2(BI.getCondition()->getType()->isIntegerTy(1),
+ "Branch condition is not 'i1' type!", &BI, BI.getCondition());
+ }
+ visitTerminatorInst(BI);
+}
+
void Verifier::visitReturnInst(ReturnInst &RI) {
Function *F = RI.getParent()->getParent();
unsigned N = RI.getNumOperands();