Parcourir la source

Fix an issue with local BLX branches not being turned into BL branches.

git-svn-id: branches/laksen/armiw@29355 -
Jeppe Johansen il y a 10 ans
Parent
commit
cbd75428c0
1 fichiers modifiés avec 5 ajouts et 0 suppressions
  1. 5 0
      compiler/arm/aasmcpu.pas

+ 5 - 0
compiler/arm/aasmcpu.pas

@@ -3377,6 +3377,11 @@ implementation
                   else
                     begin
                       offset:=((currsym.offset-insoffset-8) and $3fffffe);
+
+                      { Turn BLX into BL if the destination isn't odd, could happen with recursion }
+                      if not odd(offset shr 1) then
+                        bytes:=(bytes and $EB000000) or $EB000000;
+
                       bytes:=bytes or ((offset shr 2) and $ffffff);
                       bytes:=bytes or ((offset shr 1) and $1) shl 24;
                     end;