Commit Graph

10940 Commits

Author SHA1 Message Date
joost
d97232c2b1 * Use version number without rc-suffix in the fp base dir
git-svn-id: trunk@12476 -
2009-01-02 20:54:13 +00:00
Jonas Maebe
bb9e962490 * fixed procvar parameter passing on ppc/sysv (by value instead of by
reference -- except for method procvars, for tmethod record compatibility)
  * adapted tw11563 for corrected calling convention

git-svn-id: trunk@12475 -
2009-01-02 15:36:27 +00:00
joost
5ef8122b16 * Removed Oppentium3 compiler flag from default ide configuration files because the flag is not valid on all platforms
git-svn-id: trunk@12468 -
2009-01-02 10:36:42 +00:00
joost
c031a1fcde * If the local-configuration directory is used and does not exist, attempt to create it
* Removed a hard-coded reference to the fpcdir

git-svn-id: trunk@12465 -
2009-01-01 23:46:43 +00:00
Tomas Hajny
4e2676ca13 + samplecfg able to create default configuration for IDE now
git-svn-id: trunk@12457 -
2008-12-30 02:05:07 +00:00
Jonas Maebe
423ee926c2 * verify during parameter parsing that -gc and -pg are implemented/
supported for the chosen target platform

git-svn-id: trunk@12451 -
2008-12-28 15:53:15 +00:00
Jonas Maebe
e54aed98a4 * fixed some small errors/inconsistencies in the wpo messages
git-svn-id: trunk@12450 -
2008-12-28 10:10:16 +00:00
florian
7d849d312b + added missing LaTeX statement for wpo error messages
git-svn-id: trunk@12449 -
2008-12-28 09:51:27 +00:00
Jonas Maebe
2cd1acc77d * element type of ansistrings is cchartype, not u8inttype
git-svn-id: trunk@12446 -
2008-12-27 22:43:45 +00:00
Jonas Maebe
03a7d089b9 + append_block1() to add extra block DW_FORM_block1 attributes to
a dwarf entry
  - (dwarf3) removed stride size from dynamic array entries because
    it's not required there (the stride always equals the element size)
  + (dwarf3) added "allocated" attribute for dynamic arrays 
  + (dwarf3) added generic implementation of string support for dwarf3,
    which no longer depends on the hacked fake record type in gdb's
    Pascal support. Includes support for all string types, except for
    winlike widestrings (because I don't know how to extract the
    length from them)

