Commit Graph

287 Commits

Author SHA1 Message Date
carl
682c2289fa + added more patches from Mazen for SPARC port 2002-05-06 19:54:50 +00:00
florian
6bbaa14daf * block nodes within expressions shouldn't release the used registers,
fixed using a flag till the new rg is ready
2002-04-25 20:15:39 +00:00
peter
6320530bdd * removed newn and disposen nodes, the code is now directly
inlined from pexpr
  * -an option that will write the secondpass nodes to the .s file, this
    requires EXTDEBUG define to actually write the info
  * fixed various internal errors and crashes due recent code changes
2002-04-21 19:02:03 +00:00
carl
87aa88e9b7 + generic FPC_CHECKPOINTER
+ first parameter offset in stack now portable
* rename some constants
+ move some cpu stuff to other units
- remove unused constents
* fix stacksize for some targets
* fix generic size problems which depend now on EXTEND_SIZE constant
2002-04-20 21:32:23 +00:00
peter
8af460ac31 * using inherited; without a parent having the same function
will do nothing like delphi
2002-04-16 16:11:17 +00:00
carl
5befcda7e5 + target_info.size_of_pointer -> pointer_Size 2002-04-15 18:57:22 +00:00
carl
9ea5003a82 + asm statement uses ALL_REGISTERS 2002-04-14 16:53:54 +00:00
Jonas Maebe
7fb55bf4e4 + a_loadfpu_* and a_loadmm_* methods in tcg
* register allocation is now handled by a class and is mostly processor
    independent (+rgobj.pas and i386/rgcpu.pas)
  * temp allocation is now handled by a class (+tgobj.pas, -i386\tgcpu.pas)
  * some small improvements and fixes to the optimizer
  * some register allocation fixes
  * some fpuvaroffset fixes in the unary minus node
  * push/popusedregisters is now called rg.save/restoreusedregisters and
    (for i386) uses temps instead of push/pop's when using -Op3 (that code is
    also better optimizable)
  * fixed and optimized register saving/restoring for new/dispose nodes
  * LOC_FPU locations now also require their "register" field to be set to
    R_ST, not R_ST0 (the latter is used for LOC_CFPUREGISTER locations only)
  - list field removed of the tnode class because it's not used currently
    and can cause hard-to-find bugs
2002-03-31 20:26:33 +00:00
peter
58218bf81f * Regenerated with updated fpcmake 2002-03-11 19:10:28 +00:00
peter
4b2aa039e6 * allow oridinal labels again 2002-03-04 17:54:59 +00:00
peter
cdf0df1808 * allow accessing locals in other lexlevel when the current assembler
routine doesn't have locals.
2002-01-29 21:32:03 +00:00
peter
fd2ad837e2 * implicit result variable generation for assembler routines
* removed m_tp modeswitch, use m_tp7 or not(m_fpc) instead
2002-01-24 18:25:48 +00:00
Jonas Maebe
816cfa08b3 * allow recursive calls again in assembler procedure 2001-11-09 10:06:56 +00:00
peter
d2e1952377 * procsym definition rewrite 2001-11-02 22:58:00 +00:00
florian
b0e3e03f08 * fixed ranges in case statements with widechars 2001-10-26 22:36:42 +00:00
peter
e37dbf904d * calling convention rewrite 2001-10-25 21:22:32 +00:00
marco
7215d46735 * Make new/dispose system functions instead of keywords 2001-10-24 11:51:39 +00:00
florian
451ca157c4 * several widechar fixes, case works now 2001-10-17 22:41:04 +00:00
Jonas Maebe
d8c104b25d * fixed goto/label/try bugs 2001-10-16 15:10:34 +00:00
peter
67f5dc7f76 * "fpc -P?" command to query for used ppcXXX compiler 2001-09-22 11:11:43 +00:00
Jonas Maebe
ca27b25d5e * fixed superfluous generation of stackframes for assembler procedures
with no local vars or para's (this broke the backtrace printing in case
    of an rte)
