Prechádzať zdrojové kódy

* some 64 bit adaptions in ncgadd
* x86-64 now uses ncgadd
* tparamanager.ret_in_acc doesn't return true anymore for a void-def

florian 22 rokov pred
rodič
commit
72df326165

+ 13 - 2
compiler/ncgadd.pas

@@ -66,7 +66,13 @@ interface
       aasmbase,aasmtai,aasmcpu,defutil,htypechk,
       cgbase,cpuinfo,pass_1,pass_2,regvars,
       cpupara,
-      ncon,nset,ncgutil,tgobj,rgobj,rgcpu,cgobj,cg64f32;
+      ncon,nset,ncgutil,tgobj,rgobj,rgcpu,cgobj,
+{$ifdef cpu64bit}
+      cg64f64
+{$else cpu64bit}
+      cg64f32
+{$endif cpu64bit}
+      ;
 
 
 
@@ -816,7 +822,12 @@ begin
 end.
 {
   $Log$
-  Revision 1.8  2003-04-23 20:16:04  peter
+  Revision 1.9  2003-04-30 22:15:59  florian
+    * some 64 bit adaptions in ncgadd
+    * x86-64 now uses ncgadd
+    * tparamanager.ret_in_acc doesn't return true anymore for a void-def
+
+  Revision 1.8  2003/04/23 20:16:04  peter
     + added currency support based on int64
     + is_64bit for use in cg units instead of is_64bitint
     * removed cgmessage from n386add, replace with internalerrors

+ 8 - 2
compiler/paramgr.pas

@@ -118,7 +118,8 @@ unit paramgr;
     { true if the return value is in accumulator (EAX for i386), D0 for 68k }
     function tparamanager.ret_in_acc(def : tdef;calloption : tproccalloption) : boolean;
       begin
-         ret_in_acc:=(def.deftype in [orddef,pointerdef,enumdef,classrefdef]) or
+         ret_in_acc:=(def.deftype in [pointerdef,enumdef,classrefdef]) or
+                     ((def.deftype=orddef) and (torddef(def).typ<>uvoid)) or
                      ((def.deftype=stringdef) and (tstringdef(def).string_typ in [st_ansistring,st_widestring])) or
                      ((def.deftype=procvardef) and not(po_methodpointer in tprocvardef(def).procoptions)) or
                      ((def.deftype=objectdef) and not is_object(def)) or
@@ -402,7 +403,12 @@ end.
 
 {
    $Log$
-   Revision 1.36  2003-04-27 11:21:33  peter
+   Revision 1.37  2003-04-30 22:15:59  florian
+     * some 64 bit adaptions in ncgadd
+     * x86-64 now uses ncgadd
+     * tparamanager.ret_in_acc doesn't return true anymore for a void-def
+
+   Revision 1.36  2003/04/27 11:21:33  peter
      * aktprocdef renamed to current_procdef
      * procinfo renamed to current_procinfo
      * procinfo will now be stored in current_module so it can be

+ 7 - 2
compiler/pstatmnt.pas

@@ -720,7 +720,7 @@ implementation
       begin
          Inside_asm_statement:=true;
          case aktasmmode of
-           asmmode_none : ; { just be there to allow to a compile without
+           asmmode_none : ; { just be there to allow to compile a compiler without
                               any assembler readers }
 {$ifdef i386}
   {$ifndef NoRA386Att}
@@ -1131,7 +1131,12 @@ implementation
 end.
 {
   $Log$
-  Revision 1.94  2003-04-27 11:21:34  peter
+  Revision 1.95  2003-04-30 22:15:59  florian
+    * some 64 bit adaptions in ncgadd
+    * x86-64 now uses ncgadd
+    * tparamanager.ret_in_acc doesn't return true anymore for a void-def
+
+  Revision 1.94  2003/04/27 11:21:34  peter
     * aktprocdef renamed to current_procdef
     * procinfo renamed to current_procinfo
     * procinfo will now be stored in current_module so it can be

+ 8 - 2
compiler/x86_64/cpunode.pas

@@ -39,7 +39,8 @@ unit cpunode;
        ncgcon,
        ncgld,
        ncgcal,
-       // n386add,n386con,n386flw,n386mat,n386mem,
+       ncgadd,
+       // n386con,n386flw,n386mat,n386mem,
        // n386set,n386inl,n386opt,
        { this not really a node }
        // n386obj
@@ -51,7 +52,12 @@ unit cpunode;
 end.
 {
   $Log$
-  Revision 1.3  2003-04-30 20:53:32  florian
+  Revision 1.4  2003-04-30 22:15:59  florian
+    * some 64 bit adaptions in ncgadd
+    * x86-64 now uses ncgadd
+    * tparamanager.ret_in_acc doesn't return true anymore for a void-def
+
+  Revision 1.3  2003/04/30 20:53:32  florian
     * error when address of an abstract method is taken
     * fixed some x86-64 problems
     * merged some more x86-64 and i386 code