git-svn-id: trunk@12444 -
2008-12-27 21:43:45 +00:00
yury
69d1b4813c * Fixed .res resources handling when -o switch is used to specify executable full path and name in the same folder where .res files are located. Mantis #12856.
git-svn-id: trunk@12437 -
2008-12-25 10:14:34 +00:00
Jonas Maebe
a3732f5cfc * changed debuginfo for dynamic arrays in stabs and dwarf2 into a pointer to
the array type, rather than an array type (since they are pointers)
  + fully implemented debug info for dynamic arrays using dwarf3 (as supported
    by the gdb "archer" project with the archer-jankratochvil-vla branch)
    (mantis #12789)

git-svn-id: trunk@12436 -
2008-12-24 19:59:44 +00:00
florian
e512367dbd * formatting fix
git-svn-id: trunk@12435 -
2008-12-24 16:17:35 +00:00
Károly Balogh
75fae87e46 + removed probably accidentally left in A_BL generation, which caused double BL <name> instruction generation
on MorphOS (and all PowerPC32 systems, except Darwin)... These systems now should cycle again.

git-svn-id: trunk@12425 -
2008-12-23 20:48:43 +00:00
Jonas Maebe
513b89f961 * fixed commented out dwarf-3 dyn array debug information location
(works with archer/origin/archer-jankratochvil-vla gdb branch,
     see http://people.redhat.com/jkratoch/vla/MOVED)

git-svn-id: trunk@12424 -
2008-12-23 16:52:31 +00:00
Tomas Hajny
088c441d9d * extended fix for web bug #12370 (more platforms supported and slightly more universal)
git-svn-id: trunk@12381 -
2008-12-17 22:58:33 +00:00
florian
499c523346 * accept only valid guid as iid for com and dispinterfaces, resolves #12030; I'am not sure though if this isn't a feature used by people already
git-svn-id: trunk@12380 -
2008-12-17 22:09:21 +00:00
Jonas Maebe
d3923b315a * generic support for setting islibrary to true for libraries (+ changed
tlibrary1 to test this)

git-svn-id: trunk@12377 -
2008-12-17 17:49:16 +00:00
marco
8445fb74bd * fixed path_absolute, somehow it was not implemented for windows. Probably the $IF for windows fell away. Now defined for go32v2. Fixes 12370, and the solution was hinted at in that bugreport.
git-svn-id: trunk@12372 -
2008-12-16 23:05:16 +00:00
florian
e213be26fd + write proper rtti for large sets, resolves #12788
git-svn-id: trunk@12371 -
2008-12-16 17:18:16 +00:00
Jonas Maebe
47ba5b19ec * ignore vmtloadaddrnodes created in dead strip removed code
for wpo

git-svn-id: trunk@12364 -
2008-12-14 18:56:02 +00:00
florian
a0a1e6aae2 * small indention fix
git-svn-id: trunk@12360 -
2008-12-12 21:47:44 +00:00
florian
a537134603 * set result of ResetDFA, resolves #12757
git-svn-id: trunk@12359 -
2008-12-12 21:47:21 +00:00
Jonas Maebe
3216e8c7bc * mark produced object files as "does not require executable stack" by
default for Linux (overridable using -WX switch) (mantis #11563)

git-svn-id: trunk@12356 -
2008-12-12 16:26:25 +00:00
Jonas Maebe
5c1d4b130b * added system_powerpc64_linux to system_linux set
git-svn-id: trunk@12355 -
2008-12-12 16:07:22 +00:00
yury
9cc15bd994 * Do not write COFF string table into EXE if COFF symbol table is not present. It fixes loading of stripped DLL on Win9x. Bug #12629.
git-svn-id: trunk@12352 -
2008-12-12 14:54:14 +00:00
Jonas Maebe
1597aac6d2 * first search for gnm and only then for nm
* fixed error message in case the output of (g)nm/objdump can't be parsed

git-svn-id: trunk@12349 -
2008-12-12 13:03:27 +00:00
Jonas Maebe
dcf7412ea4 + also look for 'gnm' (necessary for e.g. solaris)
git-svn-id: trunk@12348 -
2008-12-12 12:43:17 +00:00
Jonas Maebe
dae90242e4 * fixed -OWsymbolliveness for linux/ppc64 (exported function symbol names
start with a '.' there)

git-svn-id: trunk@12347 -
2008-12-12 12:22:38 +00:00
Jonas Maebe
d357fb8936 * write empty section if no info about devirtualisable classes
* don't crash when looking up info about devirtualisable methods in case
    the section was empty

git-svn-id: trunk@12346 -
2008-12-12 12:14:45 +00:00
Jonas Maebe
060d81b8fa Merged revisions 11878,11881-11882,11889,11891-11893,11895,11899-11902,11935,11938,12212,12304,12308-12310,12316,12330-12332,12334,12339-12340 via svnmerge from
svn+ssh://jonas@svn.freepascal.org/FPC/svn/fpc/branches/wpo

........
r11878 | jonas | 2008-10-11 02:25:18 +0200 (Sat, 11 Oct 2008) | 19 lines

  + initial implementation of whole-program optimisation framework
  + implementation of whole-program devirtualisation
  o use:
     a) generate whole-program optimisation information (no need
        to completely compile the program and all of its units
        with -OW/-FW, only the main program is sufficient)
      fpc -OWdevirtcalls -FWmyprog.wpo myprog
     b) use it to optimise the program
      fpc -B -Owdevirtcalls -Fwmyprog.wpo myprog
     (the -B is not required, but only sources recompiled during
      the second pass will actually be optimised -- if you want,
      you can even rebuild the rtl devirtualised for a particular 
      program; and these options can obviously also be used         
      together with regular optimisation switches)
  o warning:
    - there are no checks yet to ensure that you do not use 
      units optimised for a particular program with another
      program (or with a changed version of the same program)

........
r11881 | jonas | 2008-10-11 19:35:52 +0200 (Sat, 11 Oct 2008) | 13 lines

  * extracted code to detect constructed class/object types from
    tcallnode.gen_vmt_tree into its own method to avoid clutter
  * detect x.classtype.create constructs (with classtype = the
    system.tobject.classtype method), and treat them as if a
    "class of x" has been instantiated rather than a
    "class of tobject". this required storing the instantiated
    classrefs in their own array though, because at such a
    point we don't have a "class of x" tdef available (so
    now "x", and all other defs instantiated via a classref,
    are now stored as tobjectdefs in a separate array)
  + support for devirtualising class methods (including
    constructors)

