Commit Graph

3253 Commits

Author SHA1 Message Date
pierre
319ddd55cb * stabs fixing 2000-11-28 00:28:06 +00:00
pierre
631a4cd660 + use int64tostr function for integer consts 2000-11-28 00:25:17 +00:00
pierre
9353c89710 + int64tostr function added 2000-11-28 00:17:43 +00:00
Jonas Maebe
587d9bb7cf * fix for web bug #1251 (example 1) 2000-11-27 15:47:19 +00:00
florian
6cacd92aff * pascal modifier in interfaces of units works now 2000-11-26 23:45:34 +00:00
florian
ea7ed6fd3b * fixed rtti for chars 2000-11-26 18:09:40 +00:00
Jonas Maebe
a4928640fc * fixed stupid bug in previous commit 2000-11-23 14:20:18 +00:00
Jonas Maebe
f88e80bced * fix for webbug 1066/1126 2000-11-23 13:26:33 +00:00
peter
e6d423e466 * fixed crash with exception without sysutils (merged) 2000-11-22 22:43:34 +00:00
Jonas Maebe
3009d5e82b * fixed bug where "imul mem32,reg,reg" could be generated 2000-11-22 16:30:04 +00:00
Jonas Maebe
cc5b2c5709 * fixed inline-related problems (partially "merges") 2000-11-22 15:12:06 +00:00
Jonas Maebe
8075e46f5d + allow evaluation of 64bit constant expressions at compile time
* disable range checking for explicit typecasts of constant expressions
2000-11-20 16:06:04 +00:00
Jonas Maebe
5d4f432257 * testrange now always cuts a constant to the size of the destination
if a rangeerror occurred
  * changed an "and $ffffffff" to "and (int64($fffffff) shl 4 + $f" to
    work around the constant evaluation problem we currently have
2000-11-20 15:52:47 +00:00
Jonas Maebe
71790cc1c8 * longint typecast to assignment of constant to offset field 2000-11-20 15:31:38 +00:00
Jonas Maebe
cab4cdb15d * changed types of values used for constant expression evaluation to
tconstexprint
2000-11-20 15:30:42 +00:00
Jonas Maebe
5ffc4f7e24 * fixed bug in my changes to fix the regalloc info for div/mod ("merged") 2000-11-20 14:05:50 +00:00
pierre
2744630527 * missing end. added 2000-11-20 13:58:19 +00:00
florian
ad8ccd0c0e *** empty log message *** 2000-11-19 16:23:06 +00:00
peter
f30cf6328f * really working now 2000-11-18 14:16:39 +00:00
peter
f82559d7e4 * added fpc executable and merged multi cpu additions 2000-11-18 14:13:59 +00:00
florian
5a0f5db75c * properties can now be used in interfaces 2000-11-17 17:32:58 +00:00
Jonas Maebe
bbd2e6cdaf * fixed another bug in allocregbetween (introduced by the previous fix)
("merged")
2000-11-17 15:22:04 +00:00
Jonas Maebe
95351bb8f7 * fixed webbug 1222 ("merged") 2000-11-17 14:09:00 +00:00
florian
881fe6d416 * passing interfaces as parameters fixed 2000-11-17 10:30:24 +00:00
florian
61c74729a6 * INT_CHECK_OBJECT_* isn't applied to interfaces anymore 2000-11-17 09:54:58 +00:00
florian
e24f3f300e *** empty log message *** 2000-11-17 08:20:19 +00:00
Jonas Maebe
03005b8b6b * fixed web bug #1242 2000-11-16 15:27:48 +00:00
florian
a257f878db * merge change from 1.1.2.6 to 1.1.2.7 2000-11-14 23:49:29 +00:00
florian
523fa60d9e * fixed 1238 2000-11-14 23:43:37 +00:00
Jonas Maebe
19b4130e98 * fixed bug in allocregbetween 2000-11-14 13:26:10 +00:00
Jonas Maebe
a86df1002b * fixed some bugs in checksequence 2000-11-14 12:17:34 +00:00
Jonas Maebe
1cf903a9eb * added missing allocregbetween() (merged) 2000-11-14 09:53:18 +00:00
peter
4f6dbdff2b * removed some virtual from methods
* sectionsize method implemented (fixes lineinfo stabs)
2000-11-13 21:56:07 +00:00
peter
a9c4c8d407 * better localopt usage 2000-11-13 21:55:08 +00:00
marco
5a2b1ed57b * Renamefest 2000-11-13 15:43:07 +00:00
marco
b65958a61e * Renamefest 2000-11-13 15:26:12 +00:00
Jonas Maebe
75ad22bf64 * support for range checking when converting from 64bit to something
smaller (32bit, 16bit, 8bit)
  * fixed range checking between longint/cardinal and for array indexing
    with cardinal (values > $7fffffff were considered negative)
