Browse Source

+ added wasm32-specific flag tai_label.is_pascal_goto_target

Nikolay Nikolov 2 years ago
parent
commit
da2649fade
2 changed files with 14 additions and 0 deletions
  1. 3 0
      compiler/aasmtai.pas
  2. 11 0
      compiler/wasm32/cgcpu.pas

+ 3 - 0
compiler/aasmtai.pas

@@ -656,6 +656,9 @@ interface
             pc relative offsets are allowed }
           inserted  : boolean;
 {$endif arm}
+{$ifdef wasm32}
+          is_pascal_goto_target: boolean;
+{$endif wasm32}
           constructor Create(_labsym : tasmlabel);
           constructor ppuload(t:taitype;ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;

+ 11 - 0
compiler/wasm32/cgcpu.pas

@@ -42,6 +42,7 @@ interface
         function  getfpuregister(list:TAsmList;size:Tcgsize):Tregister;override;
         function  getaddressregister(list:TAsmList):Tregister;override;
         procedure do_register_allocation(list:TAsmList;headertai:tai);override;
+        procedure a_label_pascal_goto_target(list : TAsmList;l : tasmlabel);override;
       end;
 
     procedure create_codegen;
@@ -121,6 +122,16 @@ implementation
       end;
 
 
+    procedure tcgwasm.a_label_pascal_goto_target(list : TAsmList;l : tasmlabel);
+      var
+        lbl: tai_label;
+      begin
+        lbl:=tai_label.create(l);
+        lbl.is_pascal_goto_target:=true;
+        list.concat(lbl);
+      end;
+
+
     procedure create_codegen;
       begin
         cg:=tcgwasm.Create;