Commit Graph

244 Commits

Author SHA1 Message Date
peter
5b242f7741 * tlocation,treference update
* LOC_CONSTANT added for better constant handling
  * secondadd splitted in multiple routines
  * location_force_reg added for loading a location to a register
    of a specified size
  * secondassignment parses now first the right and then the left node
    (this is compatible with Kylix). This saves a lot of push/pop especially
    with string operations
  * adapted some routines to use the new cg methods
2002-04-02 17:11:27 +00:00
carl
47a81e6215 * avoid crash with procinfo ('merged') 2002-03-30 23:12:09 +00:00
Jonas Maebe
92977ca6ee * fixed fpuregister counting errors ("merged") 2001-12-27 15:33:58 +00:00
peter
17d6dded66 * interface 2 guid support
* guid constants support
2001-10-20 19:28:37 +00:00
Jonas Maebe
8a2c142e46 * fixed internalerror(10) due to previous fpu overflow fixes ("merged")
* fixed bug in n386add (introduced after compilerproc changes for string
    operations) where calcregisters wasn't called for shortstring addnodes
  * NOTE: from now on, the location of a binary node must now always be set
     before you call calcregisters() for it
2001-10-12 13:51:51 +00:00
Jonas Maebe
a39cd8a580 * made multiplying, dividing and mod'ing of int64 and qword processor
independent with compilerprocs (+ small optimizations by using shift/and
    where possible)
2001-09-05 15:22:09 +00:00
Jonas Maebe
ed449defca + searchsystype() and searchsystype() functions in symtable
* changed ninl and nadd to use these functions
  * i386 set comparison functions now return their results in al instead
    of in the flags so that they can be sued as compilerprocs
  - removed all processor specific code from n386add.pas that has to do
    with set handling, it's now all done in nadd.pas
  * fixed fpc_set_contains_sets in genset.inc
  * fpc_set_in_byte is now coded inline in n386set.pas and doesn't use a
    helper anymore
  * some small fixes in compproc.inc/set.inc regarding the declaration of
    internal helper types (fpc_small_set and fpc_normal_set)
2001-09-04 11:38:54 +00:00
Jonas Maebe
f256a47f04 * compilerproc implementation of set addition/substraction/...
* changed the declaration of some set helpers somewhat to accomodate the
    above change
  * i386 still uses the old code for comparisons of sets, because its
    helpers return the results in the flags
  * dummy tc_normal_2_small_set type conversion because I need the original
    resulttype of the set add nodes
  NOTE: you have to start a cycle with 1.0.5!
2001-09-03 13:27:41 +00:00
peter
43dea5a35f * move class of definitions into type section for delphi 2001-09-02 21:12:06 +00:00
Jonas Maebe
3d6f18bfa2 * added missing type conversion from small to normal sets 2001-08-31 15:42:15 +00:00
Jonas Maebe
41a57028b9 * converted adding/comparing of strings to compileproc. Note that due
to the way the shortstring helpers for i386 are written, they are
    still handled by the old code (reason: fpc_shortstr_compare returns
    results in the flags instead of in eax and fpc_shortstr_concat
    has wierd parameter conventions). The compilerproc stuff should work
    fine with the generic implementations though.
  * removed some nested comments warnings
2001-08-30 15:43:14 +00:00
florian
9746f4c2d6 * some cg reorganisation
* some PPC updates
2001-08-26 13:35:06 +00:00
peter
81200dc9ef * funcret moved from tprocinfo to tprocdef 2001-08-06 21:40:46 +00:00
peter
ca8d604964 * various widestring updates, it works now mostly without charset
mapping supported
2001-07-08 21:00:14 +00:00
peter
805b1e2eff * readded generic conversion to s32bit that i removed yesterday. It
is still used for error recovery, added a small note about that
2001-06-04 21:41:26 +00:00
peter
9b6f1bdb64 * Support kylix hack of having enum+integer in a enum declaration. 2001-06-04 18:13:53 +00:00
florian
fb40dcd0bb + some widestring stuff added 2001-05-27 14:30:55 +00:00
peter
002118ddf4 * first check for overloaded operator before doing inserting any
typeconvs
2001-05-19 21:11:50 +00:00
peter
bcbace78d2 * check set types when doing constant set evaluation 2001-05-19 12:53:52 +00:00
peter
a7cf57524e * symtable change to classes
* range check generation and errors fixed, make cycle DEBUG=1 works
  * memory leaks fixed
2001-04-13 01:22:06 +00:00
peter
759f678192 * move constant folding into det_resulttype 2001-04-04 22:42:39 +00:00
peter
4e2655cdc5 * resulttype rewrite 2001-04-02 21:20:29 +00:00
Jonas Maebe
18d885b80e * fixed web bug #1377 & const pointer arithmtic 2001-02-04 11:12:16 +00:00
peter
96be9e9392 * constant calculation fixed. The type of the new constant is now
defined after the calculation is done. This should remove a lot
    of wrong warnings (and errors with -Cr).
2001-01-14 22:13:13 +00:00
Jonas Maebe
4c8ca9774f + implemented/fixed docompare() mathods for all nodes (not tested)
+ nopt.pas, nadd.pas, i386/n386opt.pas: optimized nodes for adding strings
    and constant strings/chars together
  * n386add.pas: don't copy temp strings (of size 256) to another temp string
    when adding
2000-12-31 11:14:10 +00:00
Jonas Maebe
e9544a1eb9 + warning when there is a chance to get a range check error because of
automatic type conversion to u32bit
  * arithmetic operations with a cardinal and a signed operand are carried
    out in 64bit when range checking is on ("merged" from fixes branch)
2000-12-16 15:55:32 +00:00
florian
b9796f6a7f * unused units removed from uses clause
* some changes for widestrings
2000-11-29 00:30:30 +00:00
Jonas Maebe
cab4cdb15d * changed types of values used for constant expression evaluation to
tconstexprint
2000-11-20 15:30:42 +00:00
florian
5694e05857 * some bugs with interfaces and NIL fixed 2000-11-13 11:30:54 +00:00
florian
51527ba1c9 + merged Attila's changes for interfaces, not tested yet 2000-11-04 14:25:19 +00:00
peter
451723647e * symtable splitted, no real code changes 2000-10-31 22:02:46 +00:00
peter
e171f341a0 * moehrendorf oct 2000 rewrite 2000-10-14 10:14:45 +00:00
peter
38951f5ce1 * lot of compile updates for cg11 2000-10-01 19:48:23 +00:00
peter
27749c067e * more cg11 updates 2000-09-30 16:08:45 +00:00
florian
57a566e53d *** empty log message *** 2000-09-28 19:49:51 +00:00
florian
a30886fbf6 * finally nadd.pas compiles 2000-09-27 21:33:22 +00:00
florian
5a855db55d * more stuff fixed 2000-09-27 20:25:44 +00:00
florian
c284d15e57 * fixed a lot of syntax errors in the n*.pas stuff 2000-09-27 18:14:31 +00:00
peter
a71e44ac49 * use defines.inc 2000-09-24 15:06:10 +00:00
florian
68ceefdb2a * more fixes 2000-09-22 22:42:52 +00:00
Jonas Maebe
48787ae200 * put piece of code between -dnewoptimizations2 since it wasn't
necessary otherwise
  + support for full boolean evaluation (from tcadd)
2000-09-21 12:22:42 +00:00
florian
c537853371 * updated 2000-09-20 21:50:59 +00:00
Jonas Maebe
858bff5bda * some modifications to -dcardinalmulfix code 2000-08-29 08:24:45 +00:00
florian
8e1a4890a1 * initial release 2000-08-26 12:24:20 +00:00