Handle undef values as undefined on the constant lattice

ignore unreachable instructions

llvm-svn: 17044
This commit is contained in:
Chris Lattner 2004-10-16 18:09:41 +00:00
parent 6ac3ef950d
commit 646354bae1
1 changed files with 6 additions and 3 deletions

View File

@ -175,8 +175,10 @@ private:
hash_map<Value*, InstVal>::iterator I = ValueState.find(V);
if (I != ValueState.end()) return I->second; // Common case, in the map
if (Constant *CPV = dyn_cast<Constant>(V)) { // Constants are constant
ValueState[CPV].markConstant(CPV);
if (isa<UndefValue>(V)) {
// Nothing to do, remain undefined.
} else if (Constant *CPV = dyn_cast<Constant>(V)) {
ValueState[CPV].markConstant(CPV); // Constants are constant
} else if (isa<Argument>(V)) { // Arguments are overdefined
ValueState[V].markOverdefined();
}
@ -236,6 +238,7 @@ private:
visitTerminatorInst(I);
}
void visitUnwindInst (TerminatorInst &I) { /*returns void*/ }
void visitUnreachableInst(TerminatorInst &I) { /*returns void*/ }
void visitAllocationInst(Instruction &I) { markOverdefined(&I); }
void visitVANextInst (Instruction &I) { markOverdefined(&I); }
void visitVAArgInst (Instruction &I) { markOverdefined(&I); }