From 84cd32a593fcd26e323aed0417fdb18c5033984b Mon Sep 17 00:00:00 2001 From: pierre Date: Fri, 20 Apr 2012 22:22:29 +0000 Subject: [PATCH] * Add more explicit sizes for array types git-svn-id: trunk@20948 - --- compiler/dbgstabs.pas | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/compiler/dbgstabs.pas b/compiler/dbgstabs.pas index 7843914c24..29156b5301 100644 --- a/compiler/dbgstabs.pas +++ b/compiler/dbgstabs.pas @@ -694,7 +694,13 @@ implementation ss:='-31;'; {u32bit : result:=def_stab_number(s32inttype)+';0;-1;'); } else - ss:=def_stabstr_evaluate(def,'r${numberstring};$1;$2;',[tostr(longint(def.low.svalue)),tostr(longint(def.high.svalue))]); + begin + if def.size <> std_param_align then + ss:='@s'+tostr(def.size*8)+';' + else + ss:=''; + ss:=ss+def_stabstr_evaluate(def,'r${numberstring};$1;$2;',[tostr(longint(def.low.svalue)),tostr(longint(def.high.svalue))]); + end; end; end; write_def_stabstr(list,def,ss); @@ -896,7 +902,12 @@ implementation begin if not is_packed_array(def) then begin - tempstr:='ar$1;$2;$3;$4'; + { Try to used P if ememlent size is smaller than + usual integer } + if def.elesize <> std_param_align then + tempstr:='ar@s'+tostr(def.elesize*8)+';$1;$2;$3;$4' + else + tempstr:='ar$1;$2;$3;$4'; if is_dynamic_array(def) then tempstr:='*'+tempstr; ss:=def_stabstr_evaluate(def,tempstr,[def_stab_number(tarraydef(def).rangedef),