........
r11882 | jonas | 2008-10-11 20:44:02 +0200 (Sat, 11 Oct 2008) | 7 lines

  + -Owoptvmts whole program optimisation which replaces vmt entries
    with method names of child classes in case the current class'
    method can never be called (e.g., because this class is never
    instantiated). As a result, such methods can then be removed
    by dead code removal/smart linking (not much effect for either
    the compiler, lazarus or a trivial lazarus app though).

........
r11889 | jonas | 2008-10-12 14:29:54 +0200 (Sun, 12 Oct 2008) | 2 lines

  * some comment fixes

........
r11891 | jonas | 2008-10-12 18:49:13 +0200 (Sun, 12 Oct 2008) | 4 lines

  * fixed twpofilereader.getnextnoncommentline() when reusing a previously
    read line
  * fixed skipping of unnecessary wpo feedback file sections

........
r11892 | jonas | 2008-10-12 23:42:43 +0200 (Sun, 12 Oct 2008) | 31 lines

  + symbol liveness wpo information extracted from smartlinked programs
    (-OW/-Owsymbolliveness)
  + use symbol liveness information to improve devirtualisation (don't
    consider classes created in code that has been dead code stripped).
    This requires at least two passes of using wpo (first uses dead code
    info to locate classes that are constructed only in dead code,
    second pass uses this info to potentially further devirtualise).
    I.e.:
     1) generate initial liveness and devirtualisation feedback
       fpc -FWtt.wpo -OWall tt.pp -Xs- -CX -XX
     2) use previously generated feedback, and regenerate new feedback
        based on this (i.e., disregard classes created in dead code)
       fpc -FWtt-1.wpo -OWall -Fwtt.wo -Owall tt.pp -Xs- -CX -XX
     3) use the newly generated feedback (in theory, it is possible
        that even more opportunities pop up afterwards; you can
        continue until the program does not get smaller anymore)
       fpc -Fwtt-1.wpo -Owall tt.pp -CX -XX
  * changed all message() to cgmessage() calls so the set codegenerror
  * changed static fsectionhandlers field to a regular field called
    fwpocomponents
  * changed registration of wpocomponents: no longer happens in the
    initialization section of their unit, but in the InitWpo routine
    (which has been moved from the woinfo to the wpo unit). This way
    you can register different classes based on the target/parameters.
  + added static method to twpocomponentbase for checking whether
    the command line parameters don't conflict with the requested
    optimisations (e.g. generating liveness info requires that
    smartlinking is turned on)
  + added static method to twpocomponentbase to request the
    section name

........
r11893 | jonas | 2008-10-12 23:53:57 +0200 (Sun, 12 Oct 2008) | 3 lines

  * fixed comment error (twpodeadcodeinfo keeps a list of live,
    not dead symbols)

........
r11895 | jonas | 2008-10-13 00:13:59 +0200 (Mon, 13 Oct 2008) | 2 lines

  + documented -OW<x>, -Ow<x>, -FW<x> and -Fw<x> wpo parameters

........
r11899 | jonas | 2008-10-14 22:14:56 +0200 (Tue, 14 Oct 2008) | 2 lines

  * replaced hardcoded string with objdumpsearchstr constant

