Commit Graph

10614 Commits

Author SHA1 Message Date
Jonas Maebe
d8d393e802 - no longer pass "-read_only_relocs suppress" to the darwin linker when
compiling shared libraries as we no longer generate relocations in
    read-only sections

git-svn-id: trunk@9323 -
2007-11-24 16:43:47 +00:00
florian
f6e9d133ab + x86_64 units for lazarus
git-svn-id: trunk@9321 -
2007-11-24 09:21:25 +00:00
Jonas Maebe
b4b069908f - removed some unnecessary cg. prefixes when calling tcg methods
from inside other tcg methods

git-svn-id: trunk@9315 -
2007-11-22 09:03:35 +00:00
Jonas Maebe
80b8494b5c * fixed wrong unaligned() changes
git-svn-id: trunk@9303 -
2007-11-20 12:15:47 +00:00
Jonas Maebe
3b4eba9f86 * fixed handling of unaligned in assignments
git-svn-id: trunk@9302 -
2007-11-20 11:59:15 +00:00
peter
cc77ccb52e * don't use readdata for getbyte/getword/getlongint
git-svn-id: trunk@9300 -
2007-11-19 22:52:58 +00:00
peter
241c65d5ec * optimize fixpath, findfile to not require temp ansistrings
* check for verbosity for V_Tried level messages, patches from Sergei Gorelkin

git-svn-id: trunk@9297 -
2007-11-19 22:24:52 +00:00
peter
cb24c78d4d * typecast to tenumreg before updating usedregs to prevent varset usage, patch from Sergei Gorelkin
git-svn-id: trunk@9296 -
2007-11-19 22:22:25 +00:00
peter
f704ee2d70 * remove duplicate temp allocation for register saving
* cleanup register saving code by using a procinfo flag if registers
    were saved on the stack

git-svn-id: trunk@9293 -
2007-11-18 22:10:10 +00:00
Jonas Maebe
543faa46ad * do not inline functions/procedures called with things like "nil^"
(that can be passed to a const-by-reference or var parameter,
     but leads to errors when inlining)

git-svn-id: trunk@9281 -
2007-11-18 14:29:19 +00:00
peter
05e44101e8 * make call by value stdcall for records and arrays delphi compatible
git-svn-id: trunk@9280 -
2007-11-18 12:53:55 +00:00
Jonas Maebe
9f04aad33e * prefer write({short,ansi,wide}string) over write(chararray) for
constant strings

git-svn-id: trunk@9279 -
2007-11-18 09:56:25 +00:00
Jonas Maebe
8f187bf6e2 * fixed r9243: that change should only be applied in case both the
parasym and the actual parameter  are a shortstring rather than
    when at least one isn't a shortstring

git-svn-id: trunk@9275 -
2007-11-17 19:58:19 +00:00
yury
4e3547c7bf * Improved warning "Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned type instead.":
- check for procedure and class pointers as well;
  - do not warn if typecasted pointer is passed as parameter or directly assigned to a variable. 

git-svn-id: trunk@9264 -
2007-11-16 13:52:19 +00:00
Jonas Maebe
c8f270c556 + darwin/x86_64 gprof support
git-svn-id: trunk@9252 -
2007-11-14 20:47:55 +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
Jonas Maebe
2e9db26750 * truncate constant shortstrings at the callee side if they are passed
to a value parameter with a shorter length, and if they would not be
    implicitly passed by reference (if they are passed by reference, then
    the callee will perform a shortstring assign which will do the length
    truncation). Fixes tarray3 on x86_64

git-svn-id: trunk@9243 -
2007-11-13 20:21:29 +00:00
Jonas Maebe
9f705776c9 * fixed disabling of inlining procedures/functions with nested
procedures/functions

git-svn-id: trunk@9232 -
2007-11-13 18:12:25 +00:00
florian
cfed70d698 * removed garbage at the end
git-svn-id: trunk@9207 -
2007-11-11 21:26:44 +00:00
florian
246ae7b446 o from Karl-Michael Schindler:
* brought german message file up-to-date

git-svn-id: trunk@9206 -
2007-11-11 21:24:55 +00:00
Jonas Maebe
157fc2a3e9 * use -x instead of -s for stripping executables on darwin (-s worked fine on 10.0,
was broken on 10.1, fixed in 10.2 and worked fine till 10.4, and has been
    deprecated/removed in 10.5; conversely, -x has worked all the time, although it
    results in slightly bigger binaries on platforms that also support -s)

git-svn-id: trunk@9204 -
2007-11-11 19:43:41 +00:00
Jonas Maebe
70c0c2ddd9 * all currently supported platforms require that single precision
parameters passed as C-style varargs are upgraded to double
    precision

git-svn-id: trunk@9201 -
2007-11-11 18:01:29 +00:00
florian
a5ccf16016 + disp. var. property setting, resolves #10133 and #9134
git-svn-id: trunk@9189 -
2007-11-11 14:14:05 +00:00
Jonas Maebe
defe46ef42 * added missing size suffixes for several sse2 opcodes
git-svn-id: trunk@9182 -
2007-11-10 19:57:01 +00:00
Jonas Maebe
c9ce918485 * regenerated for darwin/x86_64
git-svn-id: trunk@9181 -
2007-11-10 18:37:19 +00:00
Jonas Maebe
032352d98b + darwin/x86_64 support
git-svn-id: trunk@9180 -
2007-11-10 18:33:09 +00:00
florian
578c18a204 + support of <variant>.<id1>.<id2> ... resolves #9233 and partly #10133
git-svn-id: trunk@9172 -
2007-11-10 10:08:41 +00:00
florian
8075f99ce9 * define for armel fixed
git-svn-id: trunk@9164 -
2007-11-08 21:03:46 +00:00
peter
af9e8b489c * replace : with ; in AddPath
git-svn-id: trunk@9161 -
2007-11-08 08:24:07 +00:00
florian
29766e5d81 + first additions for the arm eabi
git-svn-id: trunk@9157 -
2007-11-07 20:48:32 +00:00
florian
8a2ab85bc2 + armel support with FPC_ARMEL define
+ armel linker script

git-svn-id: trunk@9156 -
2007-11-07 20:45:27 +00:00
florian
7a4c469eb2 * more generic definition of abi define
git-svn-id: trunk@9155 -
2007-11-07 20:44:33 +00:00
florian
ed75834533 + eabi and armeb abi constants
+ abi2str array

git-svn-id: trunk@9154 -
2007-11-07 20:43:31 +00:00
sekelsenmat
6569d491a1 Added symbian target to the compiler messages
git-svn-id: trunk@9149 -
2007-11-07 19:42:55 +00:00
Jonas Maebe
ed7511de58 * safeguard the nf_block_with_exit flag when simplifying blockn and
statementn + test

git-svn-id: trunk@9134 -
2007-11-04 18:33:07 +00:00
Károly Balogh
8674e35f45 * removed a_call_reg hack, not needed after peter's latest fix
git-svn-id: trunk@9130 -
2007-11-04 15:27:31 +00:00
peter
263b7abc6f * check register type also for registers in references so we are
not mixing addressregisters and intregisters on m68k

git-svn-id: trunk@9128 -
2007-11-04 14:24:36 +00:00
Károly Balogh
14f958682c + first attempt to implement a_call_reg
+ various other changes

