Commit Graph

10827 Commits

Author SHA1 Message Date
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
61dbf89bdb * set successor properly for for-nodes
+ CalcDefSum

git-svn-id: trunk@11804 -
2008-09-18 18:33:43 +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
Jonas Maebe
6b473862cf * give an error stating that you have to use the latest released compiler
to build 2.3.1 since the unicode branch merge

git-svn-id: trunk@11795 -
2008-09-16 21:59:15 +00:00
tom_at_work
fbbbf33be1 * removed superfluous masking of rotation count for rol/ror inlines
git-svn-id: trunk@11789 -
2008-09-15 19:37:47 +00:00
florian
cd6b57c733 * fixed constant char to unicodestring conversion
git-svn-id: trunk@11779 -
2008-09-14 17:19:20 +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
florian
2e89b30e86 * fixed wrongly written system.$unicodetype type definition
* improved code generation for unicodestrings

git-svn-id: trunk@11776 -
2008-09-14 15:22:32 +00:00
tom_at_work
3a4940e9c2 * fixed compilation with -dEXTDEBUG after adding ROL/ROR internal opcodes
git-svn-id: trunk@11774 -
2008-09-13 20:37:43 +00:00
Jonas Maebe
597622d313 * moved the forwardchecksyms back to symbase (but the main functionality
remains in symtable) to simplify (and fix) its memory management

git-svn-id: trunk@11772 -
2008-09-13 19:59:21 +00:00
tom_at_work
8a5a6db065 * rol/ror inlines for powerpc/powerpc64 (only for 32/64 bit operands for now)
git-svn-id: trunk@11770 -
2008-09-13 16:29:42 +00:00
florian
9fb21f5c9b * target flags for x86_64-freebsd fixed
* use external assembler on x86_64-freebsd for now because dwarf doesn't work with the internal one

git-svn-id: trunk@11769 -
2008-09-13 15:50:32 +00:00
florian
844c05ca2e * exports need pic on x86_64-freebsd
git-svn-id: trunk@11768 -
2008-09-13 15:46:33 +00:00
florian
3417a6e790 * line breaks fixed
git-svn-id: trunk@11764 -
2008-09-13 14:51:48 +00:00
Jonas Maebe
0b815a6fff - removed global "resolving_forward" variable (was no longer used)
* moved forward type checking from pdecl/symbase to symtable/symsym

git-svn-id: trunk@11763 -
2008-09-13 12:28:55 +00:00
Jonas Maebe
bed6a0faa9 * fixed memory leaks
git-svn-id: trunk@11762 -
2008-09-13 12:20:23 +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
b178b08ba7 Merged revisions 11665-11738 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/unicodestring

........
  r11665 | florian | 2008-08-30 13:30:17 +0200 (Sat, 30 Aug 2008) | 1 line
  
  * continued to work on unicodestring type support
........
  r11666 | florian | 2008-08-30 19:02:26 +0200 (Sat, 30 Aug 2008) | 2 lines
  
  * expectloc for wide/ansi/unicode strings is LOC_CONSTANT or LOC_REGISTER now
........
  r11667 | florian | 2008-08-30 20:42:37 +0200 (Sat, 30 Aug 2008) | 1 line
  
  * more unicodestring stuff fixed, test results on win32 are already good
........
  r11670 | florian | 2008-08-30 23:21:48 +0200 (Sat, 30 Aug 2008) | 2 lines
  
  * first fixes for unix bootstrapping
........
  r11683 | ivost | 2008-09-01 12:46:39 +0200 (Mon, 01 Sep 2008) | 2 lines
  
      * fixed 64bit bug in iconvenc.pas
........
  r11689 | florian | 2008-09-01 23:12:34 +0200 (Mon, 01 Sep 2008) | 1 line
  
  * fixed several errors when building on unix
........
  r11694 | florian | 2008-09-03 20:32:43 +0200 (Wed, 03 Sep 2008) | 1 line
  
  * fixed unix compilation
........
  r11695 | florian | 2008-09-03 21:01:04 +0200 (Wed, 03 Sep 2008) | 1 line
  
  * bootstrapping fix
........
  r11696 | florian | 2008-09-03 21:07:18 +0200 (Wed, 03 Sep 2008) | 1 line
  
  * more bootstrapping fixed
........
  r11698 | florian | 2008-09-03 22:47:54 +0200 (Wed, 03 Sep 2008) | 1 line
  
  + two missing compiler procs exported
........
  r11701 | florian | 2008-09-04 16:42:34 +0200 (Thu, 04 Sep 2008) | 2 lines
  
  + lazarus project for the linux rtl
