summaryrefslogtreecommitdiff
path: root/src/compiler/codegen/RallocUtil.cc
diff options
context:
space:
mode:
author buzbee <buzbee@google.com> 2011-09-26 15:05:48 -0700
committer buzbee <buzbee@google.com> 2011-09-26 15:05:48 -0700
commitb29e4d1423028fab47db3be6e41e4b2a067bf100 (patch)
treec965f68c3c57750a837baf4f70fd9dc876adb082 /src/compiler/codegen/RallocUtil.cc
parent395520eaa47eca25b92e86188accf3095d60af49 (diff)
Misc codegen fixes related to register promotion
The post-promotion world no longer guarantees that wide result pairs don't overlap with source operands. Also had to narrow a load-elimination optimization to apply only when using temp registers for Dalvik virtual registers. Change-Id: I2afbbec865d5a14d46e539cce4d8b3d0e4e8880b
Diffstat (limited to 'src/compiler/codegen/RallocUtil.cc')
-rw-r--r--src/compiler/codegen/RallocUtil.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/compiler/codegen/RallocUtil.cc b/src/compiler/codegen/RallocUtil.cc
index 6875718154..69b98d4814 100644
--- a/src/compiler/codegen/RallocUtil.cc
+++ b/src/compiler/codegen/RallocUtil.cc
@@ -547,6 +547,12 @@ extern RegisterInfo* oatIsTemp(CompilationUnit* cUnit, int reg)
return (p->isTemp) ? p : NULL;
}
+extern RegisterInfo* oatIsPromoted(CompilationUnit* cUnit, int reg)
+{
+ RegisterInfo* p = getRegInfo(cUnit, reg);
+ return (p->isTemp) ? NULL : p;
+}
+
extern bool oatIsDirty(CompilationUnit* cUnit, int reg)
{
RegisterInfo* p = getRegInfo(cUnit, reg);
@@ -849,7 +855,7 @@ STATIC void copyRegInfo(CompilationUnit* cUnit, int newReg, int oldReg)
/*
* Return an updated location record with current in-register status.
* If the value lives in live temps, reflect that fact. No code
- * is generated. The the live value is part of an older pair,
+ * is generated. If the live value is part of an older pair,
* clobber both low and high.
* TUNING: clobbering both is a bit heavy-handed, but the alternative
* is a bit complex when dealing with FP regs. Examine code to see