projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use MRI::getSimpleHint() instead of getRegAllocPref() in remaining cases.
[oota-llvm.git]
/
include
/
llvm
/
CodeGen
/
LiveInterval.h
diff --git
a/include/llvm/CodeGen/LiveInterval.h
b/include/llvm/CodeGen/LiveInterval.h
index d7b8f44e07b63ac13ae31bf25292294be9821a80..95760758deca5c67f737f94262e00ad34a4b3419 100644
(file)
--- a/
include/llvm/CodeGen/LiveInterval.h
+++ b/
include/llvm/CodeGen/LiveInterval.h
@@
-22,9
+22,9
@@
#define LLVM_CODEGEN_LIVEINTERVAL_H
#include "llvm/ADT/IntEqClasses.h"
#define LLVM_CODEGEN_LIVEINTERVAL_H
#include "llvm/ADT/IntEqClasses.h"
-#include "llvm/Support/Allocator.h"
-#include "llvm/Support/AlignOf.h"
#include "llvm/CodeGen/SlotIndexes.h"
#include "llvm/CodeGen/SlotIndexes.h"
+#include "llvm/Support/AlignOf.h"
+#include "llvm/Support/Allocator.h"
#include <cassert>
#include <climits>
#include <cassert>
#include <climits>
@@
-114,9
+114,6
@@
namespace llvm {
void dump() const;
void print(raw_ostream &os) const;
void dump() const;
void print(raw_ostream &os) const;
-
- private:
- LiveRange(); // DO NOT IMPLEMENT
};
template <> struct isPodLike<LiveRange> { static const bool value = true; };
};
template <> struct isPodLike<LiveRange> { static const bool value = true; };
@@
-467,7
+464,7
@@
namespace llvm {
VNInfo *LHSValNo = 0,
const VNInfo *RHSValNo = 0);
VNInfo *LHSValNo = 0,
const VNInfo *RHSValNo = 0);
- LiveInterval& operator=(const LiveInterval& rhs)
; // DO NOT IMPLEMENT
+ LiveInterval& operator=(const LiveInterval& rhs)
LLVM_DELETED_FUNCTION;
};
};
@@
-499,7
+496,9
@@
namespace llvm {
if (I == E)
return;
// Is this an instruction live-in segment?
if (I == E)
return;
// Is this an instruction live-in segment?
- if (SlotIndex::isEarlierInstr(I->start, Idx)) {
+ // If Idx is the start index of a basic block, include live-in segments
+ // that start at Idx.getBaseIndex().
+ if (I->start <= Idx.getBaseIndex()) {
EarlyVal = I->valno;
EndPoint = I->end;
// Move to the potentially live-out segment.
EarlyVal = I->valno;
EndPoint = I->end;
// Move to the potentially live-out segment.
@@
-508,6
+507,12
@@
namespace llvm {
if (++I == E)
return;
}
if (++I == E)
return;
}
+ // Special case: A PHIDef value can have its def in the middle of a
+ // segment if the value happens to be live out of the layout
+ // predecessor.
+ // Such a value is not live-in.
+ if (EarlyVal->def == Idx.getBaseIndex())
+ EarlyVal = 0;
}
// I now points to the segment that may be live-through, or defined by
// this instr. Ignore segments starting after the current instr.
}
// I now points to the segment that may be live-through, or defined by
// this instr. Ignore segments starting after the current instr.