summaryrefslogtreecommitdiff
path: root/src/compiler/codegen/arm/Assemble.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/codegen/arm/Assemble.cc')
-rw-r--r--src/compiler/codegen/arm/Assemble.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/compiler/codegen/arm/Assemble.cc b/src/compiler/codegen/arm/Assemble.cc
index 685dd4c645..f270631e0d 100644
--- a/src/compiler/codegen/arm/Assemble.cc
+++ b/src/compiler/codegen/arm/Assemble.cc
@@ -1337,6 +1337,14 @@ STATIC AssemblerStatus assembleInstructions(CompilationUnit* cUnit,
(addPCInst->generic.offset + 4)) >> 16) & 0xffff;
}
}
+ /*
+ * If one of the pc-relative instructions expanded we'll have
+ * to make another pass. Don't bother to fully assemble the
+ * instruction.
+ */
+ if (res != kSuccess) {
+ continue;
+ }
ArmEncodingMap *encoder = &EncodingMap[lir->opcode];
u4 bits = encoder->skeleton;
int i;