2001-09-06 10:21:50 +00:00
Jonas Maebe
f98641013f * set funcretsym for assembler procedures too (otherwise using __RESULT
in assembler procedures causes a crash)
2001-09-03 13:19:12 +00:00
florian
9746f4c2d6 * some cg reorganisation
* some PPC updates
2001-08-26 13:35:06 +00:00
Jonas Maebe
a6cfe4083a + tempcreate/ref/delete nodes (allows the use of temps in the
resulttype and first pass)
  * made handling of read(ln)/write(ln) processor independent
  * moved processor independent handling for str and reset/rewrite-typed
    from firstpass to resulttype pass
  * changed names of helpers in text.inc to be generic for use as
    compilerprocs + added "iocheck" directive for most of them
  * reading of ordinals is done by procedures instead of functions
    because otherwise FPC_IOCHECK overwrote the result before it could
    be stored elsewhere (range checking still works)
  * compilerprocs can now be used in the system unit before they are
    implemented
  * added note to errore.msg that booleans can't be read using read/readln
2001-08-23 14:28:35 +00:00
peter
81200dc9ef * funcret moved from tprocinfo to tprocdef 2001-08-06 21:40:46 +00:00
peter
f86ce17588 + hint directive parsing support 2001-06-03 21:57:35 +00:00
Jonas Maebe
f4ab3095c2 * fixed web bugs 1480 and 1481 2001-05-17 13:25:24 +00:00
florian
3c5793d8c6 * some Delphi incompatibilities fixed:
- out, dispose and new can be used as idenfiers now
     - const p = apointerype(nil); is supported now
  + support for const p = apointertype(pointer(1234)); added
2001-05-04 15:52:03 +00:00
peter
9a47ac9ec2 * m68k updates merged from fixes branch 2001-04-21 12:03:11 +00:00
peter
0c03535b5b * registration of targets and assemblers 2001-04-18 22:01:53 +00:00
peter
5677fbe1b4 * fixed crash in labelnode
* easier detection of goto and label in try blocks
2001-04-15 09:48:29 +00:00
peter
af5d6e60e7 * moved more code from pass_1 to det_resulttype 2001-04-14 14:07:10 +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
b193bf7df3 * remove unnecessary calls to firstpass 2001-04-04 22:43:50 +00:00
peter
4e2655cdc5 * resulttype rewrite 2001-04-02 21:20:29 +00:00
florian
1008d7faa0 + support for type a = (a=1); in Delphi mode added
+ procedure p(); in Delphi mode supported
  + on isn't keyword anymore, it can be used as
    id etc. now
2001-03-22 22:35:42 +00:00
peter
d8abf76f6b * getsym redesign, removed the globals srsym,srsymtable 2001-03-11 22:58:49 +00:00
peter
32b9cdb7cf + new tlinkedlist class (merge of old tstringqueue,tcontainer and
tlinkedlist objects)
2000-12-25 00:07:25 +00:00
peter
b7c591affd * object to class for ow/og objects
* split objectdata from objectoutput
2000-12-23 19:59:35 +00:00
Jonas Maebe
595bf10fa7 * fixed case statements with int64 values 2000-12-16 22:45:55 +00:00
florian
b9796f6a7f * unused units removed from uses clause
* some changes for widestrings
2000-11-29 00:30:30 +00:00
Jonas Maebe
587d9bb7cf * fix for web bug #1251 (example 1) 2000-11-27 15:47:19 +00:00
peter
e6d423e466 * fixed crash with exception without sysutils (merged) 2000-11-22 22:43:34 +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
4b17f6f0ff * fixed memory leaks 2000-10-14 21:52:54 +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
5218af7926 * delphi compile fixes 2000-09-24 21:19:48 +00:00
peter
a71e44ac49 * use defines.inc 2000-09-24 15:06:10 +00:00
peter
4c94659743 * moved some util functions from globals,cobjects to cutils
* splitted files into finput,fmodule
2000-08-27 16:11:48 +00:00
peter
bd6d4c3d17 * fixed bug #1096 (merged) 2000-08-12 15:41:15 +00:00
florian
cd6180fe99 + case statement for int64/qword implemented 2000-08-12 06:46:06 +00:00
michael
665c1f6410 + patched to 1.1.0 with former 1.09patch from peter 2000-07-13 12:08:24 +00:00
michael
650fbb86aa + removed logs 2000-07-13 11:32:24 +00:00
michael
e7aca136a1 + Initial import 2000-07-13 06:29:38 +00:00
peter
757f68ec58 * fixed internalerror 2002 when case expr is not correct, by creating
a temp correct case expression
2000-06-30 22:15:39 +00:00
pierre
40f1da8f8e * bug found by Kovacs Attila Zoltan corrected 2000-05-04 12:59:10 +00:00
peter
ad5c964217 * support asm block without assembler directive for -Sd 2000-04-29 12:50:14 +00:00
peter
ebbf2e578f * backtraces for exceptions are now only generated from the place of the
exception
  * frame is also pushed for exceptions
  * raise statement enhanced with [,<frame>]
