From d2873e433e00458c401961029b24e2bcf7974380 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Sun, 13 Nov 2016 16:06:23 +0000 Subject: [PATCH] + top_asmlist operand type for LLVM inline assembly "call" instructions git-svn-id: trunk@34889 - --- compiler/aasmtai.pas | 2 ++ compiler/llvm/aasmllvm.pas | 15 +++++++++++++++ 2 files changed, 17 insertions(+) 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