summaryrefslogtreecommitdiff
path: root/src/compiler/codegen/MethodCodegenDriver.cc
diff options
context:
space:
mode:
author buzbee <buzbee@google.com> 2012-03-16 08:42:29 -0700
committer buzbee <buzbee@google.com> 2012-03-17 16:52:32 -0700
commit239c4e72b5a69754e1d6879be5ba1f85150655c1 (patch)
tree45404157d7a684a739d218dc5a9ee3c0a6cdab19 /src/compiler/codegen/MethodCodegenDriver.cc
parent8ed14528fb70a9ba7cc5e471317d08dc629cbc23 (diff)
Loop detection, improved reg allocation
Detect loops and loop nesting depth, and use the latter to weight register uses (which are then used to determine which registers to promote). Also: o Fixed typo that prevented squashing of useless fp reg copies o Rescheduled array access checks to hide latency of limit load. o Add basic-block optimization pass to remove duplicate range checks. o Fixed bug that prevented recognition of redundant null checks following iput-wide and aput-wide. Change-Id: Icfbae39e89b1d14b8703ad6bbb0b29c0635fed1e
Diffstat (limited to 'src/compiler/codegen/MethodCodegenDriver.cc')
-rw-r--r--src/compiler/codegen/MethodCodegenDriver.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/compiler/codegen/MethodCodegenDriver.cc b/src/compiler/codegen/MethodCodegenDriver.cc
index 64f55c6b02..45a0c75afb 100644
--- a/src/compiler/codegen/MethodCodegenDriver.cc
+++ b/src/compiler/codegen/MethodCodegenDriver.cc
@@ -757,9 +757,12 @@ void handleExtendedMethodMIR(CompilationUnit* cUnit, MIR* mir)
newLIR1(cUnit, kPseudoSSARep, (int) ssaString);
break;
}
- case kMirOpCopy:
- UNIMPLEMENTED(FATAL) << "Need kMirOpCopy";
+ case kMirOpCopy: {
+ RegLocation rlSrc = oatGetSrc(cUnit, mir, 0);
+ RegLocation rlDest = oatGetDest(cUnit, mir, 0);
+ storeValue(cUnit, rlDest, rlSrc);
break;
+ }
default:
break;
}