2000-04-24 11:11:50 +00:00
florian
9f57527c98 * crash when using exception classes without sysutils unit fixed 2000-03-19 14:17:05 +00:00
peter
98a50970e7 * check for unknown id in on exception 2000-03-19 11:16:44 +00:00
pierre
977081b2d7 assembler method code does not need ebp framepointer 2000-03-16 15:12:06 +00:00
pierre
cadf4cc024 * destructor can have args in TP mode only (bug825 and 839) 2000-03-14 16:37:25 +00:00
pierre
35d59eeb52 Use $GOTO ON 2000-02-29 23:59:47 +00:00
peter
4a4a24b6e8 * log truncated 2000-02-09 13:22:42 +00:00
peter
f16647ede6 * fixed destructor parsing with preprocessor things
* support dipsoe(p,done())
  * fixed constructor message with dispose(p,<nonexist>)
2000-01-23 16:33:49 +00:00
peter
25dda03cdc * renamed call_offset to para_offset 2000-01-16 22:17:11 +00:00
peter
0e4c33391c * fixed library with only end. 2000-01-12 10:30:50 +00:00
peter
e525797c51 * updated copyright to 2000 2000-01-07 01:14:18 +00:00
peter
7583de7a4f - removed freelabel()
* added undefined label detection in internal assembler, this prevents
    a lot of ld crashes and wrong .o files
  * .o files aren't written anymore if errors have occured
  * inlining of assembler labels is now correct
1999-12-22 01:01:45 +00:00
florian
577edbbd3f + compiler checks now if a goto leaves an exception block 1999-12-14 09:58:41 +00:00
peter
f2d894e78f * fixed sigsegv with casedef=nil 1999-12-01 22:43:17 +00:00
peter
d3b404c1a4 * fixed bug #698
* removed some notes about unused vars
1999-12-01 12:42:31 +00:00
peter
0512ba80fb + ttype, tsymlist 1999-11-30 10:40:42 +00:00
pierre
8025581bfd * DLL index used for win32 target with DEF file
+ DLL initialization/finalization support
1999-11-20 01:19:10 +00:00
pierre
b528749138 * Notes/Hints for local syms changed to
Set_varstate function
1999-11-18 15:34:44 +00:00
pierre
62da9bd4c0 * Notes/hints changes 1999-11-17 17:04:58 +00:00
peter
918b5219ea * labels used but not defined give error instead of warning, the warning
is now only with declared but not defined and not used.
1999-11-15 22:00:46 +00:00
pierre
acaa9296b7 * more browser details 1999-11-10 00:24:02 +00:00
peter
b8b39e0980 * fixed 'raise end;' 1999-11-09 13:02:46 +00:00
peter
0887060ff2 * truncated log to 20 revs 1999-11-06 14:34:16 +00:00
peter
89b677a0ee * split type reading from pdecl to ptype unit
* parameter_dec routine is now used for procedure and procvars
1999-10-22 10:39:34 +00:00
florian
fa19f0aa09 - removed the hcodegen use in the new cg, use cgbase instead 1999-10-14 14:57:51 +00:00
peter
6b1ab5eb31 * procinfo is now a pointer
* support for result setting in sub procedure
1999-09-27 23:44:46 +00:00
florian
fbbf8a505c * m68k compiler is again compilable (only gas writer, no assembler reader) 1999-09-16 23:05:51 +00:00
florian
a9d8bfa1f7 * some bug fixes (e.g. must_be_valid and procinfo.funcret_is_valid)
* most things for stored properties fixed
1999-09-10 18:48:00 +00:00
Jonas Maebe
88306ed3f3 * framepointer cannot be changed to esp for methods 1999-09-07 14:12:35 +00:00
peter
5e26e5d0c9 * better error recovery for case 1999-08-26 21:10:08 +00:00
peter
cb8aeb3fd6 * V_Fatal=1, all other V_ are also increased
* Check for local procedure when assigning procvar
  * fixed comment parsing because directives
  * oldtp mode directives better supported
  * added some messages to errore.msg
