summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2015-02-04 10:58:28 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-02-04 10:58:29 +0000
commit53150eb4fb5c3bbcb0138b8dccb481726299f6ab (patch)
tree7c5b70316d476f0101263c22debc73b60f4a2f5e /compiler/optimizing
parentf4b24f7ea507ff41db39154a1e6a681a582e224a (diff)
parent82f344970ad65538d341706b02eeaa94508474b8 (diff)
downloadart-53150eb4fb5c3bbcb0138b8dccb481726299f6ab.tar.gz
art-53150eb4fb5c3bbcb0138b8dccb481726299f6ab.tar.bz2
art-53150eb4fb5c3bbcb0138b8dccb481726299f6ab.zip
Merge "Fix a bug in combination of intrinsics and kNoOutputOverlap."
Diffstat (limited to 'compiler/optimizing')
-rw-r--r--compiler/optimizing/intrinsics_arm64.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/optimizing/intrinsics_arm64.cc b/compiler/optimizing/intrinsics_arm64.cc
index ba26afed44..7a3d7d8389 100644
--- a/compiler/optimizing/intrinsics_arm64.cc
+++ b/compiler/optimizing/intrinsics_arm64.cc
@@ -930,7 +930,10 @@ void IntrinsicLocationsBuilderARM64::VisitStringCharAt(HInvoke* invoke) {
kIntrinsified);
locations->SetInAt(0, Location::RequiresRegister());
locations->SetInAt(1, Location::RequiresRegister());
- locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
+ // In case we need to go in the slow path, we can't have the output be the same
+ // as the input: the current liveness analysis considers the input to be live
+ // at the point of the call.
+ locations->SetOut(Location::RequiresRegister(), Location::kOutputOverlap);
}
void IntrinsicCodeGeneratorARM64::VisitStringCharAt(HInvoke* invoke) {