........
r11900 | jonas | 2008-10-14 22:15:25 +0200 (Tue, 14 Oct 2008) | 2 lines

  * reset wpofeedbackinput and wpofeedbackoutput in wpodone

........
r11901 | jonas | 2008-10-14 22:16:07 +0200 (Tue, 14 Oct 2008) | 2 lines

  * various additional comments and comment fixes

........
r11902 | jonas | 2008-10-15 18:09:42 +0200 (Wed, 15 Oct 2008) | 5 lines

  * store vmt procdefs in the ppu files so we don't have to use a hack to
    regenerate them for whole-program optimisation
  * fixed crash when performing devirtualisation optimisation on programs
    that do not construct any classes/objects with optimisable vmts

........
r11935 | jonas | 2008-10-19 12:24:26 +0200 (Sun, 19 Oct 2008) | 4 lines

  * set the vmt entries of non-class virtual methods of not instantiated
    objects/classes to FPC_ABSTRACTERROR so the code they refer to can
    be thrown away if it is not referred to in any other way either

........
r11938 | jonas | 2008-10-19 20:55:02 +0200 (Sun, 19 Oct 2008) | 7 lines

  * record all classrefdefs/objdefs for which a loadvmtaddrnode is generated,
    and instead of marking all classes that derive from instantiated
    classrefdefs as instantiated, only mark those classes from the above
    collection that derive from instantiated classrefdefs as
    instantiated (since to instantiate a class, you have to load its vmt
    somehow -- this may be broken by using assembler code though)

........
r12212 | jonas | 2008-11-23 12:26:34 +0100 (Sun, 23 Nov 2008) | 3 lines

  * fixed to work with the new vmtentries that are always available and
    removed previously added code to save/load vmtentries to ppu files

........
r12304 | jonas | 2008-12-05 22:23:30 +0100 (Fri, 05 Dec 2008) | 4 lines

  * check whether the correct wpo feedback file is used in the current
    compilation when using units that were compiled using wpo information
    during a previous compilation run

........
r12308 | jonas | 2008-12-06 18:03:39 +0100 (Sat, 06 Dec 2008) | 2 lines

  * abort compilation if an error occurred during wpo initialisation

........
r12309 | jonas | 2008-12-06 18:04:28 +0100 (Sat, 06 Dec 2008) | 3 lines

  * give an error message instead of crashing with an io exception if the
    compiler is unable to create the wpo feedback file specified using -FW

........
r12310 | jonas | 2008-12-06 18:12:43 +0100 (Sat, 06 Dec 2008) | 3 lines

  * don't let the used wpo feedback file influence the interface crc (there's
    a separate check for such changes)

........
r12316 | jonas | 2008-12-08 19:08:25 +0100 (Mon, 08 Dec 2008) | 3 lines

  * document the format of the sections of the wpo feedback file inside the
    feedback file itself

........
r12330 | jonas | 2008-12-10 22:26:47 +0100 (Wed, 10 Dec 2008) | 2 lines

  * use sysutils instead of dos to avoid command line length limits

........
r12331 | jonas | 2008-12-10 22:31:11 +0100 (Wed, 10 Dec 2008) | 3 lines

  + support for testing whole program optimisation tests (multiple
    compilations using successively generated feedback files)

........
r12332 | jonas | 2008-12-10 22:31:40 +0100 (Wed, 10 Dec 2008) | 2 lines

  + whole program optimisation tests

........
r12334 | jonas | 2008-12-10 22:38:07 +0100 (Wed, 10 Dec 2008) | 2 lines

  - removed unused local variable

........
r12339 | jonas | 2008-12-11 18:06:36 +0100 (Thu, 11 Dec 2008) | 2 lines

  + comments for newly added fields to tobjectdef for devirtualisation

........
r12340 | jonas | 2008-12-11 18:10:01 +0100 (Thu, 11 Dec 2008) | 2 lines

  * increase ppu version (was no longer different from trunk due to merging)

........

