trunk/gcclocal/vcs_diff_compiler.patch results

File details

./trunk/gcclocal/vcs_diff_compiler.patch 2026-06-24-05:45

Used binaries

   

Binaries version

> uname -a
Linux ServeurCuves 6.8.0-106-generic #106-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar  6 07:58:08 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux

Full file content

 
diff --git a/compiler/arm/aasmcpu.pas b/compiler/arm/aasmcpu.pas
index 5a3e9c01fc..89c728bbd9 100644
--- a/compiler/arm/aasmcpu.pas
+++ b/compiler/arm/aasmcpu.pas
@@ -321,7 +321,7 @@ implementation
 
   uses
     itcpugas,aoptcpu,
-    systems,symdef;
+    systems,symdef,cutils;
 
 
     procedure taicpu.loadshifterop(opidx:longint;const so:tshifterop);
@@ -1159,6 +1159,9 @@ implementation
                                   hp2.Next:=nil;
                                   hp2.Previous:=nil;
                                   listtoinsert.Concat(hp2);
+                                  if ((taicpu(curtai).oper[curop]^.ref^.base<>NR_NO) and not(is_pc(taicpu(curtai).oper[curop]^.ref^.base))) or
+                                     (taicpu(curtai).oper[curop]^.ref^.index<>NR_NO) then
+                                    list.insertafter(curtai,tai_comment.create(strpnew('internalerror(200309012')));
                                   taicpu(curtai).oper[curop]^.ref^.symboldata:=hp;
                                   taicpu(curtai).oper[curop]^.ref^.symbol:=l;
                                   l.increfs;
diff --git a/compiler/arm/agarmgas.pas b/compiler/arm/agarmgas.pas
index a152371522..086140ccc3 100644
--- a/compiler/arm/agarmgas.pas
+++ b/compiler/arm/agarmgas.pas
@@ -213,8 +213,11 @@       TArmAppleGNUAssembler=class(TAppleGNUassembler)
             if assigned(symbol) then
               begin
                 if (base<>NR_NO) and not(is_pc(base)) then
-                  internalerror(200309011);
-                s:=symbol.name;
+                  s:='['+gas_regname(base)+']'
+                else
+                  s:='';
+                // internalerror(200309011);
+                s:=s+symbol.name;
                 if offset<>0 then
                   s:=s+tostr_with_plus(offset);
                 if refaddr=addr_pic then