diff --git a/compiler/aasmtai.pas b/compiler/aasmtai.pas index 674e20e174..c4fb17af95 100644 --- a/compiler/aasmtai.pas +++ b/compiler/aasmtai.pas @@ -259,6 +259,7 @@ interface ,top_fpcond ,top_cond ,top_para + ,top_asmlist {$endif llvm} ); @@ -449,6 +450,7 @@ interface top_cond : (cond: topcmp); top_fpcond : (fpcond: tllvmfpcmp); top_para : (paras: tfplist); + top_asmlist : (asmlist: tasmlist); {$endif llvm} end; poper=^toper; diff --git a/compiler/llvm/aasmllvm.pas b/compiler/llvm/aasmllvm.pas index 9c604c3e65..3576342a52 100644 --- a/compiler/llvm/aasmllvm.pas +++ b/compiler/llvm/aasmllvm.pas @@ -124,6 +124,7 @@ interface procedure loadcond(opidx: longint; _cond: topcmp); procedure loadfpcond(opidx: longint; _fpcond: tllvmfpcmp); procedure loadparas(opidx: longint; _paras: tfplist); + procedure loadasmlist(opidx: longint; _asmlist: tasmlist); { register spilling code } function spilling_get_operation_type(opnr: longint): topertype;override; @@ -320,6 +321,8 @@ uses end; top_tai: oper[opidx]^.ai.free; + top_asmlist: + oper[opidx]^.asmlist.free; end; inherited; end; @@ -446,6 +449,18 @@ uses end; + procedure taillvm.loadasmlist(opidx: longint; _asmlist: tasmlist); + begin + allocate_oper(opidx+1); + with oper[opidx]^ do + begin + clearop(opidx); + asmlist:=_asmlist; + typ:=top_asmlist; + end; + end; + + function taillvm.spilling_get_operation_type(opnr: longint): topertype; begin case llvmopcode of