소스 검색

LLVM: factor out writing operands in agllvm

Jonas Maebe 3 년 전
부모
커밋
4293d4455c
1개의 변경된 파일12개의 추가작업 그리고 8개의 파일을 삭제
  1. 12 8
      compiler/llvm/agllvm.pas

+ 12 - 8
compiler/llvm/agllvm.pas

@@ -99,6 +99,7 @@ interface
 
         function getopcodestr(hp: taillvm): TSymStr;
         function getopstr(const o:toper; refwithalign: boolean) : TSymStr;
+        procedure writetaioper(ai: tai);
         procedure writeparas(const paras: tfplist);
         procedure WriteAsmRegisterAllocationClobbers(list: tasmlist);
       end;
@@ -437,8 +438,6 @@ implementation
    function TLLVMInstrWriter.getopstr(const o:toper; refwithalign: boolean) : TSymStr;
      var
        hp: tai;
-       tmpinline: cardinal;
-       tmpasmblock: boolean;
      begin
        case o.typ of
          top_reg:
@@ -493,12 +492,7 @@ implementation
            begin
              if assigned(o.ai) then
                begin
-                 tmpinline:=1;
-                 tmpasmblock:=false;
-                 hp:=o.ai;
-                 owner.writer.AsmWrite(fstr);
-                 fstr:='';
-                 owner.WriteTai(false,false,false,tmpinline,tmpasmblock,hp);
+                 writetaioper(o.ai);
                end;
              result:='';
            end;
@@ -517,6 +511,16 @@ implementation
        end;
      end;
 
+   procedure TLLVMInstrWriter.writetaioper(ai: tai);
+     var
+       tmpinline: cardinal;
+       tmpasmblock: boolean;
+     begin
+       tmpinline:=1;
+       tmpasmblock:=false;
+       owner.WriteTai(false,false,false,tmpinline,tmpasmblock,ai);
+     end;
+
 
    procedure TLLVMInstrWriter.WriteAsmRegisterAllocationClobbers(list: tasmlist);
      var