浏览代码

* don't conditionalise BL on ARM, because it may have to be converted to
BLX at link time
o related to the change introduced in r32788

git-svn-id: trunk@33199 -

Jonas Maebe 9 年之前
父节点
当前提交
38fd0efa3b
共有 1 个文件被更改,包括 5 次插入1 次删除
  1. 5 1
      compiler/arm/aoptcpu.pas

+ 5 - 1
compiler/arm/aoptcpu.pas

@@ -93,7 +93,11 @@ Implementation
         (taicpu(p).opcode<>A_CBZ) and
         (taicpu(p).opcode<>A_CBNZ) and
         (taicpu(p).opcode<>A_PLD) and
-        ((taicpu(p).opcode<>A_BLX) or
+        (((taicpu(p).opcode<>A_BLX) and
+          { BL may need to be converted into BLX by the linker -- could possibly
+            be allowed in case it's to a local symbol of which we know that it
+            uses the same instruction set as the current one }
+          (taicpu(p).opcode<>A_BL)) or
          (taicpu(p).oper[0]^.typ=top_reg));
     end;