#include "llvm/Type.h"
#include "llvm/Support/CFG.h"
#include "llvm/Support/LeakDetector.h"
+#include "llvm/Support/Visibility.h"
#include "SymbolTableListTraitsImpl.h"
#include <algorithm>
using namespace llvm;
namespace {
/// DummyInst - An instance of this class is used to mark the end of the
/// instruction list. This is not a real instruction.
- struct DummyInst : public Instruction {
+ struct VISIBILITY_HIDDEN DummyInst : public Instruction {
DummyInst() : Instruction(Type::VoidTy, OtherOpsEnd, 0, 0) {
// This should not be garbage monitored.
LeakDetector::removeGarbageObject(this);
Instruction* BasicBlock::getFirstNonPHI()
{
- BasicBlock::iterator i = begin(), e = end();
+ BasicBlock::iterator i = begin();
// All valid basic blocks should have a terminator,
// which is not a PHINode. If we have invalid basic
// block we'll get assert when dereferencing past-the-end
PN->removeIncomingValue(Pred, false);
// If all incoming values to the Phi are the same, we can replace the Phi
// with that value.
- if (Value *PNV = PN->hasConstantValue()) {
+ Value* PNV = 0;
+ if (!DontDeleteUselessPHIs && (PNV = PN->hasConstantValue())) {
PN->replaceAllUsesWith(PNV);
PN->eraseFromParent();
}