From 917a1eb0f2f8557bbdb9f820a0cc270ca5365a81 Mon Sep 17 00:00:00 2001 From: nickysn Date: Sat, 30 Mar 2013 12:08:24 +0000 Subject: [PATCH] * the default Seg() handling moved to virtual methods, so that they can be overriden in the i8086 code generator git-svn-id: branches/i8086@24070 - --- compiler/ninl.pas | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/compiler/ninl.pas b/compiler/ninl.pas index c1d05d7943..f2a4186843 100644 --- a/compiler/ninl.pas +++ b/compiler/ninl.pas @@ -79,6 +79,9 @@ interface function first_assigned: tnode; virtual; function first_assert: tnode; virtual; function first_popcnt: tnode; virtual; + { override these for Seg() support } + function typecheck_seg: tnode; virtual; + function first_seg: tnode; virtual; private function handle_str: tnode; @@ -2805,10 +2808,7 @@ implementation in_seg_x : begin - if target_info.system in systems_managed_vm then - message(parser_e_feature_unsupported_for_vm); - set_varstate(left,vs_read,[]); - result:=cordconstnode.create(0,s32inttype,false); + result := typecheck_seg; end; in_pred_x, @@ -3571,7 +3571,9 @@ implementation internalerror(2000101001); in_seg_x : - internalerror(200104046); + begin + result:=first_seg; + end; in_settextbuf_file_x, in_reset_typedfile, @@ -3996,6 +3998,21 @@ implementation end; + function tinlinenode.typecheck_seg: tnode; + begin + if target_info.system in systems_managed_vm then + message(parser_e_feature_unsupported_for_vm); + set_varstate(left,vs_read,[]); + result:=cordconstnode.create(0,s32inttype,false); + end; + + + function tinlinenode.first_seg: tnode; + begin + internalerror(200104046); + end; + + function tinlinenode.handle_box: tnode; begin result:=nil;