git-svn-id: trunk@9127 -
2007-11-04 01:40:02 +00:00
florian
6ac5ed6a47 * store character constants converted to shortstrings unaligned
git-svn-id: trunk@9106 -
2007-11-03 16:07:18 +00:00
yury
40c3092b99 * Fixed compilation.
git-svn-id: trunk@9094 -
2007-11-03 09:51:45 +00:00
yury
13d948c07b * Fixed: import Address Table should contain the same data as Import Lookup Table.
* Perform import by name with index as hint, if both import name and import index are specified.
* Fixed import by ordinal when external linker is used.
* Fixed some warnings and notes.

git-svn-id: trunk@9083 -
2007-11-02 23:07:15 +00:00
florian
d9e0f078e1 * continued to play around with package support
git-svn-id: trunk@9075 -
2007-11-02 22:26:43 +00:00
florian
965bb41288 * fixed more rex placements
git-svn-id: trunk@9069 -
2007-11-02 21:30:43 +00:00
peter
676f477ddb * remove obsolete scripts
git-svn-id: trunk@9068 -
2007-11-02 21:21:56 +00:00
florian
4fed8c4ab5 + write aliasnames to ppu as well
+ ppudump updated
* ppu version increased

git-svn-id: trunk@9064 -
2007-11-02 20:50:01 +00:00
Jonas Maebe
e716ac6b6b * give ord->formaldef again a higher precedence than ord->floatdef
(last convert level that is added, needs a more structural
     solution)

git-svn-id: trunk@9057 -
2007-11-02 11:17:11 +00:00
florian
01fd678211 + basic parsing of package files
+ basic implementation of creation of packages

git-svn-id: trunk@9054 -
2007-11-01 23:20:28 +00:00
Károly Balogh
1536e9e65b + de-uglified the previous hack
+ made Amiga syscalls to save/restore the frame pointer (do we really need a frame pointer?)
 + some disabled debug comments (to asm source)
 + compiler is now able to generate some VERY basic, but working Amiga-m68k executables

git-svn-id: trunk@9051 -
2007-11-01 19:31:58 +00:00
Jonas Maebe
e621b30af8 * remove procedures with var/out parameters which are supposed to
be passed a constant expression from the overload candidates

