florian
b78f9826fb
* call AllocMem instead of GetMem/FillChar
...
git-svn-id: trunk@22095 -
2012-08-15 17:47:15 +00:00
michael
b26797e818
* Fixed memory leak in classes with interfaces
...
git-svn-id: trunk@22094 -
2012-08-15 16:14:09 +00:00
florian
b8ab3d48f6
* fix compilation on non avr/arm architectures
...
git-svn-id: trunk@22093 -
2012-08-15 16:02:36 +00:00
michael
3bc8bbf378
* Fixed to conform to new structures in pastree
...
git-svn-id: trunk@22092 -
2012-08-15 16:00:51 +00:00
florian
e6efbd36ad
* compiler defined cpuflags instead of creating them during system unit compilation
...
git-svn-id: trunk@22091 -
2012-08-15 15:49:11 +00:00
florian
e4f89fe524
+ introduce cpuflags for arm
...
git-svn-id: trunk@22090 -
2012-08-15 15:49:05 +00:00
florian
895aa0d752
* reworked cpuflags for avr
...
+ define cpuflags in options unit so user programs can access them
git-svn-id: trunk@22089 -
2012-08-15 15:48:59 +00:00
michael
9af6f49c02
* Finished try/except statements
...
git-svn-id: trunk@22088 -
2012-08-15 15:02:05 +00:00
sergei
f14e038172
+ Implemented writeReloc_internal method for TElfObjSection.
...
+ TElfSymtab.writeInternalSymbol: added 'aValue' argument, needed for writing dynamic symbols.
git-svn-id: trunk@22087 -
2012-08-15 12:27:32 +00:00
sergei
ec56677927
+ Added method TObjSection.writeReloc_internal to write relocations to given section+offset without need to have a symbol at target location.
...
* Optimized COFF importing code using the new method.
- Don't create .text sections for imported variables.
- Don't create .idata$6 sections for imports by ordinal.
git-svn-id: trunk@22086 -
2012-08-15 12:22:07 +00:00
michael
0801287956
* Adapted tests to use expression objects where needed
...
git-svn-id: trunk@22085 -
2012-08-15 12:21:52 +00:00
michael
06b092280e
* Use expression objects in case and constants
...
git-svn-id: trunk@22084 -
2012-08-15 12:21:22 +00:00
michael
e9a339448a
* Better Except handling
...
git-svn-id: trunk@22083 -
2012-08-15 10:52:21 +00:00
michael
4c47beb7b7
* Reworked raise parsing, now also supports raise X at Addr
...
git-svn-id: trunk@22082 -
2012-08-15 09:01:11 +00:00
tom_at_work
f252fd369e
Tried to reorganize the ARM define mess in rtl/arm/arm.inc. Instead of requiring to enumerate all possible ARM variants each time a CPU feature is used, add a define of the format CPUARM_HAS_XXX and use that. Note that a better solution would be to properly implement the compiler cpuinfo infrastructure, however that is much more work.
...
+ CPUARM_HAS_BX is defined if the CPU supports the BX* instruction
+ CPUARM_HAS_REV is defined if the CPU supports the REV instruction. Note that you still have to check for compiler versions > 2.6.0 since the assembler reader of 2.6.0 does not understand that instruction.
+ CPUARM_HAS_IDIV is defined if the CPU supports the sdiv, udiv instructions. Use of this fixes a bug where previously these instruction were only used for armv7-m, while cortex3m cpus also support it.
+ CPUARM_HAS_LDREX is defined if the CPU supports the ldrex/strex instructions. Use of this fixes a bug with armv7(-a) cpus where this path has not been used.
+ SYSTEM_HAS_KUSER_CMPXCHG is defined if the system (mainly OS) support the kuser_cmpxchg functions. Use of this fixes a bug where ARMHF systems did not use it for synchronization (although ARMHF is armv7+ only, i.e. the LDREX path is used anyway)
git-svn-id: trunk@22081 -
2012-08-14 19:45:03 +00:00
tom_at_work
7b6bcd315f
Pass FPCOPT to fpmkunit and fpmake compilation. This prevents build errors of these programs if the given FPCOPT options of the previously compiled RTL are incompatible to default options. Regenerated associated makefiles.
...
git-svn-id: trunk@22080 -
2012-08-14 19:09:17 +00:00
michael
9635787b5a
* Added functionality to create fpdoc.css from internal copy
...
git-svn-id: trunk@22079 -
2012-08-14 18:47:57 +00:00
michael
4a9d012d3a
* Patch from Reinier Olislagers to update copyright and emit a more friendly message if an input file is not found (bug ID 22639)
...
git-svn-id: trunk@22078 -
2012-08-14 18:27:46 +00:00
tom_at_work
65a4ab399e
Fix use of FPC_OPT to build gparmake. The correct name of the parameter is FPCOPT. Regenerate makefile.
...
git-svn-id: trunk@22077 -
2012-08-13 20:45:39 +00:00
florian
bd47ba6ba4
* the address of complex inline parameters can be hold always in a register
...
git-svn-id: trunk@22076 -
2012-08-13 15:09:11 +00:00
florian
5b90a02e75
* inherit nf_write/nf_modify in tcallnode.replaceparaload also when replacing parameters
...
git-svn-id: trunk@22075 -
2012-08-13 15:06:16 +00:00
florian
ecb037ad79
+ tarminnode.pass_1 to set expectloc correctly
...
git-svn-id: trunk@22074 -
2012-08-13 15:03:35 +00:00
florian
d2aa35e9de
* throw an internal error if code generation depends on expectloc but expectloc and real loc do not match
...
git-svn-id: trunk@22073 -
2012-08-13 15:02:55 +00:00
florian
dd18d0bd4d
* write flags in tnode.printnodeinfo
...
git-svn-id: trunk@22072 -
2012-08-13 14:50:37 +00:00
michael
1b10dfbc26
* Use HTTP delimiters for locations
...
git-svn-id: trunk@22071 -
2012-08-13 11:44:01 +00:00
michael
3418ba156e
* Retry opening session file on error (max 5 times)
...
git-svn-id: trunk@22070 -
2012-08-13 11:43:16 +00:00
marco
b822371d41
* add platform modifiers to all locally defined functions in unix' dos unit.
...
git-svn-id: trunk@22069 -
2012-08-13 10:14:07 +00:00
sergei
45d27ef82e
* Relocating common symbols needs adjusting by symbol size only on DJCOFF targets, not on PECOFF ones.
...
git-svn-id: trunk@22068 -
2012-08-13 09:31:49 +00:00
sergei
de34f58284
* Update instruction segment prefix when copying operands from another instruction, Mantis #18113 .
...
git-svn-id: trunk@22067 -
2012-08-13 04:51:28 +00:00
svenbarth
3ad324ad13
Removed x86 unit from the Makefile.fpc (it's a Unix only unit) and regenerated Makefile.
...
git-svn-id: trunk@22066 -
2012-08-12 13:53:55 +00:00
Jonas Maebe
ed8087c71a
* check with parameters that must be followed by either nothing or a +/-,
...
are indeed never followed by other characters (prevents typos such as
-EnabledFeature instead of -dEnableFeature from simply switching of
linking)
git-svn-id: trunk@22065 -
2012-08-12 13:30:36 +00:00
florian
33f287d320
+ tarminnode.in_smallset making use of tst
...
git-svn-id: trunk@22064 -
2012-08-11 22:10:45 +00:00
florian
c1bca748ee
* factored out tcginnode.in_smallset
...
* indention changed to common compiler style
git-svn-id: trunk@22063 -
2012-08-11 22:07:36 +00:00
tom_at_work
9a82fb9eb4
Fix InterlockedExchange for non-armv6+ ARMV processors. Original InterlockedExchange was not atomic in regards to the other Interlocked* functions, leading to crashes if they were used.
...
Instead of directly using "swp" in InterlockedExchange, use
- kuser_cmpxchg if available (on Linux/armel)
- the fpc global mutex (fpc_system_lock) otherwise
to implement it.
git-svn-id: trunk@22062 -
2012-08-11 19:32:11 +00:00
florian
19debd87cc
* start with a qword aligned frame pointer to enable more ldrd/strd optimizations
...
git-svn-id: trunk@22061 -
2012-08-11 15:12:19 +00:00
florian
371ef7bada
* cover more cases in AlignedToQWord
...
git-svn-id: trunk@22060 -
2012-08-11 15:11:43 +00:00
florian
db7e029574
* strd/ldrd optimization might be only done on dword operations
...
git-svn-id: trunk@22059 -
2012-08-11 15:11:10 +00:00
florian
8c45a909be
+ support ldr/ldr -> ldrd and str/str -> strd optimization where appliable
...
git-svn-id: trunk@22058 -
2012-08-11 11:45:54 +00:00
florian
49246b6263
* make textrec/filerec unpacked, this improves the code significantly on arm etc.
...
git-svn-id: trunk@22057 -
2012-08-10 21:17:50 +00:00
florian
2c122a9bf6
* inherit modification flag from load nodes when creating temp nodes when inlining, dfa/cse need this information
...
git-svn-id: trunk@22056 -
2012-08-10 21:16:54 +00:00
florian
aadf6da14f
* better naming of CPU flag strings
...
git-svn-id: trunk@22055 -
2012-08-09 20:32:18 +00:00
florian
1c2ed53735
* updated comments to reflect latest changes to cse
...
git-svn-id: trunk@22054 -
2012-08-09 20:18:04 +00:00
michael
a43d433081
* Fixed to take expressions into account
...
git-svn-id: trunk@22053 -
2012-08-09 19:31:36 +00:00
michael
647bd0ec1c
* Case statement tests
...
git-svn-id: trunk@22052 -
2012-08-09 19:24:37 +00:00
michael
e4758e3cd1
* Case statement labels are now expressions
...
git-svn-id: trunk@22051 -
2012-08-09 19:24:02 +00:00
florian
4d86d25c6c
* -O4 switch for optimizations which are correct but which might have unexpected effects
...
like field reordering (possible problems cracker classes) or using ebp as normal register (broken
stack traces from dump_stack)
+ niln is also valid in a cse domain
* parameters passed by reference shall have a complexity >1
* load nodes from outer scopes shall have a complexity >1
* better cse debugging
+ more node types added to cse
* consider parameters passed by reference in cse
* take care of cse in parameters in simple cases
git-svn-id: trunk@22050 -
2012-08-09 18:58:54 +00:00
sergei
95535ea845
- Do not create any default object sections. On targets with section-based smartlink these sections remain empty and only cause linker to do useless job of removing them. The same happens when loading object files because duplicate section names are allowed at that time. On targets without smartlink they don't stay empty, but the internal assembler creates sections when required, so not creating initial sections effectively doesn't change anything.
...
git-svn-id: trunk@22049 -
2012-08-09 17:12:39 +00:00
sergei
393f1d58ed
* Fixed register rsi being overwritten. It is used to pass argc into libc_start_main.
...
git-svn-id: trunk@22043 -
2012-08-09 07:34:49 +00:00
sergei
12dc48afbf
* Set errno using a call to seterrno, like it is done for i386 target. This removes most of assembler code together with PIC hacks and makes this part independent of threadvar implementation details.
...
git-svn-id: trunk@22042 -
2012-08-09 06:34:00 +00:00
florian
03071709a9
* the transformation (a or/and b) or/and c into a or/and (b or/and c) can be applied for booleans as well
...
git-svn-id: trunk@22041 -
2012-08-08 21:21:45 +00:00