<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 20, 2015 at 2:05 PM, Philip Reames <span dir="ltr"><<a href="mailto:listmail@philipreames.com" target="_blank">listmail@philipreames.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: reames<br>
Date: Fri Feb 20 16:05:18 2015<br>
New Revision: 230068<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=230068&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=230068&view=rev</a><br>
Log:<br>
[RewriteStatepointsForGC] More style cleanup [NFC]<br>
<br>
Use llvm_unreachable where appropriate, use SmallVector where easy to do so, introduce typedefs for planned type migrations.<br>
<br>
<br>
Modified:<br>
llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp?rev=230068&r1=230067&r2=230068&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp?rev=230068&r1=230067&r2=230068&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp Fri Feb 20 16:05:18 2015<br>
@@ -96,10 +96,11 @@ namespace {<br>
// base relation will remain. Internally, we add a mixture of the two<br>
// types, then update all the second type to the first type<br>
typedef std::map<Value *, Value *> DefiningValueMapTy;<br>
+typedef std::set<llvm::Value *> StatepointLiveSetTy;<br>
<br>
struct PartiallyConstructedSafepointRecord {<br>
/// The set of values known to be live accross this safepoint<br>
- std::set<llvm::Value *> liveset;<br>
+ StatepointLiveSetTy liveset;<br>
<br>
/// Mapping from live pointers to a base-defining-value<br>
DenseMap<llvm::Value *, llvm::Value *> PointerToBase;<br>
@@ -283,7 +284,7 @@ analyzeParsePointLiveness(DominatorTree<br>
// Note: This output is used by several of the test cases<br>
// The order of elemtns in a set is not stable, put them in a vec and sort<br>
// by name<br>
- std::vector<Value *> temp;<br>
+ SmallVector<Value *, 64> temp;<br>
temp.insert(temp.end(), liveset.begin(), liveset.end());<br>
std::sort(temp.begin(), temp.end(), order_by_name);<br>
errs() << "Live Variables:\n";<br>
@@ -583,13 +584,14 @@ private:<br>
Value *base; // non null only if status == base<br>
};<br>
<br>
+typedef std::map<Value *, PhiState> ConflictStateMapTy;<br>
// Values of type PhiState form a lattice, and this is a helper<br>
// class that implementes the meet operation. The meat of the meet<br>
// operation is implemented in MeetPhiStates::pureMeet<br>
class MeetPhiStates {<br>
public:<br>
// phiStates is a mapping from PHINodes and SelectInst's to PhiStates.<br>
- explicit MeetPhiStates(const std::map<Value *, PhiState> &phiStates)<br>
+ explicit MeetPhiStates(const ConflictStateMapTy &phiStates)<br>
: phiStates(phiStates) {}<br>
<br>
// Destructively meet the current result with the base V. V can<br>
@@ -607,7 +609,7 @@ public:<br>
PhiState getResult() const { return currentResult; }<br>
<br>
private:<br>
- const std::map<Value *, PhiState> &phiStates;<br>
+ const ConflictStateMapTy &phiStates;<br>
PhiState currentResult;<br>
<br>
/// Return a phi state for a base defining value. We'll generate a new<br>
@@ -687,7 +689,7 @@ static Value *findBasePointer(Value *I,<br>
// analougous to pessimistic data flow and would likely lead to an<br>
// overall worse solution.<br>
<br>
- std::map<Value *, PhiState> states;<br>
+ ConflictStateMapTy states;<br>
states[def] = PhiState();<br>
// Recursively fill in all phis & selects reachable from the initial one<br>
// for which we don't already know a definite base value for<br>
@@ -820,9 +822,8 @@ static Value *findBasePointer(Value *I,<br>
v->getParent()->getParent()->getParent()->getContext(), MDConst);<br>
basesel->setMetadata("is_base_value", md);<br>
states[v] = PhiState(PhiState::Conflict, basesel);<br>
- } else {<br>
- assert(false);<br>
- }<br>
+ } else<br>
+ llvm_unreachable("unknown conflict type");<br></blockquote><div><br>Rather than llvm_unreachable in an else - take the 'if' and move it into an assert instead?<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
}<br>
}<br>
<br>
@@ -922,9 +923,8 @@ static Value *findBasePointer(Value *I,<br>
}<br>
basesel->setOperand(i, base);<br>
}<br>
- } else {<br>
- assert(false && "unexpected type");<br>
- }<br>
+ } else<br>
+ llvm_unreachable("unexpected conflict type");<br>
}<br>
}<br>
<br>
@@ -1356,7 +1356,7 @@ static void stablize_order(SmallVectorIm<br>
SmallVectorImpl<Value *> &livevec) {<br>
assert(basevec.size() == livevec.size());<br>
<br>
- std::vector<name_ordering> temp;<br>
+ SmallVector<name_ordering, 64> temp;<br>
for (size_t i = 0; i < basevec.size(); i++) {<br>
name_ordering v;<br>
v.base = basevec[i];<br>
@@ -1654,9 +1654,8 @@ static void insertUseHolderAfter(CallSit<br>
Func, Values, "", invoke->getUnwindDest()->getFirstInsertionPt());<br>
holders.push_back(normal_holder);<br>
holders.push_back(unwind_holder);<br>
- } else {<br>
- assert(false && "Unsupported");<br>
- }<br>
+ } else<br>
+ llvm_unreachable("unsupported call type");<br>
}<br>
<br>
static void findLiveReferences(<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></div>