ソースを参照

* fixed spilling_get_operation_type and spilling_get_reg_type for
la_call and la_invoke (operand 1 is the destination register
since r30776)

git-svn-id: trunk@32415 -

Jonas Maebe 9 年 前
コミット
fed94f56c8
1 ファイル変更11 行追加4 行削除
  1. 11 4
      compiler/llvm/aasmllvm.pas

+ 11 - 4
compiler/llvm/aasmllvm.pas

@@ -433,7 +433,7 @@ uses
       begin
         case llvmopcode of
           la_ret, la_br, la_switch, la_indirectbr,
-          la_invoke, la_resume,
+          la_resume,
           la_unreachable,
           la_store,
           la_fence,
@@ -456,7 +456,7 @@ uses
           la_getelementptr,
           la_load,
           la_icmp, la_fcmp,
-          la_phi, la_select, la_call,
+          la_phi, la_select,
           la_va_arg, la_landingpad:
             begin
               if opnr=0 then
@@ -464,6 +464,13 @@ uses
               else
                 result:=operand_read;
             end;
+          la_invoke, la_call:
+            begin
+              if opnr=1 then
+                result:=operand_write
+              else
+                result:=operand_read;
+            end;
           la_blockaddress:
             case opnr of
               0: result:=operand_write
@@ -503,8 +510,8 @@ uses
             end;
           la_invoke, la_call:
             begin
-              if opnr=0 then
-                result:=oper[1]^.def
+              if opnr=1 then
+                result:=oper[2]^.def
               else
                 internalerror(2013110102);
             end;