From 239c4e72b5a69754e1d6879be5ba1f85150655c1 Mon Sep 17 00:00:00 2001 From: buzbee Date: Fri, 16 Mar 2012 08:42:29 -0700 Subject: 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 --- src/compiler/codegen/MethodCodegenDriver.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/compiler/codegen/MethodCodegenDriver.cc') 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; } -- cgit v1.2.3-59-g8ed1b