1999-08-05 16:52:53 +00:00
Jonas Maebe
ace7ff6983 * all tokens now start with an underscore
* PowerPC compiles!!
1999-08-04 13:02:40 +00:00
florian
ca53eee67e * renamed i386asm and i386base to cpuasm and cpubase 1999-08-04 00:22:34 +00:00
peter
ed8eb13d59 * moved bitmask constants to sets
* some other type/const renamings
1999-08-03 22:02:29 +00:00
florian
1cf1665d73 * the alpha compiler can be compiled now 1999-08-03 17:09:34 +00:00
florian
eac806034d * the main branch psub.pas is now used for
newcg compiler
1999-08-02 21:28:56 +00:00
florian
9cbaac5beb * bugs 494-496 fixed 1999-07-26 09:41:59 +00:00
florian
497a3d3686 * use of is_ordinal checked: often a qword/int64 isn't allowed (case/for ...)
* small qword problems fixed
1999-06-30 22:16:19 +00:00
pierre
05b6362265 * local browser stuff corrected 1999-06-22 16:24:39 +00:00
pierre
e8da115c3f * merged from 0_99_12 branch 1999-06-17 13:19:50 +00:00
pierre
a5305b32ee * better uninitialized var tests for TP mode 1999-06-15 13:19:46 +00:00
peter
0b272f13c7 * removed oldasm
* plabel -> pasmlabel
  * -a switches to source writing automaticly
  * assembler readers OOPed
  * asmsymbol automaticly external
  * jumptables and other label fixes for asm readers
1999-05-27 19:43:55 +00:00
peter
bfed29ff8b * NEWLAB for label as symbol 1999-05-21 13:54:38 +00:00
peter
12313fbed8 * with temp vars now use a reference with a persistant temp instead
of setting datasize
1999-05-17 23:51:37 +00:00
peter
a47afc3857 * removed oldppu code
* warning if objpas is loaded from uses
  * first things for new deref writing
1999-05-13 21:59:19 +00:00
peter
4841b4236c * updated messages 1999-05-05 22:21:47 +00:00
peter
611da2d24e * merged nasm compiler
* old asm moved to oldasm/
1999-05-01 13:23:57 +00:00
peter
884c517b18 * release storenumber,double_checksum 1999-04-26 13:31:24 +00:00
peter
cb70b62a82 * storenumber works
* fixed some typos in double_checksum
  + incompatible types type1 and type2 message (with storenumber)