........
  r11702 | florian | 2008-09-04 16:43:27 +0200 (Thu, 04 Sep 2008) | 2 lines
  
  + set unicode string procedures
........
  r11707 | florian | 2008-09-04 23:23:02 +0200 (Thu, 04 Sep 2008) | 2 lines
  
  * fixed several type casting stuff
........
  r11712 | florian | 2008-09-05 22:46:03 +0200 (Fri, 05 Sep 2008) | 1 line
  
  * fixed unicodestring compilation on windows after recent unix changes
........
  r11713 | florian | 2008-09-05 23:35:12 +0200 (Fri, 05 Sep 2008) | 1 line
  
  + UnicodeString support for Variants
........
  r11715 | florian | 2008-09-06 20:59:54 +0200 (Sat, 06 Sep 2008) | 1 line
  
  * patch by Martin Schreiber for UnicodeString streaming
........
  r11716 | florian | 2008-09-06 22:22:55 +0200 (Sat, 06 Sep 2008) | 2 lines
  
  * fixed test
........
  r11717 | florian | 2008-09-07 10:25:51 +0200 (Sun, 07 Sep 2008) | 1 line
  
  * fixed typo when converting tunicodestring to punicodechar
........
  r11718 | florian | 2008-09-07 11:29:52 +0200 (Sun, 07 Sep 2008) | 3 lines
  
  * fixed writing of UnicodeString properties
  * moved some helper routines to unicode headers
........
  r11734 | florian | 2008-09-09 22:38:55 +0200 (Tue, 09 Sep 2008) | 1 line
  
  * fixed bootstrapping
........
  r11735 | florian | 2008-09-10 11:25:28 +0200 (Wed, 10 Sep 2008) | 2 lines
  
  * first fixes for persisten unicodestrings
........
  r11736 | florian | 2008-09-10 14:31:00 +0200 (Wed, 10 Sep 2008) | 3 lines
  
  Initialized merge tracking via "svnmerge" with revisions "1-11663" from 
  http://svn.freepascal.org/svn/fpc/trunk
........
  r11737 | florian | 2008-09-10 21:06:57 +0200 (Wed, 10 Sep 2008) | 3 lines
  
  * fixed unicodestring <-> variant handling
  * fixed unicodestring property reading
........

git-svn-id: trunk@11739 -
2008-09-10 20:14:31 +00:00
Jonas Maebe
156acf3817 * fixed version of r11719 (faster parsing of units with lots of declarations
in many different type blocks)

git-svn-id: trunk@11722 -
2008-09-07 13:51:04 +00:00
Jonas Maebe
e43ae1ceee * use p.resultdef (representing a property array range) before freeing p
git-svn-id: trunk@11721 -
2008-09-07 13:31:39 +00:00
Jonas Maebe
f35051f76e - reverted r11719, there are still some problems with it
git-svn-id: trunk@11720 -
2008-09-07 12:45:08 +00:00
Jonas Maebe
632abdace8 * keep the syms that need to be checked for forward definitions in a
separate list, so that procsyms, constsym, varsyms etc are not checked
    and so that every sym is checked only once (rather than at the end
    of every type block). This makes parsing units with lots of declarations
    much faster (e.g., compiling MacOSAll is now 2 to 3 times faster)

git-svn-id: trunk@11719 -
2008-09-07 12:24:57 +00:00
Jonas Maebe
2b067a427d * give warning if a routine in the interface of a non-interface-only
macpas routine is not implemented and therefore considered to be
    external

git-svn-id: trunk@11703 -
2008-09-04 18:15:26 +00:00
peter
e90ce867d9 * fphashlist, update hashcapacity also if capacity is changed
git-svn-id: trunk@11699 -
2008-09-03 21:04:53 +00:00
peter
060bdbcb47 * fix writing of goto node to ppu
* replace derefnode with resolveppuidx method that only needs to be
    implemented for nodes referencing other nodes
  * fix IE when a label is not defined in inline function

