Jonas Maebe
b57c95043f
+ support overriding tdef/tsym methods with target-specific functionality:
...
o made all (non-abstract) tdef and tsym constructors virtual
o added c*def/c*sym classref types for every (non-abstract) t*def/t*sym
class
o added cpusym unit for every architecture that derives a tcpu*def/tcpu*sym
class from the base classes, and initialises the c*def/c*sym classes with
them. This is done so that the llvm target will be able to derive from
the tcpu*def/sym classes without umpteen ifdefs, and it also means that
the WPO can devirtualise everything because the c* variables are only
initialised with one class type
o replaced all t*def/t*sym constructor calls with c*def/c*sym constructor
calls
git-svn-id: trunk@27361 -
2014-03-29 22:31:55 +00:00
florian
1366498255
+ nf_addr_taken: it marks nodes which address is taken
...
+ check if tnodeflags is 4 bytes or less
* do not do cse on expressions which address is taken
git-svn-id: trunk@26713 -
2014-02-07 20:40:42 +00:00
florian
30352c7f7b
* fix several issues with loop strength reduction to make it working
...
* debugging code for strength reduction
git-svn-id: trunk@26694 -
2014-02-06 20:48:19 +00:00
florian
a0f0d0de40
* make use of the noreturn directive for internalerror
...
* clean up of the internalerror procedure variable in the constexp unit
git-svn-id: trunk@26004 -
2013-11-10 09:01:03 +00:00
florian
d23a5b7c7d
* store break/continue usage in a variable
...
git-svn-id: trunk@25247 -
2013-08-11 21:13:24 +00:00
florian
912268b1b9
* make loop unrolling dependent on the cpu optimization type instead of the instruction set
...
git-svn-id: trunk@25211 -
2013-08-03 20:49:20 +00:00
florian
b262b4d76b
* fix loop unrolling of for in loops
...
git-svn-id: trunk@25209 -
2013-08-02 21:21:14 +00:00
florian
9773b92cbe
* improved for loop unrolling
...
git-svn-id: trunk@22320 -
2012-09-04 21:34:00 +00:00
florian
6c8eed21c4
+ implement auto inlining (-Ooautoinline)
...
+ implement trashing of local variables if subroutine is inlined
* fix some errors releated to interproc. gotos and inlining
+ node_count function
* inline cannot be used with iochecking and safecall calling conventions
* track inherited usage
* don't inline if inherited is used
git-svn-id: trunk@21335 -
2012-05-19 13:30:02 +00:00
florian
092153e7ad
* handle unrolling of for ... downto ... correctly, resolves #15668
...
git-svn-id: trunk@14884 -
2010-02-10 21:08:54 +00:00
florian
c0d4efed2e
* forbid passing derived classes to call by reference parent classes (for objects, this is still allowed), resolves #13135
...
git-svn-id: trunk@13551 -
2009-08-17 21:46:25 +00:00
florian
5e448b47a5
* compilation fixed
...
git-svn-id: trunk@12061 -
2008-11-12 20:42:21 +00:00
yury
b580cbc778
* Removed unused local var.
...
git-svn-id: trunk@12057 -
2008-11-12 18:02:02 +00:00
florian
db196d76c2
+ strength reduction for array accesses inside for loops
...
* export get_mul_size so we can use it for strength reduction
* ensure loop counter is marked as being written
* typos fixed
git-svn-id: trunk@11825 -
2008-09-26 18:23:31 +00:00
florian
8d01c330a1
* ttemprefnode -> ctemprefnode
...
git-svn-id: trunk@11807 -
2008-09-18 21:39:38 +00:00
florian
17d3da7266
* variables where the address is taken could have aliases so they aren't invariant
...
git-svn-id: trunk@11806 -
2008-09-18 19:08:57 +00:00
florian
0b5951fa14
+ first full implementation of induction variable strength reduction
...
git-svn-id: trunk@11805 -
2008-09-18 18:49:09 +00:00
florian
ecd05a1043
+ framework for strength reduction of induction variables
...
+ constant multiplications can be eliminated testwise
git-svn-id: trunk@11803 -
2008-09-18 16:53:36 +00:00
florian
3294c59a73
* renamed optunrol into optloop
...
git-svn-id: trunk@11798 -
2008-09-17 20:21:19 +00:00