2000-11-13 14:47:46 +00:00
Jonas Maebe
4706eff850 * fixes so no more range errors with improved range checking code 2000-11-13 14:44:35 +00:00
Jonas Maebe
a5f9476ddf * fix in testrange so that 64bit constants are properly truncated when
assigned to 32bit vars
2000-11-13 14:42:41 +00:00
marco
8d5dbb0717 * Also for FreeBSD. Renamefest starting now. 2000-11-13 13:24:00 +00:00
florian
5694e05857 * some bugs with interfaces and NIL fixed 2000-11-13 11:30:54 +00:00
florian
1462deb207 * interfaces are basically running 2000-11-12 23:24:10 +00:00
peter
8f79c2cadd * moved setting of stab hdrsym 2000-11-12 22:45:14 +00:00
peter
b52915a0ca * define Unix for Linux 1.0 compilers 2000-11-12 22:34:01 +00:00
peter
5ac2599649 * create generic toutputsection for binary writers 2000-11-12 22:20:37 +00:00
peter
e0a874dc4f * some realname updates for messages 2000-11-12 22:17:46 +00:00
Jonas Maebe
72f618d322 * also don't do conversion for chars/booleans (hopefully final change :/) 2000-11-12 15:27:22 +00:00
florian
1eea21e93f * fixed resourcestrings, made a stupid mistake yesterday 2000-11-11 22:59:20 +00:00
Jonas Maebe
333c590a00 * don't do inc/dec to add/sub conversion for enums 2000-11-11 21:08:13 +00:00
peter
f39e236aa2 * allow far directive for pointer type declarations 2000-11-11 16:19:11 +00:00
peter
5ad5433930 * ptr returns farpointer 2000-11-11 16:18:35 +00:00
peter
512b1fcc74 * fixed crash with settextbuf,ptr 2000-11-11 16:14:52 +00:00
peter
efcc15cfee * farpointer and normal pointer aren't compatible 2000-11-11 16:13:31 +00:00
peter
3c6d0efadc * add far; to typename for far pointer 2000-11-11 16:12:38 +00:00
peter
4c3b82822f * updated 2000-11-11 16:11:49 +00:00
Jonas Maebe
6b00727480 * optimize converting of 8/16/32 bit constants to 64bit ones 2000-11-11 16:00:10 +00:00
Jonas Maebe
0052fd1eb6 * convert inc/dec to add/sub when range/overflow checking is on 2000-11-11 15:59:07 +00:00
florian
3f707e8676 * resourcestrings doesn't need the helper anymore they
access the table now direct
2000-11-09 18:52:06 +00:00
florian
68c1a1e3e6 * System.TypeInfo fixed
+ System.Finalize implemented
  + some new keywords for interface support added
2000-11-09 17:46:54 +00:00
Jonas Maebe
1331a2e753 * fixed range check error 2000-11-09 12:34:44 +00:00
florian
098dd1b56f * tprocdef.procsym must be set also when a tprocdef is loaded from a PPU 2000-11-08 23:15:17 +00:00
Jonas Maebe
50f0345bb8 * if a procedure uses exceptions (be it implicit or explicit), the
usedregisters are set to all (because FPC_POPADDRSTACK doesn't save
    any registers) ("merged", fixes make cycle woth -Or)
