Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Unified Diff: src/IceOperand.cpp

Issue 2313293002: [SubZero] Implement address optimization for MIPS (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/IceOperand.cpp
diff --git a/src/IceOperand.cpp b/src/IceOperand.cpp
index 5d7aa426086648cb51b8cde2ee150eb94d9378d2..3485b602c6d8115b4a7367fb3353a71e56a4dd87 100644
--- a/src/IceOperand.cpp
+++ b/src/IceOperand.cpp
@@ -299,9 +299,10 @@ void VariableTracking::markDef(MetadataKind TrackingKind, const Inst *Instr,
markUse(TrackingKind, Instr, Node, IsImplicit);
if (TrackingKind == VMK_Uses)
return;
- if (FirstOrSingleDefinition == nullptr)
+ if (FirstOrSingleDefinition == nullptr) {
FirstOrSingleDefinition = Instr;
- else if (TrackingKind == VMK_All)
+ FirstOrSingleDefinitionNode = Node;
+ } else if (TrackingKind == VMK_All)
Definitions.push_back(Instr);
switch (MultiDef) {
case MDS_Unknown:
@@ -357,6 +358,19 @@ const Inst *VariableTracking::getSingleDefinition() const {
return nullptr;
}
+const CfgNode *VariableTracking::getSingleDefinitionNode() const {
+ switch (MultiDef) {
+ case MDS_Unknown:
+ case MDS_MultiDefMultiBlock:
+ case MDS_MultiDefSingleBlock:
+ return nullptr;
+ case MDS_SingleDef:
+ assert(FirstOrSingleDefinitionNode);
+ return FirstOrSingleDefinitionNode;
+ }
+ return nullptr;
+}
+
const Inst *VariableTracking::getFirstDefinition() const {
switch (MultiDef) {
case MDS_Unknown:
@@ -498,6 +512,15 @@ const Inst *VariablesMetadata::getSingleDefinition(const Variable *Var) const {
return Metadata[VarNum].getSingleDefinition();
}
+const CfgNode *
+VariablesMetadata::getSingleDefinitionNode(const Variable *Var) const {
+ assert(Kind != VMK_Uses);
+ if (!isTracked(Var))
+ return nullptr; // conservative answer
+ SizeT VarNum = Var->getIndex();
+ return Metadata[VarNum].getSingleDefinitionNode();
+}
+
const Inst *VariablesMetadata::getFirstDefinition(const Variable *Var) const {
assert(Kind != VMK_Uses);
if (!isTracked(Var))
« no previous file with comments | « src/IceOperand.h ('k') | src/IceTargetLoweringMIPS32.h » ('j') | src/IceTargetLoweringMIPS32.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698