ソースを参照

* fixed ansi/unicodestring constants on non-llvm/darwin platforms after
r28327

git-svn-id: branches/hlcgllvm@28404 -

Jonas Maebe 11 年 前
コミット
6e09fcb744
1 ファイル変更10 行追加3 行削除
  1. 10 3
      compiler/aasmcnst.pas

+ 10 - 3
compiler/aasmcnst.pas

@@ -534,6 +534,7 @@ implementation
    function ttai_lowleveltypedconstbuilder.emit_string_const_common(list: TAsmList; stringtype: tstringtype; len: asizeint; encoding: tstringencoding; out startlab: tasmlabel): tasmlabofs;
    function ttai_lowleveltypedconstbuilder.emit_string_const_common(list: TAsmList; stringtype: tstringtype; len: asizeint; encoding: tstringencoding; out startlab: tasmlabel): tasmlabofs;
      var
      var
        string_symofs: asizeint;
        string_symofs: asizeint;
+       charptrdef: tdef;
        elesize: word;
        elesize: word;
      begin
      begin
        current_asmdata.getdatalabel(result.lab);
        current_asmdata.getdatalabel(result.lab);
@@ -547,9 +548,15 @@ implementation
        { element size }
        { element size }
        case stringtype of
        case stringtype of
          st_ansistring:
          st_ansistring:
-           elesize:=1;
+           begin
+             elesize:=1;
+             charptrdef:=charpointertype;
+           end;
          st_unicodestring:
          st_unicodestring:
-           elesize:=2;
+           begin
+             elesize:=2;
+             charptrdef:=widecharpointertype;
+           end
          else
          else
            internalerror(2014080401);
            internalerror(2014080401);
        end;
        end;
@@ -567,7 +574,7 @@ implementation
        if string_symofs=0 then
        if string_symofs=0 then
          begin
          begin
            { results in slightly more efficient code }
            { results in slightly more efficient code }
-           list.concat(tai_label.create(result.lab));
+           emit_tai(tai_label.create(result.lab),charptrdef);
            result.ofs:=0;
            result.ofs:=0;
            current_asmdata.getdatalabel(startlab);
            current_asmdata.getdatalabel(startlab);
          end;
          end;