Commit Graph

44 Commits

Author SHA1 Message Date
Jonas Maebe
ab8f96f4cf * disabled i386 createtempparaloc again because it generates wrong
code in case of nested function calls with lots of arguments

git-svn-id: trunk@2948 -
2006-03-17 22:01:25 +00:00
Jonas Maebe
8a6ebdf274 - disabled loop unrolling for level 3 optimizations since it only causes
crashes (and even if it didn't, on its own it mainly causes code
    bloat)

git-svn-id: trunk@2941 -
2006-03-17 17:42:39 +00:00
peter
b7fe6797bf Merged revisions 2921-2922,2925 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2921 | peter | 2006-03-15 08:35:00 +0100 (Wed, 15 Mar 2006) | 2 lines

  * pass ObjectWriter to ObjectOuput

........
r2922 | peter | 2006-03-15 12:40:30 +0100 (Wed, 15 Mar 2006) | 2 lines

  * refactor asmdata

........
r2925 | peter | 2006-03-15 16:09:39 +0100 (Wed, 15 Mar 2006) | 3 lines

  * add cfi to asmdata
  * move asmlist, asmcfi, asmdata to own unit

........

git-svn-id: trunk@2932 -
2006-03-16 08:52:22 +00:00
tom_at_work
6d9829da14 * fixed compilation
git-svn-id: trunk@2919 -
2006-03-14 20:30:31 +00:00
peter
2888a21593 * list supported optimization options in -i
* support $OPTIMIZATION and $O+

git-svn-id: trunk@2904 -
2006-03-13 11:17:56 +00:00
peter
b6e35a200e * rewrite of optimizer options
git-svn-id: trunk@2901 -
2006-03-13 09:05:50 +00:00
Jonas Maebe
9de2847865 + support for passing parameters via pre-allocated stack space on i386
(override/adjust cgutils.use_fixed_stack to change conditions where
     this is done, currently only activated for darwin-i386)
  * make sure the stack is always aligned to 16 bytes on darwin-i386

git-svn-id: trunk@2840 -
2006-03-10 19:59:44 +00:00
Jonas Maebe
ba6f1e4990 * factered WriteInstruction out of TGNUAssembler into its own class
* put Apple-specific GNU assembler stuff in its own class
  + darwin/x86 support to the assembler writer

git-svn-id: trunk@2818 -
2006-03-09 14:59:04 +00:00
tom_at_work
23fda6dc1c * fixed compilation
git-svn-id: trunk@2802 -
2006-03-07 20:15:26 +00:00
peter
38c0ae73da Merged revisions 2775,2788-2789 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2775 | peter | 2006-03-05 22:43:30 +0100 (Sun, 05 Mar 2006) | 2 lines

  * merge ppu changes to keep ppus the same

........
r2788 | peter | 2006-03-06 12:59:14 +0100 (Mon, 06 Mar 2006) | 2 lines

  * Add TFPList and TFPObjectList

........
r2789 | peter | 2006-03-06 13:01:37 +0100 (Mon, 06 Mar 2006) | 2 lines

  * fix powerpc

........

git-svn-id: trunk@2790 -
2006-03-06 12:04:44 +00:00
tom_at_work
5d6a002de0 * fixed compilation
git-svn-id: trunk@2779 -
2006-03-05 22:26:37 +00:00
tom_at_work
b309574e22 * fixed code generation for -Og switch
* copied createtempparaloc() method from i386 parameter manager to avoid copying for larger value parameters (see 2692)
* do not copy memory if references are equal in g_concatcopy()
* do not emit some strings used for debugging into assembly file in g_concatcopy by default anymore
* simplification of boolean expression in calc_stackframe_size()

git-svn-id: trunk@2694 -
2006-02-26 17:30:49 +00:00
florian
51d98d439e * fixed compilation on 32 bit hosts
git-svn-id: trunk@2636 -
2006-02-19 18:20:48 +00:00
tom_at_work
99cbf815eb * constant loading does not force usage of R12 anymore, fixing tests when regalloc is tight on registers (uses R0 again)
git-svn-id: trunk@2625 -
2006-02-19 12:44:04 +00:00
tom_at_work
88ebc549a6 * some smartlinking fixes for ppc64
* disable generation of TOC entries for constants for now

git-svn-id: trunk@2548 -
2006-02-12 20:37:24 +00:00
Jonas Maebe
4fcc98fbf9 * fixed tlist overflow in some corner cases when fixing up jumps
git-svn-id: trunk@2342 -
2006-01-26 09:54:56 +00:00
tom_at_work
6e290373c8 * div by const now enabled with -O2 (not -O3)
* large integer constants (>2 instructions to load) are put into the TOC as well

git-svn-id: trunk@2233 -
2006-01-08 18:04:44 +00:00
tom_at_work
4e35206d33 * basic ppc64 PIC code support
git-svn-id: trunk@2223 -
2006-01-08 13:28:46 +00:00
tom_at_work
8c8e25353b * reverted changes from 2214, needs to be split into several commits
git-svn-id: trunk@2215 -
2006-01-08 01:03:15 +00:00
tom_at_work
6313a9be7b * basic code generation for dynamic linking code for ppc64
git-svn-id: trunk@2214 -
2006-01-07 22:16:33 +00:00
tom_at_work
3462426b1d * stack frame optimizations
git-svn-id: trunk@2172 -
2006-01-04 23:27:40 +00:00
tom_at_work
4b48a8880f * added support for BI and BO fields for branches
* correct spilling for FP values