2000-11-08 16:38:24 +00:00
sg
7530393d6f * Fix for containsPointerRef: Loop now runs in the correct range 2000-11-08 16:04:34 +00:00
pierre
e2ec92c20c * fix for new is_class function 2000-11-08 09:27:45 +00:00
florian
fe2e3e0c01 * potential range check error fixed 2000-11-08 00:07:40 +00:00
florian
f89ea69e76 + AfterConstruction and BeforeDestruction impemented 2000-11-07 23:40:48 +00:00
peter
08571bb9a9 * removed ref_count from pinputfile it's not used 2000-11-07 20:48:33 +00:00
peter
57b50bdc14 * use tables for upper/lower 2000-11-07 20:47:35 +00:00
peter
bb410f8182 * fix vmt index for classes 2000-11-07 20:01:57 +00:00
marco
e85fea41f5 * Define UNIX for FreeBSD and Linux. Checked crosscompile thingy. 2000-11-07 15:09:27 +00:00
marco
54897380bd * FreeBSD defines (FreeBSD,Linux,BSD,Unix) Linux defines (Linux,Unix) 2000-11-07 14:25:08 +00:00
florian
9e5ced1416 * fixed init_paras call 2000-11-06 23:49:20 +00:00
peter
ac3c08daca * added copyvaluepara call again 2000-11-06 23:15:01 +00:00
peter
e2fd02814d * uppercase manglednames 2000-11-06 23:13:53 +00:00
florian
11b74e236f * writeln debugger uninstalled ;) 2000-11-06 23:11:38 +00:00
florian
c12bff980d * more fixes 2000-11-06 23:05:52 +00:00
peter
de70cf38b3 * more fixes 2000-11-06 22:30:30 +00:00
peter
fdeb6e0506 * fixed var parameter varstate bug 2000-11-06 21:36:25 +00:00
peter
8df98007d6 * more fixes to get make cycle working 2000-11-06 20:30:54 +00:00
florian
d5a2d64cf5 * fixed two bugs to get make cycle work, but it's not enough 2000-11-06 15:54:15 +00:00
florian
503ae69be0 * fixed upper/lower case problem 2000-11-04 18:03:57 +00:00
florian
1ba347c47d * fixed some problems of previous commit 2000-11-04 17:31:00 +00:00
florian
0cfa0419bd * innr.inc renamed to make compiler compilation easier because the rtl contains
a file of the same name
2000-11-04 16:48:32 +00:00
florian
51527ba1c9 + merged Attila's changes for interfaces, not tested yet 2000-11-04 14:25:19 +00:00
Jonas Maebe
71d94c07f8 * check for nil pointers before calling getcopy 2000-11-04 13:12:14 +00:00
Jonas Maebe
2d72c95c20 - removed check for self = nil in getcopy 2000-11-04 13:10:15 +00:00
Jonas Maebe
54fa8b2d7b * fixed bug in tdynamicarray.align (merged) 2000-11-03 19:41:06 +00:00
Jonas Maebe
767ecef9bb * fixed bug in arrayRefsEq
* object/class fields are now handled the same as local/global vars and
    parameters (ie. a write to a local var can now never destroy a class
    field)
