florian
53d60f02b2
* lying around newline fixes
...
git-svn-id: trunk@13513 -
2009-08-10 18:56:32 +00:00
Jonas Maebe
6505b4f9c5
* reverted rest of r13469 because it causes crashes for linux/ppc64
...
git-svn-id: trunk@13473 -
2009-07-29 20:35:51 +00:00
Jonas Maebe
f265fbe343
* fixed GOT loading for i386 in stubs for external procedures whose external
...
name is (re)defined in the implementation (mantis #14221 )
git-svn-id: trunk@13469 -
2009-07-28 17:28:17 +00:00
florian
f34acc8505
* fixes compilation on i386 after r13410
...
git-svn-id: trunk@13414 -
2009-07-19 17:39:09 +00:00
Jonas Maebe
1f6ec379de
* moved field definitions before method/property definitions (see mantis
...
#13971 )
git-svn-id: trunk@13330 -
2009-06-27 11:27:31 +00:00
Jonas Maebe
dc00a747f4
* make references PIC-safe before pushing them as parameter (mantis #13829 )
...
git-svn-id: trunk@13198 -
2009-05-26 16:22:41 +00:00
Jonas Maebe
c1e327c8c4
* insert register allocation/deallocation information for the exception
...
handling code (g_exception_reason_load() now automatically allocates
the cpu register that it loads). This fixes the bug reported in
http://lists.freepascal.org/lists/fpc-devel/2009-May/016773.html
on i386 with -O2)
git-svn-id: trunk@13105 -
2009-05-06 19:11:54 +00:00
marco
6f1f21c432
* optbase empty skeleton removed with two dependancies. Duplicate unit name caused problems.
...
git-svn-id: trunk@13091 -
2009-05-03 21:31:33 +00:00
Jonas Maebe
9344484ea7
* allocregbetween has to update the "initialregs" parameter, because it
...
can remove regallocs for the allocated register and reinstert them
before already processed instructions, thereby preventing the
peephole optimizer from ever seeing the allocation for this register
(mantis #13612 )
git-svn-id: trunk@13085 -
2009-05-02 22:26:24 +00:00
Jonas Maebe
6165536b5e
+ added {$modeswitch objectivec1}/-Mobjectivec1 mode switch to enable
...
the use of Objective-C 1.0 constructs. Because it is a mode switch, it
can be used cumulatively with every syntax mode. Note that a {$mode xxx}
statement resets all mode switches as well, so you cannot use the
-Mobjectivec1 variant if you have such a statement in a unit. This
modeswitch is currently only enabled for Darwin/PowerPC and Darwin/i386,
as the backend support is not yet implemented for other platforms.
+ implemented selector() statement that can be used to create an Objective-C
selector for the message with the specified *constant* name (in the future,
it will also work for Objective-C method identifiers)
+ added SEL type to the system unit (the selector() statement returns it)
+ added all Objective-C segments to the assembler writers
+ (currently mostly dummy) objc1 unit that is automatically included if the
{$modeswitch objectivec1} statement is used
+ some tests for the selector() statement
git-svn-id: trunk@12870 -
2009-03-08 18:40:32 +00:00
florian
f49f148e01
+ commented why wrappers for cdecl'd methods use subl/call/subl/ret instead of subl/jmp
...
git-svn-id: trunk@12829 -
2009-02-28 20:37:01 +00:00
florian
67d1604c49
* handle interface methods with cdecl modifier correctly, second and final part to resolve #10684
...
git-svn-id: trunk@12828 -
2009-02-28 20:28:33 +00:00
florian
694f563079
* fixed assembler tables for sse4 instructions, resolves #13186
...
git-svn-id: trunk@12787 -
2009-02-24 20:07:11 +00:00
Jonas Maebe
7d459cf12a
* the compiler now explicitly keeps track of the minimally guaranteed
...
alignment for each memory reference (mantis #12137 , and
test/packages/fcl-registry/tregistry1.pp on sparc). This also
enables better code generation for packed records in many cases.
o several changes were made to the compiler to minimise the chances
of accidentally forgetting to set the alignment of memory references
in the future:
- reference_reset*() now has an extra alignment parameter
- location_reset() can now only be used for non LOC_(C)REFERENCE,
use location_reset_ref() for those (split the tloc enum so the
compiler can catch errors using range checking)
git-svn-id: trunk@12719 -
2009-02-08 13:00:24 +00:00
Jonas Maebe
b1c3f76ff9
* changed the supported targets for assembler writers to a set, and
...
(hopefully correctly) limited all assembler writers to only the
OSes they support (mantis #11801 )
git-svn-id: trunk@12622 -
2009-01-28 15:12:43 +00:00
florian
49195b0ac0
* fixes assembling of mov ax,<mem16>
...
* fixes assembling of test <mem8>,reg8; resolves #11786
git-svn-id: trunk@12040 -
2008-11-09 10:24:59 +00:00
Jonas Maebe
53e52ac6a9
* implementation of 32x32->64 multiplication for i386 based on patch
...
by Sergei Gorelkin
git-svn-id: trunk@12028 -
2008-11-06 21:03:10 +00:00
Jonas Maebe
a23630260b
+ "weakexternal" support for imported procedures and variables.
...
the syntax is exactly the same as for "external", except for
the keyword. It is currently only active for Darwin targets.
It should also work at least for Linux targets, but only with
the GNU assembler (which is why it is not activated there)
+ test for this functionality
git-svn-id: trunk@12009 -
2008-11-01 18:38:32 +00:00
Jonas Maebe
4971e432de
* reduced register pressure when indexing arrays with regvars (regvar
...
no longer needs to be copied to a temporary register if it isn't
modified)
git-svn-id: trunk@11777 -
2008-09-14 16:11:22 +00:00
Jonas Maebe
7bfe1f7865
* fixed indentation
...
* fixed use of instruction instance after it has been freed
git-svn-id: trunk@11761 -
2008-09-13 12:20:01 +00:00
florian
e27937106f
- removed obsolete USECMOV define
...
git-svn-id: trunk@11645 -
2008-08-24 12:46:42 +00:00
Jonas Maebe
6697f173b6
* the fact that a procedure is local does not mean that it by definition
...
does not need a GOT pointer (mantis #11852 )
git-svn-id: trunk@11586 -
2008-08-16 08:12:23 +00:00
florian
572fe6282e
* teach peephole optimizer about ror/rol
...
* md5 unit uses system.rol
git-svn-id: trunk@11468 -
2008-07-28 09:50:09 +00:00
yury
0bcaf8845f
* Fixed 'mixed signed/unsigned' warnings.
...
* Suppressed 2 unreachable code warnings.
* Now x86 compiler compiles without warnings and notes! It will be great to keep such state in future...
git-svn-id: trunk@11455 -
2008-07-23 13:16:46 +00:00
yury
491f0fa1d8
* Replaced all user defined warnings by TODO comments to reduce compiler noise.
...
git-svn-id: trunk@11443 -
2008-07-23 11:00:03 +00:00
yury
fd0ed50331
* Removed/commented more unused variables.
...
* Fixed some uninitialized variable warnings.
git-svn-id: trunk@11442 -
2008-07-23 10:48:53 +00:00
yury
6c6bf452ca
* Fixed level 2 comment warnings.
...
git-svn-id: trunk@11441 -
2008-07-23 10:08:48 +00:00
yury
5548824859
* Removed/ifdefed/commented unused local variables.
...
git-svn-id: trunk@11438 -
2008-07-23 09:22:47 +00:00
florian
a15d8778d6
+ create jump tables for case statements on x86-64
...
git-svn-id: trunk@11377 -
2008-07-13 10:26:25 +00:00
Jonas Maebe
73a3507bac
* reverted r11039, it's no good
...
git-svn-id: trunk@11048 -
2008-05-23 07:55:16 +00:00
Jonas Maebe
55d621fea3
* skip mark_InlineStart, mark_InlineEnd and mark_Position markers
...
in getnext/lastinstruction
git-svn-id: trunk@11039 -
2008-05-22 17:29:30 +00:00
Jonas Maebe
53d11b9a06
* fixed para locations at the calleeside for nostackframe assembler
...
routines
git-svn-id: trunk@11023 -
2008-05-21 15:11:37 +00:00
florian
35c0f78642
+ Haiku support by Olivier Coursière based on old BeOS support
...
git-svn-id: trunk@11014 -
2008-05-19 17:33:35 +00:00
Jonas Maebe
3b72bf98b0
* fixed short/smallint add/sub peephole in case of operations with
...
only one operand + documented it by example (mantis #11223 )
git-svn-id: trunk@10828 -
2008-04-27 21:01:52 +00:00
Jonas Maebe
a3b877247c
* don't perform call/jmp into push/jmp in case we're generating
...
pic, as that optimization is invalid in that case
git-svn-id: trunk@10655 -
2008-04-13 17:03:07 +00:00
peter
f7737bebda
* fix parameter allocation for left to right calling conventions
...
git-svn-id: trunk@10597 -
2008-04-02 08:05:31 +00:00
peter
8f239d04b6
* cleanup and simplify the set type handling
...
git-svn-id: trunk@10432 -
2008-03-02 17:48:27 +00:00
Jonas Maebe
f36e5411af
* split cpu64bit compiler define into
...
a) cpu64bitaddr, which means that we are generating a compiler which
will generate code for targets with a 64 bit address space/abi
b) cpu64bitalu, which means that we are generating a compiler which
will generate code for a cpu with support for 64 bit integer
operations (possibly running in a 32 bit address space, depending
on the cpu64bitaddr define)
All cpus which had cpu64bit set now have both the above defines set,
and none of the 32 bit cpus have cpu64bitalu set (and none will
compile with it currently)
+ pint and puint types, similar to aint/aword (not pword because that
that conflicts with pword=^word)
* several changes from aint/aword to pint/pword
* some changes of tcgsize2size[OS_INT] to sizeof(pint)
git-svn-id: trunk@10320 -
2008-02-13 20:44:00 +00:00
yury
ed86757898
* Pass const record parameters by reference for all calling conventions on i386-wince. It is needed to be Windows unit Delphi compatible, since WinAPI functions are cdecl on wince.
...
git-svn-id: trunk@10296 -
2008-02-11 15:12:41 +00:00
Jonas Maebe
058e3762aa
* added missing begin/end
...
git-svn-id: trunk@10260 -
2008-02-10 10:07:55 +00:00
daniel
459382faa8
+ Teach peephole optimizer the cmc/adc trick I used in int_str.
...
git-svn-id: trunk@9799 -
2008-01-19 21:47:37 +00:00
Jonas Maebe
9ec3cc2022
* fixed sign of location.size for divmodn, 64 shlshrn and for muln
...
git-svn-id: trunk@9646 -
2008-01-05 21:35:42 +00:00
Jonas Maebe
ca7650418d
* fixed/added overflow checking in generic unarminusn code + test
...
+ added support for OP_NEG/OP_NOT in tcg64f386.a_op64_ref_reg (needed
for the above)
git-svn-id: trunk@9528 -
2007-12-25 23:52:09 +00:00
Jonas Maebe
6c536dab3e
* added several missing make_simple_ref() calls
...
* removed addr_pic again for darwin, as you have to explicitly code
the relative address using a relsym instead of using an assembler
directive like @GOT there
git-svn-id: trunk@9353 -
2007-11-29 22:06:14 +00:00
peter
cbac667753
* check for eax,edx,ecx,ebx that support 8,16 bit registers in shortint add/sub peephole
...
and update register size of substructor
git-svn-id: trunk@9351 -
2007-11-29 21:16:32 +00:00
peter
59365a6db9
- garbage was being output sometimes instead of source lines when compiling with -al. This is because lastfileinfo and lastinfile were never initialized for MASM writer. This is true for TPPCMPWAssembler, too.
...
- long lines were not wrapped.
- constants of type ait_comp_64bit output incorrectly.
- at end of file, current segment was not closed.
patch from Sergei Gorelkin
git-svn-id: trunk@9331 -
2007-11-25 16:46:19 +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
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
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
defe46ef42
* added missing size suffixes for several sse2 opcodes
...
git-svn-id: trunk@9182 -
2007-11-10 19:57:01 +00:00
florian
965bb41288
* fixed more rex placements
...
git-svn-id: trunk@9069 -
2007-11-02 21:30:43 +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
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
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
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
8f5a4cc514
* more, hopefully correct, x86-64 assembler fixes
...
git-svn-id: trunk@8952 -
2007-10-26 20:44:57 +00:00
florian
c5f492ef50
* fixed assembling of movq mem,xmmreg
...
git-svn-id: trunk@8923 -
2007-10-24 20:45:38 +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
peter
43c2694d50
* fixed REX placement for xmm opcodes
...
git-svn-id: trunk@8850 -
2007-10-18 23:30:35 +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
bb314e5456
* regenerated
...
git-svn-id: trunk@8788 -
2007-10-14 09:32:15 +00:00
florian
5d31cd02a7
* regenerated
...
git-svn-id: trunk@8786 -
2007-10-14 09:04:56 +00:00
florian
342ba323cf
* fixed assembling of cvtsi2ss with rex
...
git-svn-id: trunk@8777 -
2007-10-13 14:53:27 +00:00
peter
9f0ca44c94
* new tf_smartlink_library flag
...
* use create_smartlink[_sections|_library] to check what to
do for smartlinking
git-svn-id: trunk@8715 -
2007-10-01 16:55:08 +00:00
Jonas Maebe
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
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
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
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
peter
399a2a86fa
* fix temp release for 64bit compare
...
git-svn-id: trunk@8557 -
2007-09-18 21:05:40 +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
florian
4151029ee5
+ .fini section support
...
git-svn-id: trunk@8174 -
2007-07-28 08:40:10 +00:00
peter
67e16340be
* revert r8118
...
git-svn-id: trunk@8139 -
2007-07-22 19:59:00 +00:00
florian
447276c5bb
* Jcc reads the flags, this was not in the dat yet, resolves #9278
...
* disabled 4 ops variant of insertq for now
git-svn-id: trunk@8133 -
2007-07-22 16:40:44 +00:00
daniel
21293f5818
+ Add common type integer promotion.
...
- {$intpromotion common_type} or -CIcommon_type switches to common type promotion.
- {$intpromotion native_integer} or -CIcommon_type switches to current behaviour.
- Default in tp mode is common_type, native_integer in other modes
- Compiler can cycle with -CIcommon_type
- Still needs checking on other architectures than i386
git-svn-id: trunk@8118 -
2007-07-21 19:16:24 +00:00
daniel
5ce54c6a20
+ For muln, don't load left operand in register unless necessary.
...
(mul supports memory operands).
git-svn-id: trunk@8110 -
2007-07-21 09:20:33 +00:00
yury
b86574cf36
* Fixed float constants in softfloat mode when compiler was compiled in hardfloat mode on arm-linux host.
...
git-svn-id: trunk@7977 -
2007-07-07 19:19:49 +00:00
Jonas Maebe
b6ccf54ae9
* fixed error in register renaming in case the first changed instruction
...
is an "addl %reg2,%reg1" (was changed into "leal (%reg2,%reg1),%reg2",
now into "leal (%reg1,%reg1),%reg2")
git-svn-id: trunk@7832 -
2007-06-27 18:30:10 +00:00
yury
93e72c2079
* Fixed bug introduced by r7667. Do not release pushed return value be callee for cdecl on win32. It fixes error3 of bug #9098 .
...
git-svn-id: trunk@7734 -
2007-06-19 21:06:44 +00:00
yury
3b7e458f02
* Properly set location of float return value if it is passed as var parameter (it is always happens for safecall functions). It fixes bugs #8523 and #8977 .
...
+ test.
git-svn-id: trunk@7728 -
2007-06-18 23:23:46 +00:00
Jonas Maebe
02adc2b6ab
* fixed calling cdecl routines under win32 which return their result in
...
a structure whose address is passed by the caller (the caller is
responsible there to remove the address from the stack, unlike on
e.g. linux/i386 and darwin/i386) (mantis #9013 )
git-svn-id: trunk@7667 -
2007-06-15 12:48:12 +00:00
daniel
b635d89ffa
* Fix overload selection code.
...
git-svn-id: trunk@7654 -
2007-06-13 20:49:13 +00:00
daniel
9adb202a92
* Rework the constexprint to allow operations from low(int64) to high(qword).
...
+ Some initial work on a formaldef which also carries the typinfo of a parameter.
git-svn-id: trunk@7639 -
2007-06-13 07:41:18 +00:00
florian
c7100799ed
+ forbid usage of $E on targets supporting no fpu emulation
...
- disabled -Cfsoft on i386
git-svn-id: trunk@7625 -
2007-06-10 17:03:26 +00:00
florian
0e96eda236
+ some sse4 instructions supported, resolves #9046
...
git-svn-id: trunk@7613 -
2007-06-09 19:45:06 +00:00
Jonas Maebe
60d424e97d
* another check for register types (should fix new failure
...
of webtbs/tw7161)
git-svn-id: trunk@7510 -
2007-05-29 11:12:37 +00:00
peter
e1132f8fe1
* check register type to not mixup sse registers
...
git-svn-id: trunk@7505 -
2007-05-28 19:12:12 +00:00
florian
a3d906f1ca
- removed several ;;
...
git-svn-id: trunk@7498 -
2007-05-28 15:59:17 +00:00
Jonas Maebe
20206500aa
* don't change a sequence of shifts and sub/adds into a lea() in case
...
the flags are read afterwards (broke shldl/sub/sbb sequence generated
for 64 bit "*2", which appears in bitpacked size calculation)
git-svn-id: trunk@7336 -
2007-05-14 20:37:42 +00:00
daniel
c23bbe24bf
+ Add peoplehole optimization to optimize "smallset+[x]" and "smallset-[x]".
...
git-svn-id: trunk@7188 -
2007-04-29 10:32:18 +00:00
peter
29ffdefacb
* secrel32 relocation support required by dwarf2 under windows
...
git-svn-id: trunk@7172 -
2007-04-25 09:06:36 +00:00
florian
f87e96dfb0
* properly release open array value parameters on x86-64 or if they contain automated types, resolves #8664
...
git-svn-id: trunk@7100 -
2007-04-13 19:20:56 +00:00
florian
d55dbf92d3
* fixed assembling of cvt(t)ss2si
...
git-svn-id: trunk@6918 -
2007-03-18 17:35:22 +00:00
pierre
ce5037920a
+ try to implement smartlink
...
git-svn-id: trunk@6867 -
2007-03-15 00:11:55 +00:00
florian
f4840620f0
* location.size of trunc/round must be OS_S64
...
* fixed assembling of cvt*2si
+ optimized trunc/round for x86_64/sse
* only floats need no type cast for trunc/round
git-svn-id: trunk@6859 -
2007-03-14 20:56:14 +00:00
pierre
c97ea9ceb2
* use qword also for S_Q opsize
...
git-svn-id: trunk@6849 -
2007-03-14 17:10:23 +00:00
pierre
387c5107c0
* try to get a complete cycle with nasm
...
git-svn-id: trunk@6838 -
2007-03-13 23:17:55 +00:00
florian
224da99c63
* regenerated
...
git-svn-id: trunk@6715 -
2007-03-04 19:16:28 +00:00
florian
08f48f5fc9
* completed jrcxz support
...
git-svn-id: trunk@6401 -
2007-02-10 21:14:05 +00:00
florian
a19ed91cc3
* fix for jcxz, jecxz and jrcxz on 64 bit platforms
...
git-svn-id: trunk@6400 -
2007-02-10 21:05:27 +00:00
Jonas Maebe
9813a8708c
* fixed encoding of jcxz
...
git-svn-id: trunk@6398 -
2007-02-10 20:38:38 +00:00
florian
e923c6072d
* handle stack parameters like delphi when using register calling conventions, resolves #8199
...
git-svn-id: trunk@6201 -
2007-01-26 17:38:46 +00:00
pierre
4f35aabebb
+ use new assembler flag: af_no_debug
...
git-svn-id: trunk@6196 -
2007-01-26 05:06:37 +00:00
Jonas Maebe
ee2a4bc8f2
* fixed range errors
...
git-svn-id: trunk@6185 -
2007-01-25 15:19:00 +00:00
Jonas Maebe
c1df4454fe
* cmpxchg8b doesn't have a size suffix
...
git-svn-id: trunk@6164 -
2007-01-24 15:15:04 +00:00
peter
78499f85dd
* symbian support from Felipe
...
git-svn-id: trunk@6051 -
2007-01-18 20:24:10 +00:00
florian
5e2042cff8
* correct assembling of test rm8,reg8
...
git-svn-id: trunk@5972 -
2007-01-14 18:08:37 +00:00
florian
c238bb15d1
* .init section support
...
git-svn-id: trunk@5835 -
2007-01-07 10:03:52 +00:00
Jonas Maebe
1d96dcc50d
* renamed nf_swaped to nf_swapped
...
git-svn-id: trunk@5818 -
2007-01-05 12:47:22 +00:00
florian
6118c3e477
* fixed assembling of movd with 64 bit registers
...
* fixed passing of floats to c varargs
git-svn-id: trunk@5477 -
2006-11-25 20:32:32 +00:00
peter
658c46b903
* remove tdictionary and tindexarray
...
* symtables based on TFPHashObjectList and TFPObjectList
* rename torddef.typ to torddef.ordtype
* rename tfloatdef.typ to tfloatdef.floattype
* rename tdef.deftype to tdef.typ
* remove obsolete browser code, browcol is kept so the ide
can still be compiled
git-svn-id: trunk@5192 -
2006-11-03 00:30:30 +00:00
peter
05183ac829
* AsmSymbolDict changed to FPHashObjectList
...
git-svn-id: trunk@5139 -
2006-11-01 00:22:13 +00:00
florian
ef7bd58c54
* germanism removed (aktfilepos -> current_filepos)
...
git-svn-id: trunk@5099 -
2006-10-30 22:37:31 +00:00
florian
85d63d9fa9
* settings refactored
...
git-svn-id: trunk@5094 -
2006-10-30 18:02:58 +00:00
peter
3078a1927f
* remove ttype
...
* rename old ttype variables *type to *def
* rename resulttypepass to pass_typecheck
* rename pass_2 to pass_generate_code
git-svn-id: trunk@5077 -
2006-10-29 22:19:39 +00:00
florian
e1faef3ec9
* pass variants by addr when using fastcall conventions
...
git-svn-id: trunk@4996 -
2006-10-21 18:03:01 +00:00
florian
185be23d12
* tail recursion is fixed in the mean time, reenabled
...
git-svn-id: trunk@4944 -
2006-10-16 18:26:57 +00:00
florian
de0bf34a10
* recreated
...
git-svn-id: trunk@4908 -
2006-10-14 16:54:21 +00:00
florian
1dd80243e5
* tables recreated
...
git-svn-id: trunk@4899 -
2006-10-14 11:21:41 +00:00
Jonas Maebe
52b3257d9c
* disabled tailrec optimization for -O2 for now since it breaks make all
...
git-svn-id: trunk@4867 -
2006-10-12 09:38:57 +00:00
Jonas Maebe
0541a887b8
* pass record parameters on the stack for mwpascal calling convention
...
(instead of by reference)
git-svn-id: trunk@4866 -
2006-10-12 08:55:11 +00:00
florian
2a54d957b2
* fixed two small errors
...
* supported_optimizerswitches now takes generic flags also into account
git-svn-id: trunk@4865 -
2006-10-11 21:14:47 +00:00
florian
a61abb25cb
* reorganized optimizer switch sets
...
git-svn-id: trunk@4862 -
2006-10-11 18:16:10 +00:00
florian
e8d5dc4ab2
* tailrecursion optimization enabled for for sparc, i386, x86-64 and arm
...
git-svn-id: trunk@4860 -
2006-10-11 16:34:28 +00:00
florian
fb5e396881
+ experimental -Sv option to support vector arithmetics
...
git-svn-id: trunk@4825 -
2006-10-07 21:39:48 +00:00
peter
d07f470b71
* remove ifdef fpc
...
git-svn-id: trunk@4819 -
2006-10-07 13:43:34 +00:00
Jonas Maebe
51259b697b
* more mmx/sse register spilling fixes:
...
* operand read/write info for movaps and movapd
* use "movapd reg,reg" instead of "movaps reg,reg" if appropriate
so the spilling code can spill the correct size to memory
* replace movaps/movapd with movss/movsd when spilling to memory
instead of movq
git-svn-id: trunk@4612 -
2006-09-12 11:07:45 +00:00
peter
d79df4c74a
* 64bit support for shrd
...
git-svn-id: trunk@4541 -
2006-09-03 08:56:10 +00:00
peter
f668e4f012
* fix possible use of invalid tai after an ait_cutobject
...
git-svn-id: trunk@4482 -
2006-08-20 20:25:06 +00:00
Jonas Maebe
cf86412832
* fixed regInInstruction to detect register usages in Ch_ALL
...
instructions whereby the registers are explicitly named in operands
(mainly for unsupported mmx/sse instructions)
git-svn-id: trunk@4240 -
2006-07-17 13:54:49 +00:00
Jonas Maebe
a3a74c3fbe
* fixed interface wrappers for darwin in case they end up in
...
a shared library
git-svn-id: trunk@3980 -
2006-06-27 14:32:14 +00:00
peter
55053a586b
* fix comisd
...
git-svn-id: trunk@3927 -
2006-06-23 21:41:19 +00:00
Jonas Maebe
fc3fb54f7c
* turning on peephole optimizations no longer turns on cse as well
...
* -O3 again performs multiple cse passes
git-svn-id: trunk@3915 -
2006-06-21 18:55:48 +00:00
Jonas Maebe
58703324a9
* fixed issue #6913 (old bug id: #5086 )
...
git-svn-id: trunk@3912 -
2006-06-21 17:11:52 +00:00
peter
b672df519a
* flexible position of REX, required for SSE2 commands
...
git-svn-id: trunk@3906 -
2006-06-20 22:38:30 +00:00
Jonas Maebe
9e57973566
- reverted previous fix, is wrong
...
git-svn-id: trunk@3819 -
2006-06-07 20:52:45 +00:00
Jonas Maebe
d9c1078793
* fixed mantis bug #6913
...
git-svn-id: trunk@3818 -
2006-06-07 19:37:47 +00:00
yury
550626ef34
- Removed need of assembler startup files for wince. Now compiler directly creates .pdata section needed for arm-wince exception handling.
...
git-svn-id: trunk@3764 -
2006-06-02 08:36:25 +00:00
Jonas Maebe
93fba718b9
* proper fix for problem I tried to solve in r3655
...
git-svn-id: trunk@3661 -
2006-05-24 19:44:16 +00:00
Jonas Maebe
d1e262d18c
* fix use of unitialised value if a procedure only has an
...
array of const parameter
git-svn-id: trunk@3655 -
2006-05-24 14:56:11 +00:00
Jonas Maebe
a854918f9a
* the length of a sequence loading a constant in a register is properly set
...
* register contents are fully cleared in clearregcontentsfrom()
git-svn-id: trunk@3654 -
2006-05-24 14:38:35 +00:00
Jonas Maebe
00f401693c
* fixed web bug #5094 . Renaming registers is now done sequentially instead
...
of all at the same time, because otherwise circular renamings could
cause errors
git-svn-id: trunk@3644 -
2006-05-23 17:17:23 +00:00
florian
783b91ba1e
* yasm fix from Yuri Zaporogets
...
git-svn-id: trunk@3631 -
2006-05-22 19:06:31 +00:00
Jonas Maebe
cc7cea1a5d
* always extend parameters < sizeof(aint) to sizeof(aint) for darwin/x86
...
git-svn-id: trunk@3628 -
2006-05-22 10:42:55 +00:00
Jonas Maebe
a1b2701e5f
* if while we are restoring the contents of a register, we encounter an
...
operation which changes a register, clear the contents of all registers
which depend on this register
git-svn-id: trunk@3480 -
2006-05-11 16:46:58 +00:00
florian
a5dfe315ec
* made safecall working, handling not consistent yet though
...
git-svn-id: trunk@3418 -
2006-05-04 22:15:31 +00:00
florian
23e67ee289
+ intel assembler reader for x86-64
...
git-svn-id: trunk@3411 -
2006-05-01 19:56:00 +00:00