Commit Graph

10519 Commits

Author SHA1 Message Date
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
peter
fcb37c4fa4 * peephole added for non-longint:=non-longint+X
git-svn-id: trunk@9329 -
2007-11-25 14:32:59 +00:00
Jonas Maebe
0c06fddb8f * fixed compilation
git-svn-id: trunk@9328 -
2007-11-25 10:20:54 +00:00
sekelsenmat
8476d0af2c Adds symbian arm target.
git-svn-id: trunk@9327 -
2007-11-24 22:04:59 +00:00
Jonas Maebe
0ac6e82c1f * fixed handling of directories with spaces for LdSupportsNoResponseFile-
targets (a.o. darwin) in case no ppas.sh is generated (need to generate
    a temporary script in that case as well to use the IFS trick)
  * fixed exit code checking of ld when using IFS trick (have to check it
    before restoring IFS, otherwise we check the "error result" of this
    restoration, which will always be 0)

git-svn-id: trunk@9325 -
2007-11-24 18:06:01 +00:00
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