git-svn-id: trunk@12341 -
2008-12-11 17:40:18 +00:00
Jonas Maebe
b25b406b56 Merged revisions 11894,12317 via svnmerge from
svn+ssh://jonas@svn.freepascal.org/FPC/svn/fpc/branches/wpo

........
r11894 | jonas | 2008-10-13 00:13:19 +0200 (Mon, 13 Oct 2008) | 3 lines

  * fixed error that only really caused progblems if the total size
    of the messages text is a multiple of 240

........
r12317 | jonas | 2008-12-08 20:03:53 +0100 (Mon, 08 Dec 2008) | 3 lines

  * fixed error in fix committed r11894 (we don't write out the last new
    line, but we have to reserve memory for the terminating #0)

........

git-svn-id: trunk@12333 -
2008-12-10 21:33:53 +00:00
michael
73c40daa30 * Better TeX escape character checking
git-svn-id: trunk@12321 -
2008-12-10 19:03:36 +00:00
peter
570ffacb92 * fix virtual without constructor warning for forward classes
git-svn-id: trunk@12253 -
2008-11-27 19:04:54 +00:00
Jonas Maebe
807c63916e * do not write the ".file" directive in assembler files for Darwin
(gcc doesn't do it either, and it causes the assembler to report
     errors as if they occur in the Pascal source file)

git-svn-id: trunk@12205 -
2008-11-23 09:49:34 +00:00
Jonas Maebe
7b4eed79ce * fixed generic uint32->float softfpu conversion
git-svn-id: trunk@12200 -
2008-11-22 18:05:19 +00:00
Jonas Maebe
3d25478436 * fixed writing memory references on ppc when there is only an offset
(mantis #12685 and also the error message noted in mantis #12576,
     although in case of the latter it's only a symptom of another bug)

git-svn-id: trunk@12199 -
2008-11-22 15:13:16 +00:00
florian
5b5895b8ff * small avr compilation fixes
git-svn-id: trunk@12198 -
2008-11-22 09:51:24 +00:00
florian
c8fae83c57 * forgotten commit of loop strength reduction patch
git-svn-id: trunk@12174 -
2008-11-19 11:03:20 +00:00
peter
2a952c89a5 * store vmt entries in ppu
* give a note if the visibility of a vmt entry is lower than
    the previous (parent) entry
  * refactor vmt method collection using the new always available
    vmt entries

git-svn-id: trunk@12159 -
2008-11-18 18:49:27 +00:00
florian
80ff09c6f4 * correct handling of constant operands of aad/aam
git-svn-id: trunk@12158 -
2008-11-18 16:21:58 +00:00
florian
145dc4d8d6 * write assembler error at the correct position, first fix for #12595
git-svn-id: trunk@12157 -
2008-11-18 16:08:22 +00:00
peter
36cad44923 * refactor is_visible_for_object
git-svn-id: trunk@12152 -
2008-11-17 21:41:40 +00:00
florian
a0939ad9d6 * actually the important part of r12120 containing the compiler change
git-svn-id: trunk@12121 -
2008-11-16 14:08:31 +00:00
florian
706f8085f4 * convert int64 properly to c-bools, resolves #12614
git-svn-id: trunk@12120 -
2008-11-16 13:27:59 +00:00
florian
17a08efb82 * handle methodpointer function results like records of the same size, resolves #12318
git-svn-id: trunk@12118 -
2008-11-15 23:05:36 +00:00
michael
11a41788fb * Fixed lost default value in case of a property override
git-svn-id: trunk@12114 -
2008-11-15 22:13:59 +00:00
Jonas Maebe
a00df1033f * changed "Mixing signed expressions and longwords gives a 64bit result"
from warning into a hint (it's not a potential error, but potential
    optimisation advice)

git-svn-id: trunk@12075 -
2008-11-13 19:49:46 +00:00
Jonas Maebe
c1c1b2deac * more aint() type casts replaced by int64() type casts
git-svn-id: trunk@12073 -
2008-11-13 19:44:30 +00:00
peter
0f6f1a9c97 * remove obsolete unchain_overloads
git-svn-id: trunk@12065 -
2008-11-12 22:42:19 +00:00