2000-11-03 18:06:26 +00:00
Jonas Maebe
5be6c35518 * some small improvements 2000-11-03 17:53:24 +00:00
pierre
fa52ad0aa2 * get it to compile again 2000-11-02 15:01:22 +00:00
pierre
f6bfcc9cb7 * remove RecOffset code, that created problems 2000-11-02 12:04:10 +00:00
peter
5115083270 * tprocdef.fullprocname added for better casesensitve writing of
procedures
2000-11-01 23:04:37 +00:00
Jonas Maebe
850e8de88b * register contents were not cleared if there was only 1 instruction
between de previous sequence and the current one
2000-11-01 22:53:30 +00:00
peter
4bcd969993 * merged asm result patch part 2 2000-10-31 22:30:13 +00:00
peter
451723647e * symtable splitted, no real code changes 2000-10-31 22:02:46 +00:00
Jonas Maebe
5a593618b2 * merged double deleting of left location when using a temp in
secondwith (merged from fixes branch). This also fixes web bug1194
2000-10-31 14:18:53 +00:00
Jonas Maebe
c3025eb50b + implementation for tasmnode.getcopy 2000-10-27 14:57:16 +00:00
peter
8e4f77b0a5 * fixed crash with call from type decl which is not allowed (merged) 2000-10-26 23:40:54 +00:00
peter
b8a008b31c * regenerated 2000-10-26 23:03:50 +00:00
peter
c10d4a9846 * fixed crash with error in child definition (merged) 2000-10-26 21:54:03 +00:00
Jonas Maebe
05be64d76c * fixed web bug1192 (changed an ungetregister32 to ungetregister)
("merged" from fixes)
2000-10-26 15:53:27 +00:00
Jonas Maebe
bdd82f8c9f * fixed setlength for shortstrings 2000-10-26 14:15:06 +00:00
peter
ba5fd6b9d8 * emitcall -> emitinsertcall for profiling (merged) 2000-10-24 22:23:04 +00:00
peter
299d6098aa * set usedregisters after writing entry and exit code (merged) 2000-10-24 22:21:25 +00:00
Jonas Maebe
207574e923 * allocate registers which hold function result 2000-10-24 12:47:45 +00:00
Jonas Maebe
a4fde73649 + register renaming ("fixes" bug1088)
* changed command line options meanings for optimizer:
      O2 now means peepholopts, CSE and register renaming in 1 pass
      O3 is the same, but repeated until no further optimizations are
        possible or until 5 passes have been done (to avoid endless loops)
  * changed aopt386 so it does this looping
  * added some procedures from csopt386 to the interface because they're
    used by rropt386 as well
  * some changes to csopt386 and daopt386 so that newly added instructions
    by the CSE get optimizer info (they were simply skipped previously),
    this fixes some bugs
2000-10-24 10:40:52 +00:00
michael
e2b535ec80 + Extra patch from peter 2000-10-24 08:54:25 +00:00
pierre
3a5981ae0c * fix for bug #1193 (merged) 2000-10-24 07:20:03 +00:00
florian
d592b8b678 + renamed 2000-10-21 20:25:00 +00:00
florian
f80c24177a * a lot of changes:
- basic dyn. array support
     - basic C++ support
     - some work for interfaces done
     ....
