* some stuff of Pavel implement (win32 dll creation)

* bug with ansistring function results fixed
This commit is contained in:
florian 1998-11-15 16:32:33 +00:00
parent 0c69eaf999
commit 3bb3dc34ff
2 changed files with 84 additions and 63 deletions

View File

@ -674,7 +674,7 @@ implementation
var var
unusedregisters : tregisterset; unusedregisters : tregisterset;
pushed : tpushed; pushed : tpushed;
funcretref : treference; hr,funcretref : treference;
hregister : tregister; hregister : tregister;
oldpushedparasize : longint; oldpushedparasize : longint;
{ true if ESI must be loaded again after the subroutine } { true if ESI must be loaded again after the subroutine }
@ -1319,7 +1319,7 @@ implementation
p^.location.register:=hregister; p^.location.register:=hregister;
end; end;
end; end;
uchar,u8bit,bool8bit,s8bit : uchar,u8bit,bool8bit,s8bit:
begin begin
{$ifdef test_dest_loc} {$ifdef test_dest_loc}
if dest_loc_known and (dest_loc_tree=p) then if dest_loc_known and (dest_loc_tree=p) then
@ -1351,7 +1351,8 @@ implementation
end end
else if (p^.resulttype^.deftype=floatdef) then else if (p^.resulttype^.deftype=floatdef) then
case pfloatdef(p^.resulttype)^.typ of case pfloatdef(p^.resulttype)^.typ of
f32bit : begin f32bit:
begin
p^.location.loc:=LOC_REGISTER; p^.location.loc:=LOC_REGISTER;
{$ifdef test_dest_loc} {$ifdef test_dest_loc}
if dest_loc_known and (dest_loc_tree=p) then if dest_loc_known and (dest_loc_tree=p) then
@ -1379,6 +1380,14 @@ implementation
hregister:=getexplicitregister32(R_EAX); hregister:=getexplicitregister32(R_EAX);
emit_reg_reg(A_MOV,S_L,R_EAX,hregister); emit_reg_reg(A_MOV,S_L,R_EAX,hregister);
p^.location.register:=hregister; p^.location.register:=hregister;
if is_ansistring(p^.resulttype) or
is_widestring(p^.resulttype) then
begin
gettempofsizereference(4,hr);
temptoremove^.concat(new(ptemptodestroy,init(hr,p^.resulttype)));
exprasmlist^.concat(new(pai386,op_reg_ref(A_MOV,S_L,p^.location.register,
newreference(hr))));
end;
end; end;
end; end;
end; end;
@ -1543,7 +1552,11 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.42 1998-11-13 15:40:13 pierre Revision 1.43 1998-11-15 16:32:33 florian
* some stuff of Pavel implement (win32 dll creation)
* bug with ansistring function results fixed
Revision 1.42 1998/11/13 15:40:13 pierre
+ added -Se in Makefile cvstest target + added -Se in Makefile cvstest target
+ lexlevel cleanup + lexlevel cleanup
normal_function_level main_program_level and unit_init_level defined normal_function_level main_program_level and unit_init_level defined

View File

@ -614,6 +614,10 @@ unit files;
if AllowOutput and (OutputFile<>'') then if AllowOutput and (OutputFile<>'') then
n:=OutputFile; n:=OutputFile;
staticlibfilename:=stringdup(p+target_os.libprefix+n+target_os.staticlibext); staticlibfilename:=stringdup(p+target_os.libprefix+n+target_os.staticlibext);
if target_info.target=target_i386_WIN32 then
sharedlibfilename:=stringdup(p+n+target_os.sharedlibext)
else
sharedlibfilename:=stringdup(p+target_os.libprefix+n+target_os.sharedlibext); sharedlibfilename:=stringdup(p+target_os.libprefix+n+target_os.sharedlibext);
{ output dir of exe can be specified separatly } { output dir of exe can be specified separatly }
if AllowOutput and (OutputExeDir<>'') then if AllowOutput and (OutputExeDir<>'') then
@ -1032,7 +1036,11 @@ unit files;
end. end.
{ {
$Log$ $Log$
Revision 1.71 1998-11-06 09:45:40 pierre Revision 1.72 1998-11-15 16:32:35 florian
* some stuff of Pavel implement (win32 dll creation)
* bug with ansistring function results fixed
Revision 1.71 1998/11/06 09:45:40 pierre
* bug on errors (file used after dispose !) fixed * bug on errors (file used after dispose !) fixed
Revision 1.70 1998/11/03 11:33:14 peter Revision 1.70 1998/11/03 11:33:14 peter