1999-04-21 09:43:28 +00:00
pierre
7482ba0913 * void pointer accepted with warning in tp and delphi mode 1999-04-16 12:14:44 +00:00
pierre
9bca84a43d * fix for bug0234 1999-04-15 12:58:07 +00:00
peter
bedd3653f2 * fixed set loading
* object inheritance support for browser
1999-04-15 09:01:32 +00:00
daniel
1335d7de8a * Better use of routines in pbase and symtable. 4k code removed. 1999-04-14 18:41:24 +00:00
peter
cc9df8d478 * first things to store the symbol/def number in the ppu 1999-04-14 09:14:44 +00:00
pierre
dae5c188e4 * bug found by Peter for DirectWith code fixed 1999-04-09 12:22:06 +00:00
peter
ee82810a16 * more use of ttoken 1999-04-06 11:21:56 +00:00
peter
2bfdf91c5c * assembler inlining working for ag386bin 1999-03-31 13:55:03 +00:00
pierre
ebd2da41dc * typecheck for exit(value) : resulttype was not set 1999-03-10 11:23:29 +00:00
pierre
58bfc3ac78 * some m68k fixes (still not compilable !)
* new(tobj) does not give warning if tobj has no VMT !
1999-03-04 13:55:39 +00:00
peter
c5e45b576b + stabs support for binary writers
* more fixes and missing updates from the previous commit :(
1999-03-02 02:56:08 +00:00
peter
a17c03cca3 * assembler writers fixed for ag386bin 1999-02-26 00:48:13 +00:00
pierre
0669413251 + -b and -bl options work !
+ cs_local_browser ($L+) is disabled if cs_browser ($Y+)
    is not enabled when quitting global section
  * local vars and procedures are not yet stored into PPU
1999-02-22 13:06:52 +00:00
peter
bf9b5e3a54 * updates for ag386bin 1999-02-22 02:14:59 +00:00
pierre
c881aae7e9 * fix for bug0216 1999-02-15 13:13:15 +00:00
pierre
f59803f7d2 * fix for normal method calls inside static methods :
WARNING there were both parser and codegen errors !!
    added static_call boolean to calln tree
1999-02-11 09:46:21 +00:00
florian
b73b83a01b + complex results for assembler functions, fixes bug0155 1999-02-09 15:45:46 +00:00
pierre
714da479ee * memory leak in case optimization fixed 1999-01-27 13:06:57 +00:00
peter
eadf1f63b4 * more fixes for the on bug with unknown id 1999-01-25 22:49:09 +00:00
florian
90d0bea35a * first running version of the new code generator
* when compiling exceptions under Linux fixed
1999-01-23 23:29:31 +00:00
pierre
0cfc4c8f6b * fix for constructor inside with statements 1999-01-21 16:40:51 +00:00
florian
d15d426756 * mainly problem with invalid case ranges fixed (reported by Jonas) 1999-01-05 08:19:59 +00:00
Jonas Maebe
8cf4da6d5e + optimize pascal code surrounding assembler blocks 1998-12-29 18:48:15 +00:00
peter
2f303a746d * fixed new(x) crash if x contains an error 1998-12-23 22:52:56 +00:00
Jonas Maebe
75331d6648 * released CaseRange 1998-12-16 12:30:59 +00:00
Jonas Maebe
401078117f + convert consecutive case labels to a single range (-dCaseRange) 1998-12-15 22:32:24 +00:00
peter
ff335d3911 * fixed dup release of statement label in case 1998-12-15 11:52:18 +00:00
peter
1b369bb4bb + globtype,tokens,version unit splitted from globals 1998-12-11 00:02:37 +00:00
florian
4244dda54b + basic operations with int64/qord (compiler with -dint64)
+ rtti of enumerations extended: names are now written
1998-12-10 09:47:13 +00:00
pierre
274bce92b8 + added -Se in Makefile cvstest target
+ lexlevel cleanup
    normal_function_level main_program_level and unit_init_level defined
  * tins_cache grown to A_EMMS (gave range check error in asm readers)
    (test added in code !)
  * -Un option was wrong
  * _FAIL and _SELF only keyword inside
    constructors and methods respectively
1998-11-13 15:40:12 +00:00
pierre
364132b0bb * fix for bug0176 and bug0177 1998-11-12 12:55:16 +00:00
peter
dedaf4db95 * fixed assembler directive and then not an ASM statement 1998-11-05 23:43:24 +00:00
peter
3fcd0a1086 * fixed dispose(destructor) crash when destructor didn't exists 1998-10-30 16:20:22 +00:00
pierre
1a77339355 * several memory corruptions due to double freemem solved
=> never use p^.loc.location:=p^.left^.loc.location;
  + finally I added now by default
    that ra386dir translates global and unit symbols
  + added a first field in tsymtable and
    a nextsym field in tsym
    (this allows to obtain ordered type info for
    records and objects in gdb !)
1998-10-20 08:06:37 +00:00
pierre
a5f0168fbb * wrong stabs info corrected once again !!
+ variable vmt offset with vmt field only if required
    implemented now !!!
1998-10-19 08:54:53 +00:00
peter
1468993242 * new style for m68k/i386 infos and enums 1998-10-13 13:10:08 +00:00
peter
075d0d16fc * added eof message
* fixed unit init section parsing with finalize
1998-10-08 13:46:22 +00:00
peter
d4ac5e456b + idtoken and only one token table 1998-09-26 17:45:30 +00:00
peter
8e85a889de + aktmodeswitches 1998-09-24 23:49:05 +00:00
florian
7f57cdf52c * the following doesn't work: on texception do, was a parser error, fixed 1998-09-23 21:53:04 +00:00
peter
4ae6e577c5 * merged fix 1998-09-21 10:26:07 +00:00
peter
58c2d999f0 * updated some error messages 1998-09-04 08:41:36 +00:00