Explorar o código

+ support for tai_string (in nested typed constant expressions)

git-svn-id: branches/hlcgllvm@28121 -
Jonas Maebe %!s(int64=11) %!d(string=hai) anos
pai
achega
f89b2e2b26
Modificáronse 1 ficheiros con 20 adicións e 2 borrados
  1. 20 2
      compiler/llvm/agllvm.pas

+ 20 - 2
compiler/llvm/agllvm.pas

@@ -738,6 +738,8 @@ implementation
       var
         hp2: tai;
         s: string;
+        i: longint;
+        ch: ansichar;
       begin
         case hp.typ of
           ait_comment :
@@ -803,8 +805,24 @@ implementation
 
           ait_string :
             begin
-              AsmWrite(target_asm.comment);
-              AsmWriteln('string');
+              if fdecllevel=0 then
+                AsmWrite(target_asm.comment);
+              AsmWrite('c"');
+              for i:=1 to tai_string(hp).len do
+               begin
+                 ch:=tai_string(hp).str[i-1];
+                 case ch of
+                           #0, {This can't be done by range, because a bug in FPC}
+                      #1..#31,
+                   #128..#255,
+                          '"',
+                          '\' : s:='\'+tostr(ord(ch) shr 8)+tostr((ord(ch) and $f));
+                 else
+                   s:=ch;
+                 end;
+                 AsmWrite(s);
+               end;
+              AsmWriteLn('"');
             end;
 
           ait_label :