<div>This is great!</div><div><br></div><div>- Lang.<br><br><div class="gmail_quote">On Fri, Aug 3, 2012 at 1:59 PM, Jakob Stoklund Olesen <span dir="ltr"><<a href="mailto:stoklund@2pi.dk" target="_blank">stoklund@2pi.dk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: stoklund<br>
Date: Fri Aug 3 15:59:32 2012<br>
New Revision: 161258<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=161258&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=161258&view=rev</a><br>
Log:<br>
Completely eliminate VNInfo flags.<br>
<br>
The 'unused' state of a value number can be represented as an invalid<br>
def SlotIndex. This also exposed code that shouldn't have been looking<br>
at unused value VNInfos.<br>
<br>
Modified:<br>
llvm/trunk/include/llvm/CodeGen/LiveInterval.h<br>
llvm/trunk/lib/CodeGen/LiveInterval.cpp<br>
llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/CodeGen/LiveInterval.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/LiveInterval.h?rev=161258&r1=161257&r2=161258&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/LiveInterval.h?rev=161258&r1=161257&r2=161258&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/CodeGen/LiveInterval.h (original)<br>
+++ llvm/trunk/include/llvm/CodeGen/LiveInterval.h Fri Aug 3 15:59:32 2012<br>
@@ -40,13 +40,6 @@<br>
/// definition and use points.<br>
///<br>
class VNInfo {<br>
- private:<br>
- enum {<br>
- IS_UNUSED = 1<br>
- };<br>
-<br>
- unsigned char flags;<br>
-<br>
public:<br>
typedef BumpPtrAllocator Allocator;<br>
<br>
@@ -58,29 +51,19 @@<br>
<br>
/// VNInfo constructor.<br>
VNInfo(unsigned i, SlotIndex d)<br>
- : flags(0), id(i), def(d)<br>
+ : id(i), def(d)<br>
{ }<br>
<br>
/// VNInfo construtor, copies values from orig, except for the value number.<br>
VNInfo(unsigned i, const VNInfo &orig)<br>
- : flags(orig.flags), id(i), def(orig.def)<br>
+ : id(i), def(orig.def)<br>
{ }<br>
<br>
/// Copy from the parameter into this VNInfo.<br>
void copyFrom(VNInfo &src) {<br>
- flags = src.flags;<br>
def = src.def;<br>
}<br>
<br>
- /// Used for copying value number info.<br>
- unsigned getFlags() const { return flags; }<br>
- void setFlags(unsigned flags) { this->flags = flags; }<br>
-<br>
- /// Merge flags from another VNInfo<br>
- void mergeFlags(const VNInfo *VNI) {<br>
- flags = (flags | VNI->flags) & ~IS_UNUSED;<br>
- }<br>
-<br>
/// Returns true if this value is defined by a PHI instruction (or was,<br>
/// PHI instrucions may have been eliminated).<br>
/// PHI-defs begin at a block boundary, all other defs begin at register or<br>
@@ -88,14 +71,10 @@<br>
bool isPHIDef() const { return def.isBlock(); }<br>
<br>
/// Returns true if this value is unused.<br>
- bool isUnused() const { return flags & IS_UNUSED; }<br>
- /// Set the "is unused" flag on this value.<br>
- void setIsUnused(bool unused) {<br>
- if (unused)<br>
- flags |= IS_UNUSED;<br>
- else<br>
- flags &= ~IS_UNUSED;<br>
- }<br>
+ bool isUnused() const { return !def.isValid(); }<br>
+<br>
+ /// Mark this value as unused.<br>
+ void markUnused() { def = SlotIndex(); }<br>
};<br>
<br>
/// LiveRange structure - This represents a simple register range in the<br>
<br>
Modified: llvm/trunk/lib/CodeGen/LiveInterval.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveInterval.cpp?rev=161258&r1=161257&r2=161258&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveInterval.cpp?rev=161258&r1=161257&r2=161258&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/LiveInterval.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/LiveInterval.cpp Fri Aug 3 15:59:32 2012<br>
@@ -160,7 +160,7 @@<br>
valnos.pop_back();<br>
} while (!valnos.empty() && valnos.back()->isUnused());<br>
} else {<br>
- ValNo->setIsUnused(true);<br>
+ ValNo->markUnused();<br>
}<br>
}<br>
<br>
@@ -667,9 +667,6 @@<br>
}<br>
}<br>
<br>
- // Merge the relevant flags.<br>
- V2->mergeFlags(V1);<br>
-<br>
// Now that V1 is dead, remove it.<br>
markValNoForDeletion(V1);<br>
<br>
<br>
Modified: llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp?rev=161258&r1=161257&r2=161258&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp?rev=161258&r1=161257&r2=161258&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp Fri Aug 3 15:59:32 2012<br>
@@ -706,7 +706,7 @@<br>
continue;<br>
if (VNI->isPHIDef()) {<br>
// This is a dead PHI. Remove it.<br>
- VNI->setIsUnused(true);<br>
+ VNI->markUnused();<br>
NewLI.removeRange(*LII);<br>
DEBUG(dbgs() << "Dead PHI at " << VNI->def << " may separate interval\n");<br>
CanSeparate = true;<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>