#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/STLExtras.h"
+#include <map>
+#include <set>
using namespace llvm;
char LazyValueInfo::ID = 0;
INITIALIZE_PASS(LazyValueInfo, "lazy-value-info",
- "Lazy Value Information Analysis", false, true);
+ "Lazy Value Information Analysis", false, true)
namespace llvm {
FunctionPass *createLazyValueInfoPass() { return new LazyValueInfo(); }
return markOverdefined();
return markNotConstant(RHS.getNotConstant());
} else if (isConstantRange()) {
+ // FIXME: This could be made more precise.
return markOverdefined();
}
return markConstantRange(RHS.getConstantRange());
}
- // RHS must be a constant, we must be undef, constant, or notconstant.
- assert(!isConstantRange() &&
- "Constant and ConstantRange cannot be merged.");
+ // RHS must be a constant, we must be constantrange,
+ // undef, constant, or notconstant.
+ if (isConstantRange()) {
+ // FIXME: This could be made more precise.
+ return markOverdefined();
+ }
if (isUndefined())
return markConstant(RHS.getConstant());