Commit Graph

19 Commits

Author SHA1 Message Date
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