florian
19e723c869
* germanism fixed (aktexceptblock -> current_exceptblock)
...
git-svn-id: trunk@11410 -
2008-07-19 17:06:16 +00:00
Jonas Maebe
f36e5411af
* split cpu64bit compiler define into
...
a) cpu64bitaddr, which means that we are generating a compiler which
will generate code for targets with a 64 bit address space/abi
b) cpu64bitalu, which means that we are generating a compiler which
will generate code for a cpu with support for 64 bit integer
operations (possibly running in a 32 bit address space, depending
on the cpu64bitaddr define)
All cpus which had cpu64bit set now have both the above defines set,
and none of the 32 bit cpus have cpu64bitalu set (and none will
compile with it currently)
+ pint and puint types, similar to aint/aword (not pword because that
that conflicts with pword=^word)
* several changes from aint/aword to pint/pword
* some changes of tcgsize2size[OS_INT] to sizeof(pint)
git-svn-id: trunk@10320 -
2008-02-13 20:44:00 +00:00
florian
bc73f9021c
Merged revisions 5891-10167,10169-10180 via svnmerge from
...
http://svn.freepascal.org/svn/fpc/branches/avr
........
r5891 | florian | 2007-01-11 17:30:12 +0100 (Do, 11 Jan 2007) | 2 lines
+ some initial work
........
r10170 | florian | 2008-02-03 11:02:04 +0100 (So, 03 Feb 2008) | 2 lines
* continued to work on avr port
........
r10180 | florian | 2008-02-03 15:29:30 +0100 (So, 03 Feb 2008) | 2 lines
+ a lot of skeleton code for avr added
........
git-svn-id: trunk@10186 -
2008-02-03 17:21:52 +00:00
peter
505e4f7809
* don't give illegal expression for errorn statements. The error is already given
...
or can be ignored during a generic template parsing
git-svn-id: trunk@9520 -
2007-12-23 20:57:59 +00:00
florian
50cc61c8fd
* ignore register list in pure assembler routines, resolves #9335
...
git-svn-id: trunk@8978 -
2007-10-28 20:41:19 +00:00
Jonas Maebe
12b4f034ea
* only allow using array elements as for-loop counter variables
...
in TP mode
git-svn-id: trunk@8907 -
2007-10-21 22:39:49 +00:00
peter
6434772c3c
* error message when a goto label is optimized away
...
git-svn-id: trunk@8837 -
2007-10-17 21:52:25 +00:00
Jonas Maebe
c89ea4412f
* disallow using inline nodes with a non-void resultdef as statements
...
(e.g. length, lo/hi, ord, etc). Not the same as mantis #9918 , but
somewhat related
git-svn-id: trunk@8770 -
2007-10-12 11:54:37 +00:00
Jonas Maebe
c408d9bb1d
* fixed regression of webtbs/tw2789 caused by r8270 (setting vs_read
...
without vsf_must_be_valid means that it's not really read, but
only used by sizeof or so)
git-svn-id: trunk@8273 -
2007-08-12 19:52:57 +00:00
Jonas Maebe
12791bf4f1
* avoid spurious uninitialised warnings about array elements used as
...
for-loop counters
git-svn-id: trunk@8270 -
2007-08-12 13:19:30 +00:00
peter
1dd62b8686
* write also asmblocklabel for a connected labelsym
...
git-svn-id: trunk@8159 -
2007-07-23 21:01:32 +00:00
daniel
9adb202a92
* Rework the constexprint to allow operations from low(int64) to high(qword).
...
+ Some initial work on a formaldef which also carries the typinfo of a parameter.
git-svn-id: trunk@7639 -
2007-06-13 07:41:18 +00:00
Jonas Maebe
69cf42c4f7
* fixed val(s,int64) (it accepted values in the range
...
high(int64+1)..high(qword) if written in decimal notation) + test
* fixed range checking of qword constants parsed by the compiler
(they always gave a range error if > high(int64), because the compiler
internally stores them as int64)
* turn off range checking flag of rdconstnodes created by the parser
from _INTCONST, because those are already range checked by the
way they are parsed using val()
git-svn-id: trunk@6814 -
2007-03-12 22:22:43 +00:00
Jonas Maebe
4e96fe8fac
* fixed with-support for classrefdefs (mantis 8150), with thanks to
...
Thorsten Engler for supplying an initial patch
git-svn-id: trunk@6088 -
2007-01-20 20:04:54 +00:00
Jonas Maebe
2ad3ef968f
* properly detect when we can't take the address of a with-expression
...
and assign it to a temp in that case (mantis #8141 )
git-svn-id: trunk@6071 -
2007-01-19 13:01:07 +00:00
Jonas Maebe
f2b07704b5
* proper initialised/used warnings for variables used
...
in complex with-statements + tests
git-svn-id: trunk@6024 -
2007-01-17 12:04:53 +00:00
peter
0557ddc342
* removed typed const, it is now handled by staticvarsym
...
* globalvarsym renamed to staticvarsym
* fixed invalid regvar use in init when the finalize also uses the var
git-svn-id: trunk@5290 -
2006-11-08 21:04:22 +00:00
peter
3cae449fda
* moved rtti to ncgrtti
...
git-svn-id: trunk@5219 -
2006-11-04 10:43:27 +00:00
peter
658c46b903
* remove tdictionary and tindexarray
...
* symtables based on TFPHashObjectList and TFPObjectList
* rename torddef.typ to torddef.ordtype
* rename tfloatdef.typ to tfloatdef.floattype
* rename tdef.deftype to tdef.typ
* remove obsolete browser code, browcol is kept so the ide
can still be compiled
git-svn-id: trunk@5192 -
2006-11-03 00:30:30 +00:00
florian
bce905b106
* give correct error locations for errors when specializing templates
...
* removed more germanisms
* better dumping of tokenbuf in ppudump
git-svn-id: trunk@5101 -
2006-10-30 23:28:06 +00:00
florian
85d63d9fa9
* settings refactored
...
git-svn-id: trunk@5094 -
2006-10-30 18:02:58 +00:00
peter
3078a1927f
* remove ttype
...
* rename old ttype variables *type to *def
* rename resulttypepass to pass_typecheck
* rename pass_2 to pass_generate_code
git-svn-id: trunk@5077 -
2006-10-29 22:19:39 +00:00
Jonas Maebe
5cad2321a9
* allow assigning to loop control vars in macpas mode
...
git-svn-id: trunk@4956 -
2006-10-18 18:13:41 +00:00
Jonas Maebe
355e101bc1
* temp results of calls in "with" statements can be in regs
...
git-svn-id: trunk@4649 -
2006-09-19 09:23:57 +00:00
Jonas Maebe
eccbc78e04
+ support for bitpacked arrays:
...
+ use {$bitpacking on/+} to change the meaning of "packed"
into "bitpacked" for arrays. This is the default for MacPas.
You can also define individual arrays as "bitpacked", but
this is not encouraged since this keyword is not known by
other compilers and therefore makes your code unportable.
+ pack(unpackedarray,index,packedarray) to pack
length(packedarray) elements starting at
unpackedarray[index] into packedarray.
+ unpack(packedarray,unpackedarray,index) to unpack
packedarray into unpackedarray, with the first
element being stored at unpackedarray[index]
* todo:
* "open packed arrays" and rtti for packed arrays are not
yet supported
* gdb does not properly support bitpacked arrays
git-svn-id: trunk@4449 -
2006-08-19 12:54:12 +00:00
florian
48802b0866
+ variants can be used as case expression
...
git-svn-id: trunk@3530 -
2006-05-14 18:29:49 +00:00
peter
b7fe6797bf
Merged revisions 2921-2922,2925 via svnmerge from
...
http://svn.freepascal.org/svn/fpc/branches/linker/compiler
........
r2921 | peter | 2006-03-15 08:35:00 +0100 (Wed, 15 Mar 2006) | 2 lines
* pass ObjectWriter to ObjectOuput
........
r2922 | peter | 2006-03-15 12:40:30 +0100 (Wed, 15 Mar 2006) | 2 lines
* refactor asmdata
........
r2925 | peter | 2006-03-15 16:09:39 +0100 (Wed, 15 Mar 2006) | 3 lines
* add cfi to asmdata
* move asmlist, asmcfi, asmdata to own unit
........
git-svn-id: trunk@2932 -
2006-03-16 08:52:22 +00:00
peter
38c0ae73da
Merged revisions 2775,2788-2789 via svnmerge from
...
http://svn.freepascal.org/svn/fpc/branches/linker/compiler
........
r2775 | peter | 2006-03-05 22:43:30 +0100 (Sun, 05 Mar 2006) | 2 lines
* merge ppu changes to keep ppus the same
........
r2788 | peter | 2006-03-06 12:59:14 +0100 (Mon, 06 Mar 2006) | 2 lines
* Add TFPList and TFPObjectList
........
r2789 | peter | 2006-03-06 13:01:37 +0100 (Mon, 06 Mar 2006) | 2 lines
* fix powerpc
........
git-svn-id: trunk@2790 -
2006-03-06 12:04:44 +00:00
peter
232555904e
* symtablestack cleanup and rewrite
...
git-svn-id: trunk@2448 -
2006-02-05 22:24:18 +00:00
Jonas Maebe
09a668dac9
* check whether loop counters are valid for assignment (bug 4695)
...
git-svn-id: trunk@2285 -
2006-01-14 14:09:39 +00:00
Jonas Maebe
42ec76598c
* new categories for vs_*: vs_declared, vs_initialised, vs_read,
...
vs_written, vs_readwritten. vs_initialised is the old vs_assigned;
vs_used has been replaced by vs_read, vs_written and vs_readwritten
* the valid_for_*() routines in htypechk now get an extra parameter to
decide whether or not errors should be reported
git-svn-id: trunk@1913 -
2005-12-10 16:51:26 +00:00
florian
46a3f895e0
* exception parser checks now if the used id for the handler is really ON, fixes webbug 4256
...
git-svn-id: trunk@798 -
2005-08-05 19:44:10 +00:00
florian
7cd67ea3f0
* node optimizer branch merged
...
* gotonode and gotolabel refactored
* -Nu added to enable for loop unrolling
git-svn-id: trunk@446 -
2005-06-19 17:42:10 +00:00
fpc
790a4fe2d3
* log and id tags removed
...
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3
initial import
...
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00
peter
3f9d6ab32f
* add hint when passing an uninitialized variable to a var parameter
2005-03-25 22:20:18 +00:00
peter
e417e34496
* truncate log
2005-02-14 17:13:06 +00:00
peter
a85e9e6485
* don't set varstate to vs_used for record in with at start yet
2005-02-11 16:24:59 +00:00
florian
1dcb2e55bc
* fixed usage of 000 as label
2005-02-08 21:25:14 +00:00
peter
16a60238c6
* check for-loop constants ranges
2005-02-03 17:10:58 +00:00
peter
e24eb1f631
* set varstate before parsing the instruction block in for statements
2005-01-31 20:23:53 +00:00
peter
cc2789b680
* for-node cleanup, checking for uninitialzed from and to values
...
is now supported
2005-01-31 16:16:21 +00:00
peter
ced6bf20cd
* fix lineinfo for with blocks
2004-12-26 16:22:01 +00:00
peter
78c2af7b3c
* set vo_explicit_paraloc flag
2004-12-07 16:11:52 +00:00
peter
2b6456fe16
* procvar handling for tp procvar mode fixed
...
* proc to procvar moved from addrnode to typeconvnode
* inlininginfo is now allocated only for inline routines that
can be inlined, introduced a new flag po_has_inlining_info
2004-12-05 12:28:10 +00:00
Jonas Maebe
bd04491f50
* patch from Peter to fix inlining of case statements
2004-11-30 18:13:39 +00:00
peter
89b1b583c9
* ttempcreatenode.create_reg merged into .create with parameter
...
whether a register is allowed
* funcret_paraloc renamed to funcretloc
2004-11-21 17:54:59 +00:00
peter
6458bd0ce1
* tvarsym splitted
2004-11-08 22:09:58 +00:00
mazen
3c79b466b7
* remove non needed parathesys as in 1.140
2004-10-15 10:35:23 +00:00
mazen
581b52422c
- remove $IFDEF DELPHI and related code
...
- remove $IFDEF FPCPROCVAR and related code
2004-10-15 09:14:16 +00:00
peter
6180168a5a
* register loopvarsym for fields instead of record variable
...
* don't allow class fields as loop var
2004-09-27 15:15:52 +00:00
peter
8fb3536f6e
* simple regvar support, not yet finished
2004-09-26 17:45:29 +00:00
peter
33a834821f
* paraloc branch merged
2004-09-21 17:25:12 +00:00
peter
4df1a1f378
* no difference for withnode when debuginfo is generated
2004-09-21 16:00:50 +00:00
peter
67548d9f91
* for loop variable assignment is not allowed anymore
2004-09-13 20:28:26 +00:00
florian
8a9758c5e2
* logs truncated
2004-06-20 08:55:28 +00:00
florian
588e2c38bf
* dwarf branch merged
2004-06-16 20:07:06 +00:00
peter
b86f2c6a25
* methodpointer is loaded into a temp when it was a calln
2004-05-23 18:28:40 +00:00
peter
9a0a2ccd81
* give error when goto jumps to label outside current proc scope
2004-05-23 11:39:37 +00:00
peter
9625256d22
* better check for maybe_call_procvar
2004-03-04 17:22:10 +00:00
peter
e9b91887d5
* withsymtables need to have the original tobject owner instead of
...
the parent objectdef. Needed to check for visibility
2004-02-26 16:14:48 +00:00
peter
c844c5a505
* procvar cleanup
2004-02-20 21:55:59 +00:00
peter
ecfbbeffc3
* renamed xNNbittype to xNNinttype
...
* renamed registers32 to registersint
* replace some s32bit,u32bit with torddef([su]inttype).def.typ
2004-02-03 22:32:53 +00:00
Jonas Maebe
43306edc96
* don't put the temp of a withnode in a register if debugging info is on,
...
because then our stabs generation internalerror's
2004-02-03 19:47:45 +00:00
Jonas Maebe
694eee6cae
+ support to store ttempcreate/ref/deletenodes in registers
...
* put temps for withnodes and some newnodes in registers
Note: this currently only works because calling ungetregister()
multiple times for the same register doesn't matter. We need again
a way to specify that a register is currently a regvar and as such
should not be freed when you call ungetregister() on it.
2004-02-03 16:46:51 +00:00
peter
607b41f22e
* except is also an end of block token
...
* after a label don't try to parse a statement when the next token
is an end token
2004-01-22 17:24:49 +00:00
peter
32173c41fa
* removed asmmode_direct
2004-01-12 16:36:53 +00:00
Jonas Maebe
62394e45d7
* moved count_locals from pstatmnt to symutils
...
* use count_locals in powerpc/cpupi to check whether we should set the
first temp offset (and as such generate a stackframe)
2003-12-07 16:40:45 +00:00
florian
1a87a5ed45
* fixed several arm calling conventions issues
...
* fixed reference reading in the assembler reader
* fixed a_loadaddr_ref_reg
2003-12-03 17:39:04 +00:00
florian
1af574ceca
* assembler readers OOPed
...
+ typed currency constants
+ typed 128 bit float constants if the CPU supports it
2003-11-12 16:05:39 +00:00
peter
a1cb920b51
* remove temporary stdcall hack
2003-11-11 21:10:12 +00:00
peter
f663d2488f
* cross unit inlining fixed
2003-11-10 22:02:52 +00:00
peter
fae3eaf83d
* move check for unused object constructor result to blocknode
2003-10-29 20:34:20 +00:00
peter
003ea697c0
* object constructor results are always used
2003-10-29 20:01:41 +00:00
peter
5925d38ac7
* support indexing and offset retrieval for locals
2003-10-29 15:40:20 +00:00
peter
d0de3b3ea8
* 64k registers supported
...
* fixed some memory leaks
2003-10-17 14:38:32 +00:00
peter
fb81b7ebbb
* old trgobj moved to x86/rgcpu and renamed to trgx86fpu
...
* tregisteralloctor renamed to trgobj
* removed rgobj from a lot of units
* moved location_* and reference_* to cgobj
* first things for mmx register allocation
2003-10-10 17:48:13 +00:00
peter
95f132db3d
* set_varstate cleanup
2003-10-08 19:19:45 +00:00
peter
5fb06316f1
* set calling convention before assembler block is parsed
2003-10-07 20:06:37 +00:00
peter
13101d50e8
* delphi mode uses register calling by default for assembler
2003-10-02 21:15:59 +00:00
peter
70fe77ca7c
* procinfo unit contains tprocinfo
...
* cginfo renamed to cgbase
* moved cgmessage to verbose
* fixed ppc and sparc compiles
2003-10-01 20:34:48 +00:00
peter
8af51ea6d3
* locals and paras are allocated in the code generation
...
* tvarsym.localloc contains the location of para/local when
generating code for the current procedure
2003-09-23 17:56:05 +00:00
peter
76a53a375d
* varspez in calls to push_addr_param
2003-09-16 16:17:01 +00:00
peter
b9d09a4e5c
* preparations for different default calling conventions
...
* various RA fixes
2003-09-07 22:09:34 +00:00
peter
6a8d5eb25d
* NEWRA branch merged
2003-09-03 15:55:00 +00:00
peter
1b633246b9
* sparc fixes
2003-07-08 21:23:24 +00:00
Jonas Maebe
404d344d92
* lots of newra fixes (need getfuncretparaloc implementation for i386)!
...
* renamed all_intregisters to volatile_intregisters and made it
processor dependent
2003-06-17 16:34:44 +00:00
peter
0dceec9a64
* current_procdef removed, use current_procinfo.procdef instead
2003-06-13 21:19:30 +00:00
peter
19c9bdbf60
* load calln in temprefn in with statement
2003-06-09 18:27:14 +00:00
florian
995f7e0f11
* fix some small flaws which prevent sparc linux system unit from compiling
...
* some reformatting done
2003-05-23 22:33:48 +00:00
peter
e91cc82200
* better error for undefined ordinal labels
2003-05-23 15:15:36 +00:00
Jonas Maebe
cb279b2029
* changed tt_persistant to tt_persistent :)
...
* tempcreatenode now doesn't accept a boolean anymore for persistent
temps, but a ttemptype, so you can also create ansistring temps etc
2003-05-17 13:30:08 +00:00
peter
92ee1804b6
* removed selfpointer_offset, vmtpointer_offset
...
* tvarsym.adjusted_address
* address in localsymtable is now in the real direction
* removed some obsolete globals
2003-05-15 18:58:53 +00:00
peter
05c05f2555
* failn removed
...
* inherited result code check moven to pexpr
2003-05-13 19:14:41 +00:00
peter
15b0132f6f
* tloadnode does not support objectsymtable,withsymtable anymore
...
* withnode cleanup
* direct with rewritten to use temprefnode
2003-05-11 14:45:12 +00:00
peter
1a2eedd767
* self moved to hidden parameter
...
* removed hdisposen,hnewn,selfn
2003-05-09 17:47:02 +00:00
florian
72df326165
* some 64 bit adaptions in ncgadd
...
* x86-64 now uses ncgadd
* tparamanager.ret_in_acc doesn't return true anymore for a void-def
2003-04-30 22:15:59 +00:00
peter
60978ba89c
* aktprocdef renamed to current_procdef
...
* procinfo renamed to current_procinfo
* procinfo will now be stored in current_module so it can be
cleaned up properly
* gen_main_procsym changed to create_main_proc and release_main_proc
to also generate a tprocinfo structure
* fixed unit implicit initfinal
2003-04-27 11:21:32 +00:00
peter
7f14891d66
* aktprocdef cleanup, aktprocdef is now always nil when parsing
...
a new procdef declaration
* aktprocsym removed
* lexlevel removed, use symtable.symtablelevel instead
* implicit init/final code uses the normal genentry/genexit
* funcret state checking updated for new funcret handling
2003-04-27 07:29:50 +00:00
florian
15c0b633ab
* fixed the powerpc to work with the new function result handling
2003-04-26 11:30:59 +00:00