git-svn-id: trunk@11697 -
2008-09-03 20:46:04 +00:00
michael
d2169a7e43 * In case no default is specified and no NoDefault is present, act as if NoDefault was given. (bug ID 10080, now we are Delphi compatible)
git-svn-id: trunk@11682 -
2008-09-01 10:05:52 +00:00
Jonas Maebe
02913dc738 * fixed oo_is_forward flag (from old patch by Dave Strodt)
git-svn-id: trunk@11662 -
2008-08-29 07:42:21 +00:00
Jonas Maebe
ffeba2fd10 * use LOC_REGISTER instead of LOC_CREGISTER for constant string pointers
git-svn-id: trunk@11661 -
2008-08-28 21:03:14 +00:00
Jonas Maebe
3f39c95163 * fixed asd_references for ansi/widestrings on Darwin
git-svn-id: trunk@11658 -
2008-08-27 22:38:05 +00:00
florian
9955d5b061 o patch from Sergej Gorelkin to improvement code generation for string literals
* Replaces linear search through assembler list by the hash lookup. 
    This considerably improves performance on large projects 
    (one example is winunits-jedi package, in which tcgstringconstnode.pass_generate_code 
     was top #1 in calltree, consuming about 12% IRefs).
  * Enables reusing memory locations for widestring constants 
    (and in general, the same approach may be used for any other type of constants).
  * Saves a sizeof(pointer) bytes per constant, by removing a location 
    which points to the string. This location is necessary for the 
    typed consts which may be modified, but redundant for string literals 
    because the language does not allow to modify string literals in any way. 

git-svn-id: trunk@11657 -
2008-08-27 15:16:45 +00:00
florian
e27937106f - removed obsolete USECMOV define
git-svn-id: trunk@11645 -
2008-08-24 12:46:42 +00:00
florian
e89ee84c53 * ignore $region/$endregion directives, resolves #11937
git-svn-id: trunk@11643 -
2008-08-23 18:42:14 +00:00
florian
9a83b1d275 * split typecast_string_to_string into simplify and firstpass, allows better constant propagation when inlining, resolves #11327
git-svn-id: trunk@11636 -
2008-08-23 07:29:30 +00:00
florian
615619804a + set node complexity of const. string nodes to 1
+ better approximation if a tmp. location for a parameter when inlining can be omitted

git-svn-id: trunk@11635 -
2008-08-23 07:25:53 +00:00
Tomas Hajny
b7339852e1 * reverted previous changes, proper fix still to be found :-(
git-svn-id: trunk@11626 -
2008-08-21 23:58:07 +00:00
Tomas Hajny
ca513b520f * another attempt to fix casing for generated OS/2 import libraries
git-svn-id: trunk@11625 -
2008-08-21 22:39:04 +00:00
florian
1c0bd054f4 + tfornode.simply which removes for loops being never executed
* handle function results correctly in life dfa
* handle for loops with at least one iteration better in life dfa
o resolves #8151

git-svn-id: trunk@11624 -
2008-08-21 21:38:50 +00:00
Tomas Hajny
512ffe26f5 * use modulename rather than realmodulename for import libraries to avoid packaging issues in case of different casing - 'unit X' in x.pas
git-svn-id: trunk@11623 -
2008-08-21 21:10:06 +00:00
florian
369ed493f2 * new node flag nf_modify to mark nodes being read and then written by one load node
* dfa takes care of nf_modify to create better life information
o resolves #11846 and #11849

git-svn-id: trunk@11615 -
2008-08-20 21:35:05 +00:00
Jonas Maebe
5feba9b3d7 * also free memory when a destructor is called without an explicit
instance reference (mantis 11896)
  * fixed double destructor call in tests/test/cg/tcalcla1.pp which
    caused an error after this change

git-svn-id: trunk@11599 -
2008-08-17 12:38:41 +00:00
Jonas Maebe
76ce35b905 * method definitions in "child" interfaces also hide those in "parent"
interfaces, even if they only differ in resulttype (mantis #11862)
  * fixing this required that multiple entries for the same method in a
    interface vmt are all written out (change in
    ImplementedInterface.AddImplProc)

git-svn-id: trunk@11595 -
2008-08-16 20:08:25 +00:00
Jonas Maebe
c65f8e7652 * safecall is only supposed to do anything for Windows targets. Removed
partial implementation for other targets and run test only for Windows

git-svn-id: trunk@11593 -
2008-08-16 14:46:20 +00:00
Jonas Maebe
6d0326a55b * don't call procvars passed to formal parameters (mantis #11861)
git-svn-id: trunk@11592 -
2008-08-16 14:40:51 +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
43f3b72139 * continued to play with avr
git-svn-id: trunk@11584 -
2008-08-15 13:52:54 +00:00
yury
8818df640f * Fixed passing of open array of wide string literals to function which expects 'array of pwidechar' parameter in case source file has utf8 encoding. Compiler thrown the following error in such case: Incompatible type for arg no. 1: Got "Array Of Const/Constant Open Array of WideString", expected "Open Array Of PWideChar".
+ Test for this issue.

git-svn-id: trunk@11581 -
2008-08-14 18:55:10 +00:00
florian
07182fba98 * continued work on avr-embedded
git-svn-id: trunk@11575 -
2008-08-14 14:23:25 +00:00
marco
13093ab53c * fix for #11865 -Oppentium3
git-svn-id: trunk@11569 -
2008-08-14 10:24:06 +00:00