Browse Source

* fixed (harmless) typecast errors when creating a string representation of
a procvardef
* handle procdefs like procvardefs when getting their string representation
in arbitrary expressions

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

Jonas Maebe 11 years ago
parent
commit
a0c39220b1
1 changed files with 5 additions and 8 deletions
  1. 5 8
      compiler/llvm/llvmdef.pas

+ 5 - 8
compiler/llvm/llvmdef.pas

@@ -369,18 +369,20 @@ implementation
                   encodedstr:=encodedstr+']';
                   encodedstr:=encodedstr+']';
                 end;
                 end;
             end;
             end;
+          procdef,
           procvardef :
           procvardef :
             begin
             begin
-              if tprocvardef(def).is_addressonly then
+              if (def.typ=procdef) or
+                 tprocvardef(def).is_addressonly then
                 begin
                 begin
-                  llvmaddencodedproctype(tprocdef(def),'',lpd_procvar,encodedstr);
+                  llvmaddencodedproctype(tabstractprocdef(def),'',lpd_procvar,encodedstr);
                   encodedstr:=encodedstr+'*';
                   encodedstr:=encodedstr+'*';
                 end
                 end
               else
               else
                 begin
                 begin
                   encodedstr:=encodedstr+'{';
                   encodedstr:=encodedstr+'{';
                   { code pointer }
                   { code pointer }
-                  llvmaddencodedproctype(tprocvardef(def),'',lpd_procvar,encodedstr);
+                  llvmaddencodedproctype(tabstractprocdef(def),'',lpd_procvar,encodedstr);
                   { data pointer (maybe todo: generate actual layout if
                   { data pointer (maybe todo: generate actual layout if
                     available) }
                     available) }
                   encodedstr:=encodedstr+'*, i8*}';
                   encodedstr:=encodedstr+'*, i8*}';
@@ -415,11 +417,6 @@ implementation
           undefineddef,
           undefineddef,
           errordef :
           errordef :
             internalerror(2013100604);
             internalerror(2013100604);
-          procdef :
-            begin
-              { should be handled via llvmencodeproctype/llvmaddencodedproctype }
-              internalerror(2014012601);
-            end;
         else
         else
           internalerror(2013100603);
           internalerror(2013100603);
         end;
         end;