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
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
florian
57acf67659
+ constant unicodestrings
...
git-svn-id: trunk@9385 -
2007-12-02 20:43:08 +00:00
Jonas Maebe
368cd52f97
* fixed bug in typed constant record parsing with variant records
...
in case a variant part other than the first is initialised (the
index of the next symbol was not adjusted, causing incorrect error
messages in case there are some alignment bits/bytes between the
previous and next field)
git-svn-id: trunk@8948 -
2007-10-26 18:22:30 +00:00
peter
9f0ca44c94
* new tf_smartlink_library flag
...
* use create_smartlink[_sections|_library] to check what to
do for smartlinking
git-svn-id: trunk@8715 -
2007-10-01 16:55:08 +00:00
Jonas Maebe
5a0a6d0d9e
* fixed and enabled smartlinking on Darwin by adding more .reference
...
statements (some to work around linker bugs, most because they were
really missing)
git-svn-id: trunk@8673 -
2007-09-28 22:48:41 +00:00
Jonas Maebe
0040eecf9f
+ support for extra packing of sets whose lower element number
...
is <> 0 (Delphi compatible now, + various tests)
+ support for enums and sets in is_in_limit()
* fixed converting smallset expressions to varsets
* improved choosing an appropriate common set type when mixing
set types in an expression
- removed no longer used normalset code from nadd.pas
- disabled large set (>256 elements) support for now, because
they are not yet supported entirely throughout the compiler
and this causes errors at run time in several situations
git-svn-id: trunk@8515 -
2007-09-16 20:04:45 +00:00
florian
70b0bd1c5d
* throw better error when variable values are used as typed consts, resolves #9333
...
git-svn-id: trunk@8188 -
2007-07-29 14:29:19 +00:00
yury
1782305ae2
* Completely fixed float constants in softfloat mode when compiler was compiled in hardfloat mode on arm-linux host.
...
git-svn-id: trunk@8015 -
2007-07-10 21:05:12 +00:00
daniel
997240d094
- Remove unused variable.
...
git-svn-id: trunk@7910 -
2007-07-01 18:26:28 +00:00
Jonas Maebe
20a35f9701
* fixed public/export support for initialised variables/typed
...
constants (mantis #9113 )
git-svn-id: trunk@7772 -
2007-06-22 17:10:15 +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
a767e89a5b
- removed a comment which wasn't true anymore
...
git-svn-id: trunk@7472 -
2007-05-25 12:30:14 +00:00
Jonas Maebe
a0b57eddb5
* new internal set format for big endian systems. Advantages:
...
* varsets ({$packset x}) are now supported on big endian targets
* gdb now displays sets properly on big endian systems
* cleanup of generic set code (in, include/exclude, helpers), all
based on "bitpacked array[] of 0..1" now
* there are no helpers available yet to convert sets from the old to
the new format, because the set format will change again slightly
in the near future (so that e.g. a set of 24..31 will be stored in
1 byte), and creating two classes of set conversion helpers would
confuse things (i.e., it's not recommended to use trunk currently for
programs which load sets stored to disk by big endian programs compiled
by previous FPC versions)
* cross-endian compiling has been tested and still works, but one case
is not supported: compiling a compiler for a different endianess
using a starting compiler from before the current revision (so first
cycle natively, and then use the newly created compiler to create a
cross-compiler)
git-svn-id: trunk@7395 -
2007-05-19 17:15:15 +00:00
peter
aa72495049
* fix resourcestring assignment in typedconst
...
git-svn-id: trunk@7339 -
2007-05-15 06:52:36 +00:00
Jonas Maebe
691ad89ba5
* fixed rangecheck define typo
...
git-svn-id: trunk@6819 -
2007-03-13 14:49:03 +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
8bc876c3fb
+ support for bitpacked record constants
...
+ several array/record bitpacking tests from gpc, most work already
git-svn-id: trunk@6633 -
2007-02-24 17:39:06 +00:00
Jonas Maebe
06208b5c5d
* removed some unused code and associated variable
...
from parse_packed_array_def
git-svn-id: trunk@6605 -
2007-02-22 16:56:21 +00:00
Jonas Maebe
3794fab64d
+ support for packed array constants
...
git-svn-id: trunk@6583 -
2007-02-20 21:53:46 +00:00
Jonas Maebe
82378bc73a
* support assigned widechars with value < 255 to chars in Delphi mode
...
* better error messages for assigning invalid values to typed consts
(mantis #8312 , patch by Thorsten Engler)
git-svn-id: trunk@6468 -
2007-02-13 13:35:46 +00:00
yury
bcd86ef782
* added support for very big/small currency constants for non x86 CPUs.
...
git-svn-id: trunk@5937 -
2007-01-13 12:12:20 +00:00
florian
2ccba3604c
* fixed generation of constants containing a vmt
...
* better error message if such a construct is used in fpc where it isn't allowed
git-svn-id: trunk@5838 -
2007-01-07 10:39:06 +00:00
Jonas Maebe
24ba57fe91
* fixed error message for attempts to initialise typed const
...
classes/interfaces (mantis 8006)
git-svn-id: trunk@5676 -
2006-12-22 14:12:26 +00:00
peter
8e4e504cd8
* range error
...
git-svn-id: trunk@5509 -
2006-11-28 07:07:15 +00:00
florian
fbc197f27a
* fixed writing of double constants on WinCE
...
git-svn-id: trunk@5416 -
2006-11-17 22:17:54 +00:00
peter
881c210908
* unitinialized sorg
...
git-svn-id: trunk@5360 -
2006-11-13 20:40:00 +00:00
peter
45621c892e
* set vs_initialised for typed consts
...
* delete old symbol when absolute is used
git-svn-id: trunk@5351 -
2006-11-13 07:42:48 +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
e17b424e28
* refactor procsym procdef list
...
git-svn-id: trunk@5210 -
2006-11-03 18:44:46 +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
peter
cb246eb781
* Remove dos,strings units, use SysUtils instead
...
* replace split* functions with Extract* functions
* Add Directory caching
git-svn-id: trunk@5102 -
2006-10-30 23:29:35 +00:00
florian
ef7bd58c54
* germanism removed (aktfilepos -> current_filepos)
...
git-svn-id: trunk@5099 -
2006-10-30 22:37:31 +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
d07f470b71
* remove ifdef fpc
...
git-svn-id: trunk@4819 -
2006-10-07 13:43:34 +00:00
Jonas Maebe
1f42ee201b
+ support for bitpacked records, except for:
...
* rtti
* typed constants
git-svn-id: trunk@4489 -
2006-08-23 15:44:13 +00:00
florian
9e66674ff9
+ first part of qwordbool implementation
...
git-svn-id: trunk@4462 -
2006-08-19 23:16:17 +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
570c1bc3a5
* widestrings aren't ref. counted anymore on windows
...
git-svn-id: trunk@3466 -
2006-05-09 20:54:26 +00:00
peter
0ec2921bbe
* split newasmsymbol to refasmsymbol and defineasmsymbol
...
git-svn-id: trunk@3057 -
2006-03-27 11:45:18 +00:00
peter
693d7e2463
* fix alignment broken by previous commit
...
git-svn-id: trunk@3056 -
2006-03-27 10:29:05 +00:00
peter
e0a62c1bf2
Merged revisions 3009 via svnmerge from
...
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler
r3009 (peter)
* support public name for typed consts
git-svn-id: trunk@3043 -
2006-03-26 18:54:19 +00:00
peter
37c81492ad
Merged revisions 2827,2831,2837,2932-2980 via svnmerge from
...
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler
r2827 (peter)
* smartlinking of resourcestrings
r2831 (peter)
* process_ea 64bit fixes
r2837 (peter)
* linker script
git-svn-id: trunk@2981 -
2006-03-19 22:12:52 +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
785550d7e3
Merged revisions 2669,2673,2677,2683,2696,2699-2702,2704,2708,2712-2715,2718,2722-2723,2728-2730,2740,2769 via svnmerge from
...
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler
........
r2669 | peter | 2006-02-23 09:31:21 +0100 (Thu, 23 Feb 2006) | 2 lines
* add compiler dir
........
r2673 | peter | 2006-02-23 17:08:56 +0100 (Thu, 23 Feb 2006) | 2 lines
* enabled more code
........
r2677 | peter | 2006-02-24 17:46:29 +0100 (Fri, 24 Feb 2006) | 2 lines
* pe stub and headers
........
r2683 | peter | 2006-02-25 23:13:24 +0100 (Sat, 25 Feb 2006) | 2 lines
* section options cleanup
........
r2696 | peter | 2006-02-26 20:27:41 +0100 (Sun, 26 Feb 2006) | 2 lines
* fixed typecasts
........
r2699 | peter | 2006-02-26 23:04:32 +0100 (Sun, 26 Feb 2006) | 2 lines
* simple linking works
........
r2700 | peter | 2006-02-27 09:44:50 +0100 (Mon, 27 Feb 2006) | 2 lines
* internal linker script
........
r2701 | peter | 2006-02-27 12:05:12 +0100 (Mon, 27 Feb 2006) | 2 lines
* make elf working again
........
r2702 | peter | 2006-02-27 14:04:43 +0100 (Mon, 27 Feb 2006) | 3 lines
* disable dwarf for smartlinking with .a
* fix section start in new .a file
........
r2704 | peter | 2006-02-27 18:30:43 +0100 (Mon, 27 Feb 2006) | 2 lines
* stab section fixes
........
r2708 | peter | 2006-02-28 19:29:17 +0100 (Tue, 28 Feb 2006) | 2 lines
* basic work to merge stabs sections
........
r2712 | peter | 2006-02-28 23:17:48 +0100 (Tue, 28 Feb 2006) | 2 lines
* unload tmodules before linking
........
r2713 | peter | 2006-02-28 23:18:51 +0100 (Tue, 28 Feb 2006) | 2 lines
* fixed stabs linking
........
r2714 | peter | 2006-02-28 23:19:19 +0100 (Tue, 28 Feb 2006) | 2 lines
* show code and data size
........
r2715 | peter | 2006-02-28 23:25:35 +0100 (Tue, 28 Feb 2006) | 2 lines
* unload .stabs from objdata after it is merged
........
r2718 | peter | 2006-03-01 12:24:38 +0100 (Wed, 01 Mar 2006) | 3 lines
* memsize/datasize cleanup
* check for exports/resources when adding module to linker
........
r2722 | peter | 2006-03-03 09:12:20 +0100 (Fri, 03 Mar 2006) | 2 lines
* new TObjSymbol splitted from TAsmSymbol
........
r2723 | peter | 2006-03-03 14:08:55 +0100 (Fri, 03 Mar 2006) | 2 lines
* coff fixes after recent objsymbol changes
........
r2728 | peter | 2006-03-03 22:43:04 +0100 (Fri, 03 Mar 2006) | 2 lines
* fixed coff writer
........
r2729 | peter | 2006-03-04 01:10:32 +0100 (Sat, 04 Mar 2006) | 2 lines
* fix read-only opening
........
r2730 | peter | 2006-03-04 01:11:16 +0100 (Sat, 04 Mar 2006) | 2 lines
* Read edata from DLLs, basic work
........
r2740 | peter | 2006-03-04 21:13:43 +0100 (Sat, 04 Mar 2006) | 3 lines
* deletedef added
* don't remove defs from index when we are already clearing everything
........
r2769 | peter | 2006-03-05 21:42:33 +0100 (Sun, 05 Mar 2006) | 4 lines
* moved TObj classes to ogbase
* ObjSection.SymbolRefs and SymbolDefines list
* DLL importing
........
git-svn-id: trunk@2771 -
2006-03-05 21:10:37 +00:00
peter
45176ea2a8
* split tstringtype for stringdef and stringconstnode
...
to prevent wrong typecasts
git-svn-id: trunk@2276 -
2006-01-13 17:20:27 +00:00
florian
44fb1f1db8
* symbol_end for typed consts
...
git-svn-id: trunk@2269 -
2006-01-12 20:38:22 +00:00
peter
ea6dadb7be
* make widestrings compatible with COM BSTR, the length is now the number
...
of bytes allocated instead of the number of widechars
git-svn-id: trunk@1467 -
2005-10-18 09:45:13 +00:00
peter
c1b002c842
* fix writing of typed const ansistring, the terminating zero was missing
...
git-svn-id: trunk@1349 -
2005-10-10 12:06:09 +00:00
tom_at_work
28381b1287
* new assembler symbol type AT_LABEL needed for PowerPc64 target
...
+ added automatic definition of FPC_REQUIRES_PROPER_ALIGNMENT define for PowerPC64 target
git-svn-id: trunk@1278 -
2005-10-03 22:13:45 +00:00
peter
89297d2c39
* move all stabs ($ifdef gdb) code to dbgstabs
...
git-svn-id: trunk@1255 -
2005-10-02 11:17:05 +00:00
peter
edf553a223
* string constants are now array of char until
...
they are converted to a specific string type
git-svn-id: trunk@1254 -
2005-10-02 11:08:58 +00:00
peter
c3727c29b2
* rename al_code to al_procedures, al_bss/al_data to al_globals
...
* more work for section smartlinking
git-svn-id: trunk@1083 -
2005-09-15 06:51:12 +00:00
peter
26f25c89ee
* use myexit to restore block_type
...
git-svn-id: trunk@1062 -
2005-09-08 05:48:17 +00:00
peter
5c902e40d1
* fix array of pchar after last revision
...
git-svn-id: trunk@924 -
2005-08-22 21:37:59 +00:00
peter
05a628447f
* put typedconsts in own asmlist to prevent mixing
...
array and string data
* added al_rodata
* renamed tasmlist enum names to include al_ prefix
git-svn-id: trunk@899 -
2005-08-17 08:42:52 +00:00
daniel
d05f58b604
* Group asmlists into array to be able to add
...
some of them more comfortably.
* x86_64 compilation was broken, fixed.
* Sparc compilation was broken, fixed.
git-svn-id: trunk@731 -
2005-07-23 13:44:32 +00:00
michael
7449f99d5f
+ Removed all compatibility defines from compiler
...
git-svn-id: trunk@335 -
2005-06-09 21:14:22 +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
e417e34496
* truncate log
2005-02-14 17:13:06 +00:00
florian
af18e7359f
+ allow to take the address of a resourcestring in typed constants
2005-02-02 19:42:19 +00:00
peter
bb7b812beb
* remove multiple typeconvs for procvar
2005-01-24 21:39:03 +00:00
peter
bb32ee0457
* fix interface vtbl optimization
...
* replace ugly pointer construct of ioffset()
2005-01-09 15:05:29 +00:00
florian
bccb02b0de
* typed dyn. array constants can be only nil pointer
2005-01-08 14:05:31 +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
peter
7c0b6e129e
* fixed wrong typecasts
2004-11-09 17:26:47 +00:00
peter
6458bd0ce1
* tvarsym splitted
2004-11-08 22:09:58 +00:00
peter
9b00c7832e
* support > 32bit accesses for x86_64
...
* rewrote array size checking to support 64bit
2004-11-01 23:30:11 +00:00
peter
f02ebed09e
* support @labelsym
2004-11-01 15:32:12 +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
b3e3030e6f
* remove maxlen field from ansistring/widestrings
2004-07-12 17:58:19 +00:00
daniel
bbd7f75dbd
* Compile fix
2004-07-03 14:06:35 +00:00
florian
61cf2984c7
* fixed bootstrapping problems
2004-06-20 20:41:47 +00:00
florian
8a9758c5e2
* logs truncated
2004-06-20 08:55:28 +00:00
peter
0ac4983a9b
* remove obsolete cardinal() typecasts
2004-06-18 15:16:46 +00:00
florian
588e2c38bf
* dwarf branch merged
2004-06-16 20:07:06 +00:00
peter
c96ba04d84
* fixed qword(longint) that removed sign from the number
...
* removed code in the compiler that relied on wrong qword(longint)
code generation
2004-05-23 15:23:30 +00:00
daniel
b721e5872c
* Prepare compiler infrastructure for multiple ansistring types
2004-04-29 19:56:36 +00:00
peter
3379959c50
* block_type is bt_const when parsing typed consts
2004-04-11 10:44:23 +00:00
olle
a7f25327f6
* change AT_FUNCTION to AT_DATA where appropriate
2004-03-18 11:43:57 +00:00
florian
0b0c4a4062
* fixed handling of doubles in a native arm compiler
...
* fixed handling of typed double constants on arm
2004-03-17 22:27:41 +00:00
olle
4fecc1a56f
* big transformation of Tai_[const_]Symbol.Create[data]name*
2004-03-02 00:36:32 +00:00
peter
fa8ec60ee6
* support @@procvar in typed consts
2004-02-26 16:15:23 +00:00
daniel
46d241a666
* Take advantage of our new with statement optimization
2004-02-07 23:28:34 +00:00
Jonas Maebe
980efd582d
+ support for currency typed constants if currency=int64. Warning: does
...
not work properly for extreme values if bestreal <= double
2003-12-29 12:48:39 +00:00
peter
84b1451a34
* tai_const.create_32bit changed to cardinal
2003-12-08 22:34:24 +00:00
Jonas Maebe
9bc4fa13a6
* fixed reversed "got <type 1>, expected <type 1>" error message
2003-11-22 00:32:35 +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
florian
2a178f0d93
* fixed parsing of typed widestring constants with length 1
2003-11-08 10:23:35 +00:00
peter
a28d911c98
* IncompatibleTypes() added that will include unit names when
...
the typenames are the same
2003-10-21 18:16:13 +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
6a8d5eb25d
* NEWRA branch merged
2003-09-03 15:55:00 +00:00
peter
1a2eedd767
* self moved to hidden parameter
...
* removed hdisposen,hnewn,selfn
2003-05-09 17:47:02 +00:00
florian
91bbc7bea3
* error when address of an abstract method is taken
...
* fixed some x86-64 problems
* merged some more x86-64 and i386 code
2003-04-30 20:53:32 +00:00
florian
41da381f1a
* fixed a lot of PowerPC related stuff
2003-04-24 22:29:57 +00:00
olle
a069aadad0
* changed newasmsymbol to newasmsymboldata for data symbols
2003-04-06 21:11:23 +00:00
peter
4be7d9ddeb
* allow nil initialization of dynamic array
2003-03-17 21:42:32 +00:00
peter
dfcb814ca5
* fix uninited var
2003-01-02 20:45:08 +00:00