Commit Graph

66 Commits

Author SHA1 Message Date
tom_at_work
d112bfbd43 * fixed a_load_subsetreg_reg according to Jonas' remarks
git-svn-id: trunk@4343 -
2006-08-03 21:27:39 +00:00
Jonas Maebe
c25aba7592 * cleaned up subsetreg support (put everything in a record)
* prepared support for elements with arbitrary bit length (as opposed
    to a multiple of 8)

git-svn-id: trunk@4324 -
2006-08-01 20:39:53 +00:00
tom_at_work
de20abf3ec * cr reg fix for ppc64
git-svn-id: trunk@4277 -
2006-07-22 11:04:56 +00:00
tom_at_work
5622a7ae64 * fixed some bugs in a_param_ref due to missing begin/end block markers
git-svn-id: trunk@4224 -
2006-07-16 10:29:53 +00:00
Jonas Maebe
90cacb4cf5 * changed result type of dwarf_reg from byte to shortint to avoid
warning about comparison which can never be true

git-svn-id: trunk@4183 -
2006-07-14 17:25:16 +00:00
tom_at_work
2adcae0cd8 * optimized register-register loading of < 64 bit values (removes superfluous code), similar to 3207 for ppc
* fixed fixref() which did not always treat addresses as 64 bit sizes, resulting in problems using above optimization
* cleanup
* removed assembly fpc_int_real again, has problems with border cases

git-svn-id: trunk@3795 -
2006-06-04 17:35:55 +00:00
tom_at_work
a24a329d1c * fixed record regvar code generation for ppc64 for now
git-svn-id: trunk@3787 -
2006-06-04 12:43:28 +00:00
tom_at_work
9a5885b8d2 * small optimizations for the subsetreg functions
git-svn-id: trunk@3763 -
2006-06-01 20:57:54 +00:00
tom_at_work
129fe92d9e * fixed subregister loading and storing for ppc64
git-svn-id: trunk@3751 -
2006-05-30 21:57:48 +00:00
Jonas Maebe
03302dc7c4 * fixed support for macpas & and | operators: they only work on booleans
now, and always perform short circuit boolean evaluation (also in {$b+})

git-svn-id: trunk@3745 -
2006-05-30 13:02:36 +00:00
Jonas Maebe
6335ce6e45 - reverted previous wrong commit
git-svn-id: trunk@3743 -
2006-05-30 07:37:09 +00:00
Jonas Maebe
b784b2f39e * fixed a_load_subsetreg_reg for loading signed fields (EXTRDI results
in an unsigned number)

git-svn-id: trunk@3739 -
2006-05-29 20:26:06 +00:00
tom_at_work
dba5da67af * initial support for subregister loading (ppc64 specific part only)
+ added EXTRDI and INSRDI opcode
* lots of additional debug code when EXTDEBUG enabled

git-svn-id: trunk@3724 -
2006-05-28 21:02:25 +00:00
tom_at_work
1bd43869d0 * reenabled generation of TOC labels for symbols with a length under a certain threshold (to avoid too long symbols passed to the cg which will get truncated)
* cleanup

git-svn-id: trunk@3674 -
2006-05-25 20:16:25 +00:00
tom_at_work
5240913a80 * cleaner allocation of scratch registers, removed unnecessary cg methods which emitted code using a fixed register
+ generation of lots of additional debug/trace messages with $EXTDEBUG
* code cleanup (intendation)

git-svn-id: trunk@3584 -
2006-05-19 21:27:44 +00:00
Jonas Maebe
a3cb1b1523 + support for "exotic" locations in load_left_right()
git-svn-id: trunk@3556 -
2006-05-17 19:12:00 +00:00
Jonas Maebe
a387be19a0 + a_call_ref for ppc32 and ppc64
git-svn-id: trunk@3392 -
2006-04-30 20:50:37 +00:00
tom_at_work
b46f7259ca * gprof profiling support
* some additional safety checks

git-svn-id: trunk@3290 -
2006-04-20 08:42:56 +00:00
tom_at_work
f31ede0b12 * fixed code generation after recent changes of int_cgsize()
* initial code generation for gprof

git-svn-id: trunk@3271 -
2006-04-18 10:27:11 +00:00
peter
0ec2921bbe * split newasmsymbol to refasmsymbol and defineasmsymbol
git-svn-id: trunk@3057 -
2006-03-27 11:45:18 +00:00
peter
870be04a3f * use dwarf_reg()
git-svn-id: trunk@3046 -
2006-03-26 20:15:32 +00:00
tom_at_work
6d99152f4b * fixed wrong method of disabling stabs debug info in 2956
git-svn-id: trunk@2965 -
2006-03-19 10:54:52 +00:00
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