Переглянути джерело

* disable fpc_chararray_enum for now on avr because the register allocator cannot currently handle it

git-svn-id: trunk@30380 -
florian 10 роки тому
батько
коміт
98856437b2
2 змінених файлів з 13 додано та 0 видалено
  1. 7 0
      rtl/inc/compproc.inc
  2. 6 0
      rtl/inc/sstrings.inc

+ 7 - 0
rtl/inc/compproc.inc

@@ -187,7 +187,14 @@ procedure fpc_AnsiStr_Currency(c : currency;len,fr : SizeInt;out s : RawByteStri
 {$ifndef FPUNONE}
 procedure fpc_chararray_Float(d : ValReal;len,fr,rt : SizeInt;out a : array of char); compilerproc;
 {$endif}
+{$ifndef CPUAVR}
+{ currently, the avr code generator fails on this procedure, so we disable it, 
+  this is not a good solution but fixing compilation of this procedure for
+  avr is hard, requires significant changes to the register allocator to take
+  care of different register classes }
 procedure fpc_chararray_enum(ordinal,len:sizeint;typinfo,ord2strindex:pointer;out a : array of char);compilerproc;
+{$endif CPUAVR}
+
 procedure fpc_chararray_bool(b : boolean;len:sizeint;out a : array of char);compilerproc;
 {$ifdef FPC_HAS_STR_CURRENCY}
 procedure fpc_chararray_Currency(c : Currency;len,fr : SizeInt;out a : array of char);compilerproc;

+ 6 - 0
rtl/inc/sstrings.inc

@@ -990,6 +990,11 @@ end;
 {$endif}
 
 {$ifndef FPC_STR_ENUM_INTERN}
+{ currently, the avr code generator fails on this procedure, so we disable it, 
+  this is not a good solution but fixing compilation of this procedure for
+  avr is hard, requires significant changes to the register allocator to take
+  care of different register classes }
+{$ifndef CPUAVR}
 procedure fpc_chararray_enum(ordinal,len:sizeint;typinfo,ord2strindex:pointer;out a : array of char);compilerproc;
 var
   ss : shortstring;
@@ -1002,6 +1007,7 @@ begin
     maxlen:=high(a)+1;
   fpc_shortstr_chararray_intern_charmove(ss,a,maxlen);
 end;
+{$endif CPUAVR}
 {$endif not FPC_STR_ENUM_INTERN}
 
 procedure fpc_chararray_bool(b : boolean;len:sizeint;out a : array of char);compilerproc;