diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2015-02-04 10:58:28 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-02-04 10:58:29 +0000 |
commit | 53150eb4fb5c3bbcb0138b8dccb481726299f6ab (patch) | |
tree | 7c5b70316d476f0101263c22debc73b60f4a2f5e /compiler/optimizing | |
parent | f4b24f7ea507ff41db39154a1e6a681a582e224a (diff) | |
parent | 82f344970ad65538d341706b02eeaa94508474b8 (diff) | |
download | art-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.cc | 5 |
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) { |