git-svn-id: trunk@9050 -
2007-11-01 16:27:41 +00:00
Károly Balogh
12bcb539e6 + fix(?) stack return address with an ugly hack...
git-svn-id: trunk@9047 -
2007-11-01 16:04:16 +00:00
Károly Balogh
91abb3aeb9 + first (failed) attempt to have a working stackframe generation
git-svn-id: trunk@9040 -
2007-11-01 14:16:17 +00:00
Jonas Maebe
ad5ce1adf4 * fixed a_load_reg_ref: the store size has to depend on the tosize,
not on the fromsize (fixes webtbs/tw10072, and hopefully also
    resolves mantis #8121)

git-svn-id: trunk@9037 -
2007-11-01 13:31:23 +00:00
florian
5bdea6b5b3 * avoid generation of __stklen if not necessary
git-svn-id: trunk@9029 -
2007-11-01 10:28:49 +00:00
Károly Balogh
8562910185 + quick hack to have linker support for amiga/m68k (it produces some kind of binary at least)
git-svn-id: trunk@9024 -
2007-11-01 00:22:47 +00:00
florian
90af7ebf72 * use only windows exceptions for stack checking on win32/win64, resolves #9166
git-svn-id: trunk@9020 -
2007-10-31 23:19:48 +00:00
yury
22c1f6381d * Fixed cross CPU cycle after changes in rev. 8911.
git-svn-id: trunk@9018 -
2007-10-31 22:44:25 +00:00
Károly Balogh
b91c0756c4 + made m68k to compile system unit again
git-svn-id: trunk@9017 -
2007-10-31 22:33:00 +00:00
florian
e3a0f3d303 * updates from Ido Kanner
git-svn-id: trunk@9016 -
2007-10-31 19:55:37 +00:00
Jonas Maebe
82a0749970 * prefer non-matching orddef conversions to orddef-to-pointer conversions
(mantis #10002) and also to orddef-to-real conversions
    (delphi-compatible). More tests and fixes will follow later.

git-svn-id: trunk@9015 -
2007-10-31 17:20:37 +00:00
Jonas Maebe
df2ecd14f5 * fixed comparisons of orddefs with fourcharcodes in macpas mode + test
git-svn-id: trunk@9014 -
2007-10-31 15:11:13 +00:00
Jonas Maebe
68570e5471 * save/restore true/false label when secondpassing arrayconstructor
elements (mantis #10072)

git-svn-id: trunk@9013 -
2007-10-31 12:37:35 +00:00
peter
ee479f31a1 * remove duplciate m68k from ALLTARGETS
git-svn-id: trunk@8999 -
2007-10-30 07:15:48 +00:00
florian
7f4c387841 o new BeOS patch by Olivier Coursiere:
* correctly define the stack size for BeOS,
  + implement a minimum nl_langinfo function to correctly initialize WideString support
  + add fgl unit in the BeOS RTL makefile
  * SysOSAlloc now return nil when the system can not allocate the asked memory,
  * HAS_SYSOSFREE is no more defined with an empty implementation under BeOS. This was preventing FPC to reuse memory.
  + there is now a basic implementation of CheckPointer under BeOS.

git-svn-id: trunk@8994 -
2007-10-29 19:00:32 +00:00
Jonas Maebe
8d8ba9a583 * fixed pic reference loading for non-darwin i386 platforms after
r8657

git-svn-id: trunk@8993 -
2007-10-29 19:00:15 +00:00
peter
a0984505b2 * regenerated to fix fpc detection on non-i386
git-svn-id: trunk@8991 -
2007-10-29 16:34:18 +00:00
peter
324b1732ab * regenerated to update dependencies
git-svn-id: trunk@8988 -
2007-10-29 09:07:18 +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
florian
c3475dddc0 * handle case ranges properly for unsigned types with a non-zero base, resolves #10009
git-svn-id: trunk@8974 -
2007-10-28 17:06:02 +00:00
florian
1e618b499d * fixes unaligned load_ref_reg on little endian arm
git-svn-id: trunk@8972 -
2007-10-28 15:30:50 +00:00
florian
0b83cb5761 * align locations where mm registers are stored to be preserved
git-svn-id: trunk@8970 -
2007-10-28 14:09:38 +00:00
florian
19b79468ad * store/load mmx registers properly
* sse registers can be stored/loaded aligned on x86-64

git-svn-id: trunk@8969 -
2007-10-28 14:08:57 +00:00
florian
82c7896d8d * more ins. dat issues popped up, did I mention I start to hate it :(?
git-svn-id: trunk@8968 -
2007-10-28 14:08:04 +00:00
florian
c1d62172fe * the saga continues, fixed previously broken assembler table entries
git-svn-id: trunk@8967 -
2007-10-28 13:01:58 +00:00
florian
9d88b1d9ef * x86-64 fixed
git-svn-id: trunk@8963 -
2007-10-28 08:45:48 +00:00
florian
f32831c44a * fixed assembling of fisttp of sse3 instruction set
+ sse3 optimized trunc() using fisttp
+ -Cfsse3 for x86-64

git-svn-id: trunk@8962 -
2007-10-27 20:50:46 +00:00
florian
46e1587395 * another bunch of assembler fixes, win64 builds again
git-svn-id: trunk@8957 -
2007-10-27 19:49:53 +00:00
florian
3cadba6010 + create target directory before starting ins. dat. creation
git-svn-id: trunk@8956 -
2007-10-27 19:40:01 +00:00
florian
00d6a03b2c + default code now preserves mm registers
* save|restore_standard_registers => save|restore_registers

git-svn-id: trunk@8954 -
2007-10-27 12:02:28 +00:00
florian
3a630340be * fixed m68k compilation and put it in fullcycle
git-svn-id: trunk@8953 -
2007-10-27 11:24:50 +00:00
florian
8f5a4cc514 * more, hopefully correct, x86-64 assembler fixes
git-svn-id: trunk@8952 -
2007-10-26 20:44:57 +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
Jonas Maebe
920a626c17 * mark darwin as case sensitive, because the dircache isn't always used
anymore (the dircache masks the effects of case-sensitive file
    systems on targets marked as case-aware)

git-svn-id: trunk@8946 -
2007-10-26 13:01:01 +00:00
Jonas Maebe
327c5935f0 * add all implicit units (system, objpas, variants, cmem, ...) using
their name in all lower case, so the compiler doesn't waste time
    searching for System.ppu/System.pas/System.pp/... on case-sensitive
    file systems

git-svn-id: trunk@8945 -
2007-10-26 12:36:38 +00:00
Jonas Maebe
71c314c550 * Only start caching a directory once more than 20 lookups have been
done in it, to avoid caching very large current directories (such as
    those of the testsuite) without reason. It would be better if that
    decision were based on a fraction of the total number of entries in
    each directory, but that information doesn not appear to be available
    in a cross-platform way

git-svn-id: trunk@8938 -
2007-10-25 20:30:04 +00:00
Jonas Maebe
81c5abfb72 * don't add target_info.unit_env to the unit search path
if it's not set/empty

git-svn-id: trunk@8931 -
2007-10-25 19:30:48 +00:00
peter
c8ed392469 * defstates doesn't affect any crc
git-svn-id: trunk@8927 -
2007-10-25 18:13:03 +00:00
florian
c5f492ef50 * fixed assembling of movq mem,xmmreg
git-svn-id: trunk@8923 -
2007-10-24 20:45:38 +00:00
peter
273bfffe5b * store defstates in ppu, this field keeps the info what
is generated for a def so it can be reused, e.g. dwarf debuginfo

git-svn-id: trunk@8920 -
2007-10-23 21:50:10 +00:00
peter
a724d80e81 * debuginfo initialized per unit
git-svn-id: trunk@8918 -
2007-10-23 18:19:17 +00:00
peter
e10c75ee6e * fix relative path writing
git-svn-id: trunk@8915 -
2007-10-23 17:38:54 +00:00
peter
a0ebdcf820 * enable regvar for -O2
git-svn-id: trunk@8910 -
2007-10-22 16:50:09 +00:00
peter
d74bd34a91 * fix 32bit truncation in type determination of constant operands
git-svn-id: trunk@8909 -
2007-10-22 16:36:41 +00:00
Jonas Maebe
0aba0acdf6 * fixed widechar to shortstring conversion after r8898 (webtbs/tw7758)
git-svn-id: trunk@8908 -
2007-10-21 22:58:17 +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
Jonas Maebe
d2279d55d6 * restored outputting the stabs for local variables and parameters
which was accidentally disabled in r8878
  * move "end of function" stab past all stabs for the function (except
    for the Darwin "size" stab), like gcc does

git-svn-id: trunk@8905 -
2007-10-21 21:19:48 +00:00
florian
1cb5d2a603 * some missing make_simple_ref calls added, resolves #8948
git-svn-id: trunk@8904 -
2007-10-21 20:19:04 +00:00
florian
c219b1f753 * fixed/enabled andl/addl/... xx,reg1 orl reg1,reg1 setxx/jxx/cmovxx optimization
git-svn-id: trunk@8902 -
2007-10-21 19:54:09 +00:00
florian
ae79ef2cb5 * don't range pointers converted to arrays, resolves #8191
git-svn-id: trunk@8900 -
2007-10-21 19:05:06 +00:00
florian
7878f0feb3 * made all fpc_*_to_shortstr helpers a procedure, resolves #8580
git-svn-id: trunk@8898 -
2007-10-21 17:33:18 +00:00
Jonas Maebe
35cb2b9c2b * fixed placement of "size" stab for Darwin
git-svn-id: trunk@8878 -
2007-10-21 11:39:52 +00:00
Jonas Maebe
053540e89e * improved gcc library path detection for cross-compilation on Linux
x86_64/i386 systems (patch from C. Western, mantis #9699)

git-svn-id: trunk@8875 -
2007-10-21 10:51:58 +00:00
Jonas Maebe
1121002c7c * generate PIC by default for darwin/ppc64
git-svn-id: trunk@8873 -
2007-10-21 10:36:05 +00:00
Jonas Maebe
ff3b455a59 * make PIC generation default on Darwin (ppc and i386; ppc64 will be
done in next commit to ease merging)

git-svn-id: trunk@8872 -
2007-10-21 10:34:01 +00:00
Jonas Maebe
45b7358d81 + PIC support for darwin/ppc64
* added {$PIC+} for darwin to all library tests

git-svn-id: trunk@8868 -
2007-10-20 20:14:45 +00:00
florian
c77267e01f * more div n^2 optimization
git-svn-id: trunk@8867 -
2007-10-20 18:02:55 +00:00
florian
c62d72f98c * write rtti correct for currency being emulated by int64
git-svn-id: trunk@8865 -
2007-10-20 17:42:53 +00:00
florian
c57f44d75b + div 2^n optimization for arm
git-svn-id: trunk@8864 -
2007-10-20 17:42:29 +00:00
micha
bae0251549 * fix big endian arm loading (fixes issue #8752)
git-svn-id: trunk@8862 -
2007-10-20 14:31:08 +00:00
florian
4b172f5973 * made rtti for dyn. arrays more delphi compatible, resolves #9464
git-svn-id: trunk@8853 -
2007-10-19 20:27:45 +00:00
peter
43c2694d50 * fixed REX placement for xmm opcodes
git-svn-id: trunk@8850 -
2007-10-18 23:30:35 +00:00
peter
daf320225b * strip ./ prefixes and / suffixes from paths
* compile unit name requires (relative) path prefix otherwise the debugger
    thinks that there is also a copy of the file in the current directory

git-svn-id: trunk@8847 -
2007-10-18 22:53:39 +00:00
peter
658d9fcc92 * reset subregister before writing mm register names
git-svn-id: trunk@8846 -
2007-10-18 21:52:04 +00:00
peter
ad944fd198 * move x86_64 specific int_to_real conversion to nx64cnv
* fix x86_64 code for none loc_register/loc_reference location

git-svn-id: trunk@8844 -
2007-10-18 20:46:44 +00:00
peter
bfca4e67fa * -CO option to check for possible integer overflows
git-svn-id: trunk@8842 -
2007-10-18 19:55:22 +00:00
Jonas Maebe
2db3d54b2e * support for -Cg- to disable pic code
git-svn-id: trunk@8841 -
2007-10-18 18:23:03 +00:00
peter
a6eb5d839b * allow types in interfaces
git-svn-id: trunk@8840 -
2007-10-18 07:09:36 +00:00
peter
1e123d66ba * improved generics
git-svn-id: trunk@8838 -
2007-10-18 00:24:05 +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
83bab3b071 + documented -XR in the help pages
* specified OSes to which -Xr applies

git-svn-id: trunk@8834 -
2007-10-17 19:37:32 +00:00
Jonas Maebe
3155b650a1 * pass "-syslibroot sysrootpath" to the darwin linker if -XRsysrootpath
is used (mantis #9953)

git-svn-id: trunk@8833 -
2007-10-17 19:25:06 +00:00
peter
9ca132c61b * look in main source dir instead of loaded_from unit dirs. The loaded_from dir is normally
already searched by the unit search path. And it prevented overriding the path where to
    look first for a unit. See bug #9664

git-svn-id: trunk@8828 -
2007-10-16 20:55:24 +00:00
florian
7229dcfdcb * setup a proper symtable stack before parsing the generic declaration itself, resolves #9419
git-svn-id: trunk@8820 -
2007-10-15 19:43:01 +00:00
Jonas Maebe
c03f19fa50 * in case of "movzbl %dl,%edx" etc, %edx depends on its previous value.
regloadedwithnewvalue() gave the wrong answer for this in case
    candependonprevvalue was false (caused a wrong optimization in the
    space() function of the rtl)

git-svn-id: trunk@8808 -
2007-10-14 20:22:23 +00:00
florian
f7b0abffec o BeOS patch by Olivier Coursiere:
* reenable creating shared object using the libc based rtl. I have also added gc-sections support.

git-svn-id: trunk@8806 -
2007-10-14 18:37:00 +00:00
florian
9ab1a1c550 * allow mla to take 4 operands, resolves #9461
git-svn-id: trunk@8801 -
2007-10-14 18:08:49 +00:00
florian
00fef0fdd0 * allow the usage of fields of parent classes for property readers/writers, resolves #9095
git-svn-id: trunk@8799 -
2007-10-14 17:54:00 +00:00
Jonas Maebe
564d93bab8 * quoted a bunch of variables
git-svn-id: trunk@8793 -
2007-10-14 12:26:16 +00:00
Jonas Maebe
66520db151 * fixed in case the fpc binary is not in the PATH
git-svn-id: trunk@8792 -
2007-10-14 12:19:52 +00:00
Jonas Maebe
dc71827e2e * procedure version of fpc_copy to avoid errors with {$x-} (mantis #9918)
git-svn-id: trunk@8790 -
2007-10-14 10:55:40 +00:00
Jonas Maebe
8ed15c96bb - removed COMPPROCINLINEFIXED define and ifdefs (fixed in 2.2.0)
git-svn-id: trunk@8789 -
2007-10-14 09:44:18 +00:00
florian
bb314e5456 * regenerated
git-svn-id: trunk@8788 -
2007-10-14 09:32:15 +00:00
florian
6eff22d466 * remove disassembler hint \331 from comisd, it causes rex to be
generated too early. rex must be generated after the 0x66 prefix.
  There might be more problems like this which must be fixed.

git-svn-id: trunk@8787 -
2007-10-14 09:32:01 +00:00
florian
5d31cd02a7 * regenerated
git-svn-id: trunk@8786 -
2007-10-14 09:04:56 +00:00
florian
6d53d3b4cd * fixed assembling of comisd with rex, there are probably more similiar fixes necessary, must be checked first
git-svn-id: trunk@8785 -
2007-10-14 09:04:45 +00:00
florian
f66916fc95 * fixed calculation of fpu resources
git-svn-id: trunk@8779 -
2007-10-13 19:39:25 +00:00
florian
342ba323cf * fixed assembling of cvtsi2ss with rex
git-svn-id: trunk@8777 -
2007-10-13 14:53:27 +00:00
florian
0907f3c73b * regenerated
git-svn-id: trunk@8774 -
2007-10-12 16:30:51 +00:00
florian
29084acefd * moved pre-configured tools to unused shift key combinations
git-svn-id: trunk@8773 -
2007-10-12 16:30:36 +00:00
florian
fa0507ec2c * fixed compilation on arm in extdebug mode
git-svn-id: trunk@8771 -
2007-10-12 16:14:49 +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
0ebc1e920a * allow modifying lvalues obtained by dereferencing read-only properties,
both via regular pointers and via classes (mantis 9498)

git-svn-id: trunk@8755 -
2007-10-09 13:08:36 +00:00
Jonas Maebe
83d162f5fd * regenerated for darwin/ppc64
git-svn-id: trunk@8744 -
2007-10-08 08:33:03 +00:00
florian
36f7d56e91 + fpcfg.inc target
git-svn-id: trunk@8741 -
2007-10-07 17:57:48 +00:00
florian
6b8e54cff9 * fixed compilation
git-svn-id: trunk@8740 -
2007-10-07 17:52:14 +00:00
florian
a5429afeb0 * fixed optimizer options for ide configuration creation
git-svn-id: trunk@8739 -
2007-10-07 17:31:29 +00:00
florian
6e5ff9b825 * hack around the -intconst hack in pexpr when recording tokens, resolves #9471
git-svn-id: trunk@8734 -
2007-10-06 14:33:57 +00:00
peter
c767df348f * idata must be aligned on 4 bytes to prevent a corrupt
idata2 section where the entries are always 20 bytes

git-svn-id: trunk@8725 -
2007-10-02 18:41:47 +00:00
peter
488c06d275 * don't reuse emptyint
git-svn-id: trunk@8724 -
2007-10-02 18:41:07 +00:00
Jonas Maebe
e0a45eaf28 * r8717 for ppc64 (fixed compilation after r8715)
git-svn-id: trunk@8720 -
2007-10-02 08:31:04 +00:00
micha
89b5825029 * only use ld -T in case of cross-link (-XR), because not all platforms have complete link script yet
git-svn-id: trunk@8718 -
2007-10-01 21:10:51 +00:00
Jonas Maebe
d766707278 * fixed compilation after r8715 (+ aasmbase to uses clause)
git-svn-id: trunk@8717 -
2007-10-01 20:01:41 +00:00
peter
1e28adac60 * there can be a tai_stab between lock/rep and the next opcode
git-svn-id: trunk@8716 -
2007-10-01 19:23:49 +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
micha
c3e587355d * fix default dynamic linker location for 64 bit targets in linux
git-svn-id: trunk@8707 -
2007-09-30 21:20:04 +00:00
Tomas Hajny
cd82fd376f * workaround for yet another #%$#@#^ EMX LD.EXE bug (link.res path must not be quoted)
git-svn-id: trunk@8706 -
2007-09-30 21:11:10 +00:00
peter
9715eceee7 * fixed expectloc setting for x86_64
git-svn-id: trunk@8704 -
2007-09-30 21:02:33 +00:00
peter
76b23821e1 * missing recalculation of relative constant
* if aligntype=1 then no alignment fillsize guessing is required

git-svn-id: trunk@8701 -
2007-09-30 20:28:41 +00:00
florian
655ac519d4 * fixed compilation for x86-64
git-svn-id: trunk@8698 -
2007-09-30 15:30:00 +00:00
micha
0625040eba + add -XR switch for target root file system with libs (also used for C lib type detection)
git-svn-id: trunk@8695 -
2007-09-30 15:00:54 +00:00
florian
f290d5195d * line ending properties set
git-svn-id: trunk@8685 -
2007-09-29 22:28:27 +00:00
florian
0ebbbd5380 * spelling mistakes fixed
git-svn-id: trunk@8684 -
2007-09-29 22:26:33 +00:00
Jonas Maebe
3a60a28283 * don't try to add current_procinfo.got to used_in_proc if it's a
virtual register
  * always add EBX to used_in_proc in case pi_needs_got, because it's
    currently always used due to the geteipasebx call
  * don't explicitly free the PIC register in the exitcode because
    then the assembler optimizer assumes the load restoring it (ebx)
    can be safely removed

git-svn-id: trunk@8683 -
2007-09-29 20:24:51 +00:00
Jonas Maebe
0a606b308d - removed unused nested do_generate_code procedure from read_proc
git-svn-id: trunk@8678 -
2007-09-29 10:28:40 +00:00
Jonas Maebe
b9752680a5 * fixed crashes when combining -Cg with -g or -pg due to a missing
restore of lr in leaf procedures in that case (Darwin-only)

git-svn-id: trunk@8675 -
2007-09-28 23:27:16 +00:00
Jonas Maebe
993ec01a76 * use the gcc jumptable scheme for all ppc targets instead of only for
darwin

git-svn-id: trunk@8674 -
2007-09-28 23:00:58 +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
Vincent Snijders
bc7e54c3f0 * search preprocessor binary and add it as command line parameter for windres, so that the cpp doesn't need to be on the path
git-svn-id: trunk@8670 -
2007-09-28 19:53:19 +00:00
Jonas Maebe
c84744b27f * fixed a_jmp_name() for darwin/i386 (go via a stub)
* fixed g_external_wrapper for darwin/i386 (both with and without pic,
    by using a_jmp_name(), because the darwin jump stubs can always
    be called directly)

git-svn-id: trunk@8669 -
2007-09-28 14:12:46 +00:00
Jonas Maebe
559bb6226e * don't try to translate the got register if it's NR_NO (fixes
regression of webtbs/tw3402 on linux/ppc64 after r8651)

git-svn-id: trunk@8668 -
2007-09-28 11:15:16 +00:00
peter
b5fb7120b8 * fixed length calculation of leb128 constants
git-svn-id: trunk@8666 -
2007-09-27 22:40:38 +00:00
peter
c19217f846 * only for jump instructions we need to look at the relative
offset of an symbol

git-svn-id: trunk@8664 -
2007-09-27 20:10:30 +00:00
Jonas Maebe
e81d4b737f * give a build-time error when trying to cross-compile the compiler from
non-i386 to i386 because that will result in internalerrors later anyway

git-svn-id: trunk@8662 -
2007-09-27 13:22:51 +00:00
Jonas Maebe
d7c4fdbed5 * added maxfpuregs constant to fix compilation after r8655
git-svn-id: trunk@8658 -
2007-09-26 22:00:29 +00:00
Jonas Maebe
3266f4e483 + Compiler support for pic on darwin/i386. The i386 rtl still needs
to be made pic-safe (mainly accesses to the global default8087cw)
  * At the same time also made the non-pic code abi-compliant (access
    external data via indirect symbol pointers etc)

    Darwin/i386 also puts the got into a virtual register (like
    Darwin/ppc), a.o. because the register allocator fails to colour
    a routine in aasmcpu.pas if we take away ebx from it.

git-svn-id: trunk@8657 -
2007-09-26 21:42:27 +00:00
peter
4492ee39c5 * remove firstpasscount
git-svn-id: trunk@8656 -
2007-09-26 21:13:32 +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
7e5e13223e * also count references to relsymbols
git-svn-id: trunk@8654 -
2007-09-26 20:31:41 +00:00
Jonas Maebe
b103605bc3 * added comment clarifying why g_indirect_sym_load doesn't have to
care about PIC

git-svn-id: trunk@8653 -
2007-09-26 18:39:14 +00:00
Jonas Maebe
9750e49d5a * fixed x86 compilation after r8651
git-svn-id: trunk@8652 -
2007-09-26 17:25:38 +00:00
Jonas Maebe
335bc9fd46 + PIC support for darwin/ppc32 (-Cg works now, no regressions in test
suite compiled with -Cg compared to without -Cg)
  + support for using a virtual register as PIC/got base register
  * moved got loading code from ncgutil to cgobj/cgcpu (can't test whether
    it didn't break anything under linux/i386, because "make cycle OPT=-Cg"
    was already broken due to the *prt*.as -> si_*.pp changes)

git-svn-id: trunk@8651 -
2007-09-26 16:41:32 +00:00
Jonas Maebe
70c2414daa * split off sec_rodata_norel from sec_rodata, and only put constant data
without relocations in sec_rodata_norel. It should be possible to make
    this new section read-only on all platforms, although currently it
    is only done for darwin, and for non-pic code written using the
    -Aas assembler writer.

    Most platforms also have a special section for "constant but with
    relocations" data, but such a section is currently only used for
    Darwin (others still use plain .data sections for that, like they
    did before)

git-svn-id: trunk@8650 -
2007-09-26 15:49:01 +00:00
Jonas Maebe
2de2b6e17f * changed darwin/ppc32 jumptable code to be the same as the darwin/ppc64
code, because that's also what gcc does in all cases and it's pic-safe

git-svn-id: trunk@8643 -
2007-09-25 17:56:23 +00:00
Tomas Hajny
e4fe4e740c * usedircache reenabled
git-svn-id: trunk@8629 -
2007-09-24 05:58:10 +00:00
Jonas Maebe
0cbcf95ff2 * fixed compilation on non-x86 after r8617
git-svn-id: trunk@8628 -
2007-09-23 21:21:17 +00:00
Jonas Maebe
2bb0dced62 * optimized code for jumptables (same as for ppc now)
* put jump tables in const section for darwin/i386

git-svn-id: trunk@8627 -
2007-09-23 21:15:59 +00:00
Jonas Maebe
83624822c3 * moved and changed format of N_OSO stab to be the same as under gcc
* no longer generate the DEBUGSTART/INFO/END/TABLE for Darwin as it
    is not needed there and those symbols sometimes confuse the linker

git-svn-id: trunk@8626 -
2007-09-23 21:00:30 +00:00
florian
4cd15058df * take care of the used fpu instruction set when saving/restoring function results on x86
git-svn-id: trunk@8617 -
2007-09-23 14:23:31 +00:00
Jonas Maebe
3f81a4ed65 * make code page name parsing case insensitive (mantis #8930)
git-svn-id: trunk@8610 -
2007-09-22 20:54:49 +00:00
Jonas Maebe
b79e4ff3f0 * fixed typo that broke non-i386 compilation after r8603
git-svn-id: trunk@8609 -
2007-09-22 20:46:45 +00:00
Jonas Maebe
ecd2445602 + segment register support in g_concatcopy (should fix #9667, but I
can't test since I don't have Dos/Windows -- at least the changes
    don't break Linux/i386)

git-svn-id: trunk@8608 -
2007-09-22 20:10:56 +00:00
florian
4d57395a12 * indoniesan language update by Zaenal Mutaqin
git-svn-id: trunk@8606 -
2007-09-22 19:43:48 +00:00
Jonas Maebe
56f8424af6 * no longer remove AsmBlockStart and AsmBlockEnd markers from
assembler blocks in procedures marked as inline. I have no idea
    why that was done, but it was the case already since a long time
    and caused a compiler crash when compiling tests/test/opt/tretopt1
    (because it caused the assembler optimizer to process such
    assembler blocks, while their operand order is not guaranteed to
    be the AT&T one as expected by the optimizers)

git-svn-id: trunk@8604 -
2007-09-22 19:01:44 +00:00
Jonas Maebe
93aad97c22 * Also take into account the node complexity of parameters to determine
the order in which they are evaluated (except for LOC_REFERENCE
    parameters on i386, because the code generator expects them in their
    original order). This saves quite a lot of spilling and uses of
    non-volatile registers when the parameters themselves also contain
    calls

git-svn-id: trunk@8603 -
2007-09-22 17:22:17 +00:00
Jonas Maebe
b4b715f213 * make sure tai_align.calculatefillbuf no longer destroys the fillsize
field, because it can still be read afterwards

git-svn-id: trunk@8602 -
2007-09-22 13:01:30 +00:00
Jonas Maebe
1e5fee5c6f + callparan support in node_complexity()
git-svn-id: trunk@8601 -
2007-09-22 10:02:36 +00:00
tom_at_work
c6d42528a2 * linker script: keep got and toc sections together; allows use of -Cg (PIC) in large programs (e.g. compiler) on powerpc64/linux
git-svn-id: trunk@8591 -
2007-09-21 00:05:51 +00:00
florian
8db40851c0 * fixed some crashes
git-svn-id: trunk@8588 -
2007-09-20 22:28:54 +00:00
peter
4d48f2c6ff * move systems_darwin constant to correct location
git-svn-id: trunk@8580 -
2007-09-20 21:08:08 +00:00
tom_at_work
37695af02b * added missing assignment check when searching for a symbol in a class, fixing bug #9673
* test program for above

git-svn-id: trunk@8579 -
2007-09-20 20:35:35 +00:00
peter
4525df9ea0 * nf_is_funcret node flag added
* remove ti_is_funcret, use new node flag instead
  * check for funcret node in doreplace instead of funcretsym

git-svn-id: trunk@8578 -
2007-09-20 20:24:30 +00:00
peter
eb7aedc285 * fixed overflow
git-svn-id: trunk@8577 -
2007-09-20 20:23:26 +00:00
Jonas Maebe
2146ad614c * fixed toperator5 after r8558. The inlining logic did not take into
account that an unmodified value parameter's address could also be
    passed as the address of the complex return value (and thus be modified
    indirectly after all)

git-svn-id: trunk@8570 -
2007-09-20 18:27:59 +00:00
peter
2652a0c416 * added get_local_or_para_sym to search in parast and localst
for self and vmt. The new function uses the owner of procdef
    instead of the parsing symtablestack used by searchsym

git-svn-id: trunk@8568 -
2007-09-19 22:37:49 +00:00
tom_at_work
73b88f4d46 * constantified hardcoded minimum stackframe size required by the (powerpc64/linux) ABI
git-svn-id: trunk@8567 -
2007-09-19 20:55:47 +00:00
tom_at_work
b0bb3f94a7 * improve powerpc64/linux stub for external procedures in units: also consider GOT change in call to this external procedure
* refactored above mentioned stub code generation, allowing the CG to define a cpu specific method for this task by overriding new g_external_wrapper() method

git-svn-id: trunk@8566 -
2007-09-19 20:41:39 +00:00
Jonas Maebe
9049f845f4 * avoid writing the stabs for a child class before those of a parent
class in case the parent class has a field with as type the (forward
    defined) child class, because this crashes gdb
  + (interactive) test for this

git-svn-id: trunk@8565 -
2007-09-19 16:37:49 +00:00
peter
582fa79494 * don't overwrite cai_align with tai_align_abstract
* check that tai_align is used and not tai_align_abstract

git-svn-id: trunk@8563 -
2007-09-19 15:41:47 +00:00
Jonas Maebe
4d1c4091ba + added pm_preprocess support to foreachnode
* preprocess rather than postprocess the replaceparaloads in ncal
    when inlining, because after r8558 a node is now sometimes replaced
    by a tree which still contains this same node (so postprocess
    causes endless recursion in those cases)

git-svn-id: trunk@8561 -
2007-09-19 09:17:57 +00:00
peter
79ca4b28a8 * fix non-x86 compile after r8558
git-svn-id: trunk@8559 -
2007-09-18 22:16:28 +00:00
peter
e0cf015159 * refactor function result handling
* rename methodpointerinit/done to callinitblock/callcleanupblock
  * moved checks in callnode to separate functions
  * funcretnode is now always a simple node instead of a block of
    statements
  * funcret and methodpointer are generated/optimized only in pass_1 so
    a conversion from calln to loadn is much easier
  * function result assignments are much more often optimized to use the
    assignment destination location instead of using a temp

git-svn-id: trunk@8558 -
2007-09-18 22:12:07 +00:00
peter
399a2a86fa * fix temp release for 64bit compare
git-svn-id: trunk@8557 -
2007-09-18 21:05:40 +00:00
pierre
d7a1ec8e49 Use AllFilesMask fro RTL or define it
git-svn-id: trunk@8550 -
2007-09-18 14:33:58 +00:00
Tomas Hajny
3db626873b * first part of cfileutl cleanup
git-svn-id: trunk@8533 -
2007-09-17 21:20:37 +00:00
peter
58e9fc0368 * only freetemp when there were registers saved
git-svn-id: trunk@8531 -
2007-09-17 20:52:51 +00:00
peter
2f044481ae * release temp when downgrading fpuregister value
git-svn-id: trunk@8530 -
2007-09-17 20:52:24 +00:00
peter
e10c55d73c * invalid typecast
git-svn-id: trunk@8526 -
2007-09-17 19:40:36 +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
tom_at_work
1fa32dffef * remove additional dot for import name of external function. Makes tprocext compile and run for powerpc64 (stub still not fully working, due to missing GOT loading in stub).
git-svn-id: trunk@8518 -
2007-09-16 21:32:29 +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
620ceac903 * result for functions returning a managed type must be initialized and loaded, fixes #9704
git-svn-id: trunk@8512 -
2007-09-16 18:55:15 +00:00
florian
0a50052802 * allow <const. node> -> <struct. type> type casts for internal type cast nodes, this is required by the softfloat code generator, it was forbidden by rev. 8369
git-svn-id: trunk@8504 -
2007-09-16 11:53:05 +00:00
florian
bd4bb505b3 * put Charlie's writeln debugger between DEBUG_CHARLIE conditional compilation symbols
git-svn-id: trunk@8503 -
2007-09-16 11:43:04 +00:00
florian
b4da246668 + printnode shortcut for lazy people
git-svn-id: trunk@8501 -
2007-09-16 10:47:28 +00:00
florian
abfdda6129 * small m68k cleanups
git-svn-id: trunk@8500 -
2007-09-16 10:21:17 +00:00
Jonas Maebe
4f7106eded * sparc compiles again
git-svn-id: trunk@8495 -
2007-09-16 09:14:21 +00:00
Jonas Maebe
d64eb811ab * fixed compilation after r8349
git-svn-id: trunk@8491 -
2007-09-15 07:21:56 +00:00
pierre
4116f79a75 * Do not use disk cache on go32v2 system
Same as rev 8488 in fixes_2_2_0_dos

git-svn-id: trunk@8489 -
2007-09-14 21:58:43 +00:00
florian
039b513d93 * pass classes and interfaces by value if const is used, resolves #9674
git-svn-id: trunk@8484 -
2007-09-14 19:26:09 +00:00
Károly Balogh
0c6f533ba3 + made m68k compiler to compile again
git-svn-id: trunk@8467 -
2007-09-13 22:30:27 +00:00
florian
1b7aeb568c * setup proper starting value when optimizing away a loop, resolves #9096
git-svn-id: trunk@8443 -
2007-09-12 19:41:36 +00:00
peter
0fda1126b5 * fix invalid typecast
git-svn-id: trunk@8435 -
2007-09-11 22:28:39 +00:00
peter
1d387c935d * small typecheckpass wrapper for recursion
git-svn-id: trunk@8434 -
2007-09-11 22:26:36 +00:00
peter
68245771cc * fix invalid typecast
git-svn-id: trunk@8432 -
2007-09-11 22:13:31 +00:00
florian
b984b2227f * improved constant loading for arm
git-svn-id: trunk@8429 -
2007-09-11 19:28:48 +00:00
peter
fcfe1b24b4 * prevent overflow in record size
git-svn-id: trunk@8428 -
2007-09-11 18:12:28 +00:00
peter
b36a06e4d4 * use regular ref_incr/ref_decr for related interface assignments
instead of fpc_intf_assign. This allows optimization by reusing
    the left of the assignment for function return

git-svn-id: trunk@8427 -
2007-09-10 16:48:33 +00:00
peter
6b8a5e56b6 * no refcount needed for all constants instead of only stringconst
git-svn-id: trunk@8426 -
2007-09-10 16:41:29 +00:00
peter
5f4b89903c * use callnodeflag to check if the result of a function is used
git-svn-id: trunk@8425 -
2007-09-10 16:40:40 +00:00
peter
2c10fb7e7d * use fpc_decr_intf and zeroing for finalizing of interfaces
git-svn-id: trunk@8424 -
2007-09-10 16:40:03 +00:00
florian
25883c18c3 * updates by Karl-Michael Schindler
git-svn-id: trunk@8423 -
2007-09-09 19:49:07 +00:00
Jonas Maebe
288a538df5 * don't allow starting new virtual trees in TP-style objects + test
* fixed bug in whlpview.pas where such an new tree was unintentially
    started

git-svn-id: trunk@8422 -
2007-09-09 14:58:55 +00:00
peter
eefd81094e * remove old_append_str
git-svn-id: trunk@8421 -
2007-09-09 14:31:17 +00:00
peter
4b5a599309 * remove -gg and -gd options
* minor capitalization fixes from bug #9640

git-svn-id: trunk@8420 -
2007-09-09 14:24:30 +00:00
peter
8fcd3169d8 * remove -gd, use -gw instead
git-svn-id: trunk@8419 -
2007-09-09 14:22:11 +00:00
peter
db98f1eecb * indenting of node names
git-svn-id: trunk@8418 -
2007-09-09 14:03:31 +00:00
Jonas Maebe
523b7b84cd * properly set the "current compilation directory" (all included files
are relative to this directory, otherwise include dirs appear twice
    in some paths)

git-svn-id: trunk@8417 -
2007-09-09 13:51:30 +00:00
Jonas Maebe
488cfa3c32 + -go<x> switch for debugging options (some global switches could be
moved to it)
  + -go[no]dwarfsets switch to [disable]/enable generation of dwarf set
    information, as this breaks gdb < 6.5 (used to be disabled in the
    compiler by an ifdef, still off by default)

git-svn-id: trunk@8414 -
2007-09-09 09:27:49 +00:00
Jonas Maebe
9888e674cc * upped recordalignmax for darwin/ppc and darwin/ppc64 a bit
git-svn-id: trunk@8413 -
2007-09-08 22:52:12 +00:00
Jonas Maebe
42ff6fc5bb * enabled tail recursion optimization for ppc
git-svn-id: trunk@8412 -
2007-09-08 22:47:34 +00:00
Jonas Maebe
0567329343 * the "external alignment" (i.e., that of their starting addresses) of
record variables is now independent of their packrecords setting
    (except for packrecords C, which already calculated a reasonable
    alignment). This means that e.g. a packed record consisting of two
    pointers will be aligned at sizeof(pointer) normally. The internal
    alignment of the individual fields of packed records obviously did
    not change, also not if those fields are records themselves.
  * The size of records without any packing atributes is also padded to
    become a multiple of this improved alignment calculation, which
    means that the size of such records may change after this patch.
    Always explicitly specify a packing for records which are used for
    data storage/transmission if you want to have a consistent layout.

git-svn-id: trunk@8409 -
2007-09-08 18:13:28 +00:00
Jonas Maebe
70d94ade58 * replaced uses of -1 as C_alignment with the symbolic constant name
* some reformatting of ppc-specific code to be the same as the
    surrounding code

git-svn-id: trunk@8408 -
2007-09-08 15:26:55 +00:00
peter
703158292b * fix high value in pointer to array conversion
git-svn-id: trunk@8407 -
2007-09-08 15:25:25 +00:00
Jonas Maebe
91629f810f * better error messages for non-overloadable operators:
* only suggest = if the user tried to overload <>
    * suggest ** if the user tried to overload ^ (mantis #9606)
    * no suggestion otherwise
   (instead of always suggesting '=')

git-svn-id: trunk@8402 -
2007-09-08 10:49:16 +00:00
Jonas Maebe
b02fd37fbe * removed some unused variables
git-svn-id: trunk@8399 -
2007-09-08 08:45:12 +00:00
Jonas Maebe
666d156e8e * disabled inlining when passing a refcounted parameter typecasted to
a non-refcounted type to a procedure, as this is incompatible with
    the inlining process

git-svn-id: trunk@8391 -
2007-09-07 10:40:26 +00:00
Jonas Maebe
22f616d6af * treat procvardef parameters the same as records (fixes webtbs/tw9141)
* fixed some issues with 16 byte parameters on both ppc and ppc64

git-svn-id: trunk@8389 -
2007-09-06 17:35:50 +00:00
Jonas Maebe
e1aefdbac5 * Improved escape analysis so the improved tretopt no longer fails.
The downside is that because it is context-insensitive, several
    (correct) optimizations which were performed in the past no longer
    are now (and while some new ones are done now, the downside is bigger
    -- but at least the code should be correct in all cases now)

git-svn-id: trunk@8385 -
2007-09-05 13:29:22 +00:00
peter
0a9b94ca92 * save and restore aktobjectdef
git-svn-id: trunk@8384 -
2007-09-04 18:31:20 +00:00
peter
b513ebe9c6 * missing not
git-svn-id: trunk@8383 -
2007-09-04 18:30:57 +00:00
peter
8c24a15e26 * allow -l-
git-svn-id: trunk@8382 -
2007-09-04 18:29:58 +00:00
Jonas Maebe
11cb2a5614 * moved the setting of many target-specific defines to
TOption.TargetDefines and call it before parsing the config file,
    so extra defines like UNIX and WINDOWS are already defined while
    parsing the config file (mantis #9450)

git-svn-id: trunk@8371 -
2007-09-03 18:24:07 +00:00
Jonas Maebe
c10b375615 * give an error for high(ansistring) and high(widestring)
(mantis #9579)

git-svn-id: trunk@8370 -
2007-09-03 16:37:24 +00:00
Jonas Maebe
1ee8207ffa * fixed mantis #9522: no longer allow typecasting ordinal constants
to complex types (caused a lot of internal errors later on, and
    was also Delphi-incompatible)

git-svn-id: trunk@8369 -
2007-09-03 15:55:26 +00:00
Jonas Maebe
df84ca49b4 * fixed tests/cg/opt/tretopt, and also in more cases
perform the transformation of x:=f(hiddencomplexresult, ..)
    -> f(x, ...) (the compiler now performs some very
    conservative escape analysis for such types)

git-svn-id: trunk@8361 -
2007-09-02 21:27:37 +00:00
Jonas Maebe
cc0bd74ea0 - removed unused variable after div-by-zero simplify patch
git-svn-id: trunk@8359 -
2007-09-02 21:06:50 +00:00
Jonas Maebe
30e618ccb6 * fixed typecast error in last char/widechar/widestring patch
git-svn-id: trunk@8358 -
2007-09-02 20:29:26 +00:00
marco
6f9c7ede62 * fixed bug #9577 using short boolean eval. While fixing also fixed next IF.
git-svn-id: trunk@8357 -
2007-09-02 19:22:04 +00:00
Jonas Maebe
cadcfa76d8 * optimized TLinkedList.clear so it can use regvars for everything in
its loop (helps a lot on ppc)

git-svn-id: trunk@8354 -
2007-09-02 16:16:25 +00:00
Jonas Maebe
c7a5b0cf33 * forgot to commit (-CF<x> support)
git-svn-id: trunk@8351 -
2007-09-02 07:49:50 +00:00
Jonas Maebe
21abdd2f4e + support for specifying the minimal precision for floating point
constants. The default is currently 32 bits/single, which corresponds
    to the old behaviour (constants which cannot be exactly represented
    in the default/chosen precision will also still be automatically
    upgraded to higher precision). Supported constructs:
   * Command line switch -CF<x>
   * Compiler directive {$MINFPCONSTPREC <x>}
  whereby in both cases <x> can be default, 32 or 64. 80 is not supported
  because there is no generic way to figure out whether the current target
  actually supports 80 bit precision floating point calculations while
  parsing the command line switches (pbestreal can still change in case of
  win64 or -Cfsse2)

git-svn-id: trunk@8349 -
2007-09-01 19:38:27 +00:00
Jonas Maebe
12575526da * also generate an implicit exception frame in case only the function
result is refcounted, since it may need to be finalized in case of
    an exception (mantis #9385)

git-svn-id: trunk@8347 -
2007-09-01 14:18:09 +00:00
Jonas Maebe
c5b3180f5f * save/load LinkOtherFrameworks to/from ppu files
git-svn-id: trunk@8344 -
2007-08-31 17:03:33 +00:00
Jonas Maebe
ac22ff09da * detect division by zero in tmoddiv.simplify (mantis #9499)
git-svn-id: trunk@8341 -
2007-08-30 17:21:29 +00:00
Jonas Maebe
b1631b6918 * fixed wrong uninitialized warnings with passing array elements
as out-parameters

git-svn-id: trunk@8337 -
2007-08-29 20:23:59 +00:00
Jonas Maebe
e4487e628d * fixed overload choosing error on 64 bit
git-svn-id: trunk@8327 -
2007-08-29 06:30:38 +00:00
yury
1159ee9744 * Small improvement to previous commit.
git-svn-id: trunk@8325 -
2007-08-28 21:06:15 +00:00
yury
614dbe6a8c * Fixed inclusion of multiple resource files with icons or cursors. Patch by Sergei Gorelkin modified by me to reduce memory usage. Bug #9459.
git-svn-id: trunk@8324 -
2007-08-28 20:54:32 +00:00
Jonas Maebe
5bc156efea * always demote type conversions which cannot represent part of the
source value to convert_l3, instead of only those with a destination
    type whose size is < source size (like Delphi) + test -> fixes
    toperator6 along with a host of wrong tordconst typeconversions in
    the compiler sources themselves (although most are harmless)

git-svn-id: trunk@8323 -
2007-08-28 19:38:40 +00:00
Jonas Maebe
0bfce99477 * fixed bug in ppc jumptable generation for case statements with
negative cases caused by wrong automatic type conversion from
    longint to unsigned tconstexprint (+ test for such jump tables)
  * fixed darwin/ppc64 jumptables in case of jmptablenorange

git-svn-id: trunk@8311 -
2007-08-26 11:15:14 +00:00
michael
95c712faa1 * Escaped some TeX special characters in documentation
git-svn-id: trunk@8305 -
2007-08-25 13:33:46 +00:00
Jonas Maebe
399201ad7d * removed rodata support for ppc64 again because it doesn't work on
linux/ppc64. Added explanation why it doesn't work and what's needed

git-svn-id: trunk@8304 -
2007-08-24 17:19:52 +00:00
Jonas Maebe
30bc89cfe5 * fixed dependency checking for source files in subdirectories relative
to the makefile location + regenerated all Makefiles
  * hopefully fixed fpmkunit dependencies

git-svn-id: trunk@8297 -
2007-08-22 07:04:23 +00:00
Jonas Maebe
2b91a9ef37 + jumptable support for darwin/ppc64
git-svn-id: trunk@8285 -
2007-08-14 17:32:24 +00:00
Jonas Maebe
eddc507a13 * disallow widechar sets (Delphi 7 compatible, and were handled wrongly
by FPC previously)
  * tbs/tb0474 now fails -> renamed to tbf/tb0201 (+ new test tbf/tb0202)

git-svn-id: trunk@8284 -
2007-08-14 14:27:59 +00:00
Jonas Maebe
eec25e454d * slightly optimized ppc jumptable code (one compare+jump replaced
by a subtraction)

git-svn-id: trunk@8283 -
2007-08-14 14:17:09 +00:00
Jonas Maebe
3a7ad5212d * removed some instructions from the list which considers r0 as 0
git-svn-id: trunk@8282 -
2007-08-14 14:15:35 +00:00
Jonas Maebe
1c71bb36a1 * also check for valid min/maxlabel range for jumptable in case
of cs_opt_size

git-svn-id: trunk@8281 -
2007-08-14 13:58:56 +00:00
Jonas Maebe
fc53d14e58 * also enable .rodata for ppc64
git-svn-id: trunk@8278 -
2007-08-13 15:02:39 +00:00
Jonas Maebe
d73e79f163 * fixed regression of webtbs/tw4254: if a constant (wide)string can't be
converted to a pchar at compile time, remove the cstring_to_pchar node
    because it expects a stringconstn in pass_generate_code

git-svn-id: trunk@8275 -
2007-08-13 09:13:07 +00:00
Jonas Maebe
815cd2b39d + support for widestring manager based widechar conversions
(widechar<->char, widechar<>*string), based on patch from
    Rimgaudas Laucius (mantis #7758)
  * no longer perform compile-time widechar/string->char/ansi/
    shortstring conversions if they would destroy information
    (they can't cope with widechars with ord>=128). This means
    that you can now properly constant widechars/widestrings
    in source code with a {$codepage } set without risking that
    the compiler will mangle everything afterwards
  * support ESysEINVAL return code from iconv (happens if last
    multibyte char is incomplete)
  * fixed writing of widechars (were converted to char -> lost
    information)

git-svn-id: trunk@8274 -
2007-08-12 20:01:08 +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
a8191abd16 * fixed parsing of "rcl/rcr rm,imm" (mantis #9025)
git-svn-id: trunk@8272 -
2007-08-12 13:50:52 +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
Jonas Maebe
097c2db374 * make sure warnings/hints in set_varstate are always given at the
correct position

git-svn-id: trunk@8269 -
2007-08-12 13:18:39 +00:00
Jonas Maebe
3f701c96d4 * explicitly check for stringconstn next to stringdef in nadd, because
a stringconstn is often an arraydef. The result is that they again
    get the same typeconversion behaviour as string variables, which is
    important in case of overloaded operators (#9021/#9026)

git-svn-id: trunk@8268 -
2007-08-12 11:31:19 +00:00
Jonas Maebe
9c90a93932 * fixed bug which caused SSA to be less effective for integer
registers on 64 bit cpus

git-svn-id: trunk@8253 -
2007-08-09 11:57:52 +00:00
yury
e7ef9757c9 * Corrected comment.
git-svn-id: trunk@8252 -
2007-08-09 10:33:18 +00:00
Jonas Maebe
e205481027 * fixed sparc bootstrap
* use -Av9 assembler option so it accepts the memory barrier opcodes

git-svn-id: trunk@8244 -
2007-08-08 09:48:37 +00:00
Jonas Maebe
98ad33a0c7 + added lwsync instruction to the compiler
* fixed compilation of ReadDependencyBarrier

git-svn-id: trunk@8243 -
2007-08-08 09:15:48 +00:00
micha
d95b9082bb * add memory barrier prototypes + implementation for i386 and sparc + use lwsync for powerpc64
git-svn-id: trunk@8240 -
2007-08-07 20:37:08 +00:00