git-svn-id: trunk@2143 -
2006-01-03 21:07:39 +00:00
tom_at_work
57b7b72ca4 * ppc64/linux specific compiler patches to improve C parameter passing compatibility
* passes tcalext3 and tcalext4 test programs

git-svn-id: trunk@1984 -
2005-12-18 22:08:13 +00:00
tom_at_work
651f34e27c * ppc64: with -Or the compiler now also generates calls to helper functions in the function prolog/epilog instead of multiple stores/loads
* ppc64: moved function prolog/epilog helper code into startup code
* ppc64: added FPU configuration code in math unit (fixes tw3161)

git-svn-id: trunk@1786 -
2005-11-20 01:20:55 +00:00
tom_at_work
93bb997d8f * ppc64/linux: enhanced varargs support (passes tprintf test now)
* ppc64/linux: some small tweak for small memory locations copy code

git-svn-id: trunk@1778 -
2005-11-17 21:35:01 +00:00
tom_at_work
54dee95053 * removed "+0" offset generation in assembler writer
git-svn-id: trunk@1717 -
2005-11-10 15:16:20 +00:00
tom_at_work
d088695868 * ppc64: moved division by constant optimization from nppcmat to cgcpu unit
* ppc64: cg now also replaces multiplications/divisions by negative powers of two by shifts (and a negate)
* ppc64: replacement of divison by constants now properly check the -O2 compiler switch

git-svn-id: trunk@1662 -
2005-11-05 17:59:14 +00:00
tom_at_work
e4a61f4af1 * a_op_const_reg_reg optimizations
* added some more 64 bit PPC opcodes
* removed last mwpascal references
* added replacement of division/modulo by constant by multiplications and shifts for 64 bit
* general cleanup

git-svn-id: trunk@1648 -
2005-11-04 22:49:05 +00:00
tom_at_work
9228588260 - added handling of OS_NO parameters in a_param_ref
git-svn-id: trunk@1619 -
2005-11-01 21:11:50 +00:00
tom_at_work
2198a6a44a * assembly round and trunc routines for ppc64
git-svn-id: trunk@1601 -
2005-10-26 21:43:54 +00:00
tom_at_work
c5f89d7efd * release old stack pointer register on ppc64 after method prolog
* threading fixes for ppc64
* fixed a_param_ref to respect the size parameter on ppc64
* better stack size calculation for ppc64

git-svn-id: trunk@1599 -
2005-10-26 19:50:17 +00:00
tom_at_work
5520442fc4 * call by register now also takes care of the TOC and environment pointer
* first "optimize for size"-optimization

git-svn-id: trunk@1593 -
2005-10-25 20:12:21 +00:00
tom_at_work
9531293b89 * jumptable support
* fixed cg for loading from addresses with symbol and large offset, but no base register

git-svn-id: trunk@1547 -
2005-10-20 17:33:33 +00:00
tom_at_work
5fcb64f350 * parameter passing is now more ABI compliant
* stack frame size optimization
* optimized (64 bit) constant loading
* some code generator code cleanup

git-svn-id: trunk@1539 -
2005-10-19 23:25:21 +00:00
tom_at_work
0ba960e1bd * added workarounds for some load/store instructions requiring 4 byte aligned addresses
* some cleanup and optimization of 64 bit address loading in the code generator
* small changes to the IDE to make it compile
* stat type update for packages/cdrom compatibility

git-svn-id: trunk@1375 -
2005-10-14 00:00:16 +00:00
tom_at_work
99120a3f2b * fixed -Or cycle for PowerPC64 by adding the missing additional newra methods
git-svn-id: trunk@1359 -
2005-10-12 13:16:02 +00:00
tom_at_work
bfb2c916dc * fixed problem with too large offsets in conditional jumps (see also rev 1161 for the PowerPC code)
* updated sysnr.inc for PowerPC64 from 2.6.11 kernel sources
* fixed SigactionRec sa_flags field sizes, which improves signal handling for PowerPC64 platform

git-svn-id: trunk@1352 -
2005-10-10 23:45:57 +00:00
tom_at_work
9e7d550455 * fixed last commit (1337) which broke some files in the repository
git-svn-id: trunk@1338 -
2005-10-08 17:23:44 +00:00
tom_at_work
f7f0f9c426 * makefile adaption to be able to cycle compiler and RTL on PowerPC64 target
* some fixes for PowerPC64 target in the code generator and the RTL
* stabs generation for PowerPC64 is okay now (untested)

git-svn-id: trunk@1337 -
2005-10-08 15:48:39 +00:00
tom_at_work
b2e1cf2610 * powerpc64 port now (manually) cycles, most test programs in tests/test are fine too
* fixed bug in ncal.pas which in some circumstances treated the hidden length parameter for open arrays as 32 bit integer

git-svn-id: trunk@1303 -
2005-10-05 21:55:25 +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
tom_at_work
3681639a6a - more PowerPC64 fixes; "Hello World" style programs can be compiled and run
git-svn-id: trunk@1209 -
2005-09-27 18:16:49 +00:00
peter
ec4d287fd8 * aktoutputformat removed, add new paraXX vars for target
assembler and debuginfo and use these vars to override
    the defaults for the target after the parameters are read
  * remove not-maintained and tested gdb code

git-svn-id: trunk@1201 -
2005-09-25 21:17:37 +00:00
peter
6bf3269b41 * powerpc64 port from Thomas Schatzl
git-svn-id: trunk@1193 -
2005-09-25 17:19:44 +00:00