mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 05:08:06 +02:00
* strip block instructions
This commit is contained in:
parent
ce742b5b4d
commit
d50ef3381f
@ -42,6 +42,7 @@ interface
|
||||
function ConvertBranchTargetNumbersToLabels(ai: tai; blockstack: twasmstruc_stack): TAsmMapFuncResult;
|
||||
function ConvertIfToBrIf(ai: tai; blockstack: twasmstruc_stack): TAsmMapFuncResult;
|
||||
function ConvertLoopToBr(ai: tai; blockstack: twasmstruc_stack): TAsmMapFuncResult;
|
||||
function StripBlockInstructions(ai: tai; blockstack: twasmstruc_stack): TAsmMapFuncResult;
|
||||
|
||||
{ used for allocating locals during the postprocess_code stage (i.e. after register allocation) }
|
||||
function AllocWasmLocal(wbt: TWasmBasicType): Integer;
|
||||
@ -401,6 +402,18 @@ implementation
|
||||
end;
|
||||
end;
|
||||
|
||||
function tcpuprocinfo.StripBlockInstructions(ai: tai; blockstack: twasmstruc_stack): TAsmMapFuncResult;
|
||||
var
|
||||
instr: taicpu;
|
||||
begin
|
||||
result.typ:=amfrtNoChange;
|
||||
if ai.typ<>ait_instruction then
|
||||
exit;
|
||||
instr:=taicpu(ai);
|
||||
if instr.opcode in [a_block,a_end_block] then
|
||||
result.typ:=amfrtDeleteAi;
|
||||
end;
|
||||
|
||||
function tcpuprocinfo.AllocWasmLocal(wbt: TWasmBasicType): Integer;
|
||||
begin
|
||||
SetLength(FAllocatedLocals,Length(FAllocatedLocals)+1);
|
||||
@ -674,6 +687,8 @@ implementation
|
||||
wasm_convert_to_flat_asmlist(asmlist,l2);
|
||||
asmlist.Free;
|
||||
asmlist:=l2;
|
||||
|
||||
map_structured_asmlist(asmlist,@StripBlockInstructions);
|
||||
end;
|
||||
|
||||
function prepare_locals: TAsmList;
|
||||
|
Loading…
Reference in New Issue
Block a user