2000-10-21 18:16:11 +00:00
peter
20dae06236 * merged pierres fixes 2000-10-21 14:36:26 +00:00
peter
07ad807864 * added -FE. to put the PPU's in the compiler dir 2000-10-21 14:36:00 +00:00
peter
182552a82b * readd to many remove p. for tcallnode.is_equal() 2000-10-21 14:35:27 +00:00
florian
9773d00897 * -Fui386 added 2000-10-20 22:00:32 +00:00
Jonas Maebe
71d03d5926 * fixed wrong regalloc info for secondmoddiv ("merged", also small
correction made afterwards in fixes branch)
2000-10-19 16:26:52 +00:00
Jonas Maebe
837c2124a6 * fixed bug in allocregbetween (the register wasn't added to the
usedregs set of the last instruction of the chain) ("merged")
2000-10-19 15:59:40 +00:00
Jonas Maebe
a9656de262 * fixed stupid error in previous commit :/ 2000-10-17 15:41:48 +00:00
Jonas Maebe
3394523d13 * fixed allocation of ecx for shl 2000-10-17 15:39:34 +00:00
michael
c4fe9ea482 + New Russian errormsg from Michail Baikov 2000-10-17 10:49:05 +00:00
florian
25d7998a4b * fixed xmm register access 2000-10-15 10:50:46 +00:00
peter
026edfb899 * moved to i386/ 2000-10-15 09:43:29 +00:00
peter
a45e77c4a2 * move also the i386*.inc to i386/ 2000-10-15 09:41:37 +00:00
peter
4286d3e9bb * moved cpu*.pas to i386/
* renamed n386 to common cpunode
2000-10-15 09:39:36 +00:00
peter
5c5d24b641 * moved n386*.pas to i386/ cpu_target dir 2000-10-15 09:33:29 +00:00
peter
a8b982877b * include cpu_target unit dir 2000-10-15 09:32:47 +00:00
peter
12818742d3 * use System for the systemunit instead of target dependent 2000-10-15 09:08:58 +00:00
peter
4bd9325ae6 * more quotes 2000-10-15 09:07:41 +00:00
Jonas Maebe
54ce0b8a7d * added missing getcopy for previous addition 2000-10-15 08:38:46 +00:00
peter
eb3ca9c51d * unit names and procedure names are stored mixed case 2000-10-15 07:47:51 +00:00
peter
4b17f6f0ff * fixed memory leaks 2000-10-14 21:52:54 +00:00
Jonas Maebe
628e37cd95 * merged fix for inc/dec on 64bit types from tcinl 2000-10-14 18:27:53 +00:00
peter
e171f341a0 * moehrendorf oct 2000 rewrite 2000-10-14 10:14:45 +00:00
florian
77f776b7f0 * initial revision 2000-10-10 17:31:56 +00:00
Jonas Maebe
53197cc97f * added missing regallocs for edi in emit_mov_ref_reg64 (merged) 2000-10-10 14:55:28 +00:00
Jonas Maebe
c1e14ef033 * fixed another range check error (merged from fixes branch) 2000-10-09 14:54:27 +00:00
peter
092352b0fd * merged @result fix from Pierre 2000-10-08 10:26:33 +00:00
Jonas Maebe
0b558b038f * fixed inc/dec with a 64bit type (merged from fixes branch) 2000-10-05 14:42:31 +00:00
pierre
42f9aaf68c * object stabs fix (merged) 2000-10-04 23:16:48 +00:00
pierre
f95a082233 * IsExe restored 2000-10-04 14:51:08 +00:00
Jonas Maebe
b96fc49809 * fixed bug regarding removal of "test/or reg,reg": apparently, shr/shl
doesn't set the zero flag according to the contents of the register
    after the shift :( (mergfed from fixes branch)
2000-10-02 13:01:29 +00:00
pierre
33aba92b1d * lineinfo explicit load not needed anymore 2000-10-01 21:15:55 +00:00
peter
93b4bc7d16 * regenerated 2000-10-01 21:05:03 +00:00
peter
0eee33e3f6 * new file 2000-10-01 19:58:40 +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
peter
dc6c26755b * filepos when unit not found (merged) 2000-09-30 16:07:40 +00:00
peter
11fbb1cc6d * prefix fix (merged) 2000-09-30 16:07:20 +00:00
peter
084e294150 * const array of char and pchar length fixed (merged) 2000-09-30 13:23:04 +00:00
peter
5f21bf64b8 * range check fix 2000-09-30 13:13:22 +00:00
Jonas Maebe
b8388b3143 * regvars are now zeroed at the start of their life if they contain an 8
or 16bit var/parameter, because the full 32bits are used if they are
    necessary for a btrl instruction
2000-09-30 13:08:16 +00:00
Jonas Maebe
bec76ee738 * fixed support for -Or with new features of CSE 2000-09-30 13:07:23 +00:00
Jonas Maebe
9e77e31a28 * search much further back for CSE sequences (non-conflicting stores are
now passed)
  * remove more unnecessary loads of registers (especially the self pointer)
2000-09-29 23:14:45 +00:00
Jonas Maebe
ec5edf7be2 + writeToMemDestroysContents() and writeDestroysContents() to support the
new features of the CSE
2000-09-29 23:14:11 +00:00
florian
2a74104ce4 * make cycle fixed 2000-09-29 15:45:23 +00:00
florian
c91779dd2c *** empty log message *** 2000-09-28 20:48:52 +00:00
florian
57a566e53d *** empty log message *** 2000-09-28 19:49:51 +00:00
florian
1cef9ea3b3 *** empty log message *** 2000-09-28 16:34:47 +00:00
Jonas Maebe
828ee99e2d * fixed range errors (merged from fixes branch) 2000-09-28 11:57:03 +00:00
Jonas Maebe
45d4e0202a * fixed dupplicate message numbers (from Pierre's fix in the fixes
branch)
2000-09-28 09:10:47 +00:00
florian
a30886fbf6 * finally nadd.pas compiles 2000-09-27 21:33:22 +00:00
peter
5dc42d12ed * also set initlocalswitches in setcompilemode (merged) 2000-09-27 21:20:56 +00:00
peter
2b01b55217 * regenerated 2000-09-27 21:10:31 +00:00
peter
3aac2ecfb2 * check for dup numbers 2000-09-27 20:59:55 +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
florian
a32e181d77 * hmm, still a lot of work to get things compilable 2000-09-26 20:06:13 +00:00
florian
4d6f20c0d4 * more conversion work done 2000-09-26 14:59:34 +00:00
Jonas Maebe
528c45c517 * writes to register variables and to the self pointer now also count as
memore writes
2000-09-26 11:49:41 +00:00
Jonas Maebe
fa38093530 * initmodeswitches is changed is you change the compiler mode from the
command line (the -S<x> switches didn't work anymore for changing the
    compiler mode) (merged from fixes branch)
2000-09-26 10:50:41 +00:00
florian
df4eb26ed0 * more fixes 2000-09-25 15:37:14 +00:00
florian
7549cdd6cc * some updates 2000-09-25 15:05:25 +00:00
florian
f245ef187f * initial revision 2000-09-25 14:55:05 +00:00
florian
991db24e93 * first revision for testing purpose 2000-09-25 09:58:22 +00:00
Jonas Maebe
ca4a065758 - removed TP conditional code 2000-09-25 09:50:29 +00:00
peter
24fc983597 * message updates merges 2000-09-24 21:33:46 +00:00
peter
5218af7926 * delphi compile fixes 2000-09-24 21:19:48 +00:00
florian
426905c464 * some errors fix to get more stuff compilable 2000-09-24 21:15:34 +00:00
Tomas Hajny
1045eb6419 * OS/2 stack alignment corrected + default stack increased 2000-09-24 21:12:41 +00:00
florian
b880cd3002 * more conversion work done 2000-09-24 20:17:44 +00:00
florian
befc937dc1 * initial implementation 2000-09-24 19:38:39 +00:00
peter
cd3f2c37e0 * fixed typo 2000-09-24 15:12:40 +00:00
peter
5536890e7b * renamed to be 8.3 2000-09-24 15:12:12 +00:00
peter
a71e44ac49 * use defines.inc 2000-09-24 15:06:10 +00:00
peter
0c94c56136 * searching of exe in path also for OS/2
* fixed searching of exe in path.
2000-09-24 10:33:07 +00:00
florian
83d20f9b14 * some fixes 2000-09-22 22:48:54 +00:00
florian
ebd2b038fd + initial revision 2000-09-22 22:46:03 +00:00
florian
68ceefdb2a * more fixes 2000-09-22 22:42:52 +00:00
florian
030fe89a12 * initial revision 2000-09-22 22:24:37 +00:00
florian
8b7be9c5dd * more stuff converted 2000-09-22 22:09:54 +00:00
florian
c9dfdcfbcd * some updates e.g. getcopy added 2000-09-22 21:45:35 +00:00
florian
91da57baf1 + initial revision 2000-09-22 21:44:48 +00:00
Jonas Maebe
9eaa410ca7 * fixed some bugs in the previous improvements: in some cases, esi was
still being replaced before a conditional jump (the code that
    detected conditional jumps sometimes skipped over them)
2000-09-22 15:01:59 +00:00
Jonas Maebe
9f71648f4d * fixed bug in regsEquivalent (in some rare cases, registers with
completely unrelated content were considered equivalent) (merged
    from fixes branch)
2000-09-22 15:00:20 +00:00
pierre
2fb3b8d9e2 * fix for bugs 1084/1128 (merged) 2000-09-21 20:56:19 +00:00
Jonas Maebe
478ad23438 * small fix to my changes for full boolean evaluation support (moved
opsize determination for boolean operations back in boolean
    processing block)
  + full boolean evaluation support (from cg386add)
2000-09-21 12:24:22 +00:00
Jonas Maebe
b7bb476ca7 * small fix to my changes for full boolean evaluation support (moved
opsize determination for boolean operations back in boolean
    processing block)
2000-09-21 12:23:49 +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
Jonas Maebe
7311710ef3 * put piece of code between -dnewoptimizations2 since it wasn't
necessary otherwise
2000-09-21 12:22:17 +00:00
Jonas Maebe
4171877126 + support for full boolean evaluation (b+/b-), default remains short
circuit boolean evaluation
2000-09-21 11:30:49 +00:00
florian
69ffcbae25 * removed a lot of errors 2000-09-20 21:52:38 +00:00