florian
f3c572edc5
* handle multiple string labels in one case branch correctly, resolves #16130
...
git-svn-id: trunk@15212 -
2010-05-02 21:44:24 +00:00
paul
1b614b526a
compiler:
...
- add own symbol table for enumeration to store enumeration elements
- reimplement enumeration member traverse using symbol table instead of firstenum/nextenum - that members are removed
- implement TEnum.Element access syntax - element is searched in the enumeration symtable in this case instead of global/local symtables
- implement {$SCOPEDENUM ON/OFF} local switch
+ tests
git-svn-id: trunk@15051 -
2010-03-25 05:46:53 +00:00
florian
448f3d99c1
* cleanup of case <string> of code by Sergei Gorelkin, resolves #13700
...
git-svn-id: trunk@14467 -
2009-12-23 19:27:50 +00:00
florian
44aed2af60
o patch by Michael Denisenko, resolves #14734 :
...
* fixes memory leaks in case of string code
* replace usage of strcmp
* improved tests
git-svn-id: trunk@13830 -
2009-10-09 20:40:22 +00:00
florian
cf215d5097
o patch by Michael V. Denisenko to handle case <string> of (see also #13700 )
...
+ compiler implementation
+ tests
git-svn-id: trunk@13642 -
2009-09-03 20:21:30 +00:00
peter
060bdbcb47
* fix writing of goto node to ppu
...
* replace derefnode with resolveppuidx method that only needs to be
implemented for nodes referencing other nodes
* fix IE when a label is not defined in inline function
git-svn-id: trunk@11697 -
2008-09-03 20:46:04 +00:00
florian
8fe43377e1
+ convert case <boolean> of into if statement, resolves #10517
...
git-svn-id: trunk@10873 -
2008-05-03 10:27:55 +00:00
peter
417c832e9d
* in node simplify
...
git-svn-id: trunk@10310 -
2008-02-12 17:27:27 +00:00
peter
74f21d7bc3
* typecheck after converting type to constant set
...
git-svn-id: trunk@10081 -
2008-01-28 17:35:32 +00:00
Jonas Maebe
8349cde7db
* changed byte/word/longbool to be Delphi-compatible (+ similar changes
...
for qwordbool) + test:
o assigning true to such a variable now sets them to $ff/$ffff/$ffffffff
o these types are now all signed
o converting an integer type to a byte/word/long/qwordbool using an
explicit type cast keeps the integer's original value stored in the
bool, instead of forcing it to ord(true)/ord(false)
(mantis #10233 and #10613 , implemented for all architectures, testsuite
tested for ppc32, sparc and x86)
* fixed some places where the rtl depended on longbool(true) having the
value 1
* extended several boolean tests (and adapted some to no longer assume
that byte/word/long/qwordbool(true)=1)
+ support for converting to qwordbool in second_int_to_bool for x86, ppc
and sparc
git-svn-id: trunk@9898 -
2008-01-24 21:30:55 +00:00
peter
6058b2c247
* renamed t_times to executionweight and moved it to
...
code generation pass
* include executionweight in the spilling decision
git-svn-id: trunk@9330 -
2007-11-25 16:38:05 +00:00
Jonas Maebe
82cf80d4ca
* added missing tcasenode.derefnode override to process all the
...
case-blocks and the else-block
git-svn-id: trunk@9251 -
2007-11-14 19:40:28 +00:00
peter
6b8aed593f
* remove registers{int/mmx/fpu} from firstpass
...
* small cleanups of unused variables in firstpass
* node_resources_fpu() created to get an approximation of the
required fpu registers
* for the moment use node_complexity in the CG until the
node_resource_int() is created
git-svn-id: trunk@8655 -
2007-09-26 21:12:01 +00:00
Jonas Maebe
89ed91509a
* Some fixes for r8515:
...
* fixed set add-nodes in case left and right are swapped (taddset4)
* fixed "in" expressions with packed sets in case left is < setbase
(now tested by tw8258b, which was missing a {$packset 1} directive)
git-svn-id: trunk@8519 -
2007-09-16 22:24:42 +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
2e3833cd7a
* slightly improved previous in checking patch
...
git-svn-id: trunk@6892 -
2007-03-16 22:31:51 +00:00
Jonas Maebe
428306051f
* give again an error for "in" operations on incompatible set
...
elements/sets after introduction of support for "longint in set"
git-svn-id: trunk@6885 -
2007-03-16 19:44:43 +00:00
Jonas Maebe
f63b0ef160
* fixed overflow for constant in-expressions involving values >
...
high(uinttype) on the left side
git-svn-id: trunk@6852 -
2007-03-14 19:42:01 +00:00
Jonas Maebe
530d5c125d
* limit the left hand side of "in" expressions to 2^32 for now
...
(fixes webtbs/tw8258 for 64 bit platforms)
git-svn-id: trunk@6393 -
2007-02-10 16:20:47 +00:00
Jonas Maebe
fc3852e59a
* in non-TP modes, 'ord_larger_than_256 in set' now always returns
...
false instead of triggering a range error (mantis #8258 ,
based on patch provided by Thorsten Engler)
git-svn-id: trunk@6357 -
2007-02-07 18:57:19 +00:00
Jonas Maebe
e4e6f8112d
* fixed some warnings about hidden constructors
...
git-svn-id: trunk@5784 -
2007-01-02 14:18:12 +00:00
Jonas Maebe
b86e2aa33a
* fixed crash when compiling certain invalid "in" constructions
...
(mantis 8031)
git-svn-id: trunk@5748 -
2006-12-29 23:13:02 +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
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
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
b6e35a200e
* rewrite of optimizer options
...
git-svn-id: trunk@2901 -
2006-03-13 09:05:50 +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
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
peter
8b1f3d2470
* no range check for delphi mode with in operator
...
git-svn-id: trunk@1354 -
2005-10-11 06:46:56 +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
Jonas Maebe
bd04491f50
* patch from Peter to fix inlining of case statements
2004-11-30 18:13:39 +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
6b96b70118
* fixed operator overload allowing for pointer-string
...
* replaced some type_e_mismatch with more informational messages
2004-03-18 16:19:03 +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
daniel
97e87aaebc
* reginfo now also only allocated during register allocation
...
* third round of gdb cleanups: kick out most of concatstabto
2004-01-26 16:12:27 +00:00
peter
dc7f09e29e
* check for enumdef.maxval<255 instead of enumdef.savesize
2003-11-10 19:10:57 +00:00
peter
4a1ecb07d1
* splitted buildderef and buildderefimpl to fix interface crc
...
calculation
2003-10-23 14:44:07 +00:00
peter
6878c55c80
* write derefdata in a separate ppu entry
2003-10-22 20:39:59 +00:00
daniel
b2343f4b16
* Register allocator splitted, ans abstract now
2003-10-09 21:31:37 +00:00
peter
95f132db3d
* set_varstate cleanup
2003-10-08 19:19:45 +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
6a8d5eb25d
* NEWRA branch merged
2003-09-03 15:55:00 +00:00
Jonas Maebe
7ca760912b
* tcginnode.pass_2 doesn't call a helper anymore in any case
...
* fixed ungetregisterfpu compilation problems
2003-06-12 22:09:54 +00:00