summaryrefslogtreecommitdiff
path: root/compiler/utils/mips/assembler_mips.h
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2015-10-22 15:25:54 +0100
committer Vladimir Marko <vmarko@google.com> 2015-11-04 14:54:23 +0000
commit10ef6941648aad04d54527d4a7a6070bf7065e88 (patch)
tree50fe6b50a3020ec7d25fbd5e4393db1c04452ce7 /compiler/utils/mips/assembler_mips.h
parentc74e69f831608964f89ac7a641fbcc09156eefaa (diff)
Delay emitting CFI PC adjustments until after Thumb2/Mips fixup.
On Mips also take into account out-of-order CFI data emitted from EmitBranches(). Change-Id: I03b0b0b4c2b1ea31a02699ef5fa1c55aa42c23c3
Diffstat (limited to 'compiler/utils/mips/assembler_mips.h')
-rw-r--r--compiler/utils/mips/assembler_mips.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/utils/mips/assembler_mips.h b/compiler/utils/mips/assembler_mips.h
index aa187b812b..4038c1f1c4 100644
--- a/compiler/utils/mips/assembler_mips.h
+++ b/compiler/utils/mips/assembler_mips.h
@@ -94,7 +94,9 @@ class MipsAssembler FINAL : public Assembler {
last_position_adjustment_(0),
last_old_position_(0),
last_branch_id_(0),
- isa_features_(instruction_set_features) {}
+ isa_features_(instruction_set_features) {
+ cfi().DelayEmittingAdvancePCs();
+ }
virtual ~MipsAssembler() {
for (auto& branch : branches_) {
@@ -599,6 +601,7 @@ class MipsAssembler FINAL : public Assembler {
void PromoteBranches();
void EmitBranch(Branch* branch);
void EmitBranches();
+ void PatchCFI(size_t number_of_delayed_adjust_pcs);
// Emits exception block.
void EmitExceptionPoll(MipsExceptionSlowPath* exception);