Commit Graph

12982 Commits

Author SHA1 Message Date
paul
d59c0237b2 compiler: global property can't be a class property
git-svn-id: trunk@20441 -
2012-02-29 02:31:03 +00:00
Tomas Hajny
f1b81f12b5 * indicate -an being only useful with -dEXTDEBUG
git-svn-id: trunk@20433 -
2012-02-26 20:49:45 +00:00
florian
fdfb9a3fba * take care of conditions when doing ldr/str optimizations
git-svn-id: trunk@20428 -
2012-02-25 21:04:28 +00:00
Jonas Maebe
b9c54fab0d * fixed finding the real definition for formal Objective-C protocols
* fixed printed source code positions in error message in case the external
    name of a formal and of a real definition don't match

git-svn-id: trunk@20425 -
2012-02-25 11:52:35 +00:00
pierre
2e0a5facd2 * Fix str inline for booleans for 64 bit CPUs
git-svn-id: trunk@20423 -
2012-02-24 10:06:44 +00:00
florian
bb2df48aa9 - <op> ....; cmp ...,#0 cmps ... optimization deactivated
* optimize ldr/ldr if possible

git-svn-id: trunk@20416 -
2012-02-23 21:29:22 +00:00
florian
e2c9a8c6a1 * fold <arithmed. op> ...; cmp ...,#0into cmps on arm
* remove unnecessary ldr after str to the same memoy location, however, to do this optimization safely, we should add support for volatile variables

git-svn-id: trunk@20399 -
2012-02-22 20:16:06 +00:00
sergei
eda5511ef9 * Don't widen boolean operands of taddnode if they will be converted to pasbool8 immediately thereafter, doing so only causes generation of useless code. Mantis #20843.
git-svn-id: trunk@20376 -
2012-02-19 18:49:50 +00:00
Jonas Maebe
bacdd8be81 * don't ever mark the function result as vs_initialised, also not when
it is passed as a hidden parameter (mantis #20907)

git-svn-id: trunk@20373 -
2012-02-17 16:25:50 +00:00
pierre
c45914fc27 * Fix loss of OPT variable content on last part of cross-cpu cycles
git-svn-id: trunk@20362 -
2012-02-16 14:26:12 +00:00
pierre
c453baf0b9 + Enable stabs debuginfo, dwarf disabled for now
git-svn-id: trunk@20361 -
2012-02-16 14:25:03 +00:00
pierre
5b71a7597a i386 NetBSD uses GOT for position independent code
git-svn-id: trunk@20353 -
2012-02-15 13:08:49 +00:00
paul
2499b5514f compiler: change overload search for char constants (for delphi compatibility):
- for AnsiChar prefer ShortString, AnsiString, UnicodeString, WideString, ... (LongString?)
  - for WideChar prefer UnicodeString, WideString, AnsiString, ShortString, ... (LongString?)
  - remove old code from htypechk which made AnsiChar const = AnsiString,ShortString and WideChar const = WideString,UnicodeString - it is no longer needed since defcmp performs the required comparisons
  + test

git-svn-id: trunk@20348 -
2012-02-14 06:52:33 +00:00
paul
4d863aff03 compiler: fix accidentally committed code in r20285
git-svn-id: trunk@20347 -
2012-02-14 00:25:29 +00:00
florian
b19b8badf9 * fix volatible integer register set on mips
* fix available registers on mips

git-svn-id: trunk@20346 -
2012-02-13 21:37:22 +00:00
svenbarth
2a872978dc Fix Mantis #21179
* defcmp.pas:
        + Extend compare_def_ext by the possiblity to specify whether strict or
          loose comparison of undefined defs should be applied.
          * in strict mode undefined defs are incompatible to all other defs
            except other undefined defs
          * in loose mode undefined defs are equal to anything (this is how
            FPC behaved up to now)
        + Enable the strict mode in compare_paras so that overloads with
          generic type parameters are possible
* ptype.pas, single_type:
        If the generic dummy of the currently parsed generic is encountered in
        non-Delphi modes then we need to return the current genericdef. This
        condition needs to be checked using the ObjName of the def, because
        the link from the type symbol to the current def is not yet 
        established 
+ added test for bug report

git-svn-id: trunk@20345 -
2012-02-13 21:17:54 +00:00
sergei
429af6f40b * nobj.pas, finished refactoring VMT generation code, now all child structures except RTTI are written to same data section with VMT itself and their labels are local (since child structures are accessible only through VMT, smartlinking them into different sections is useless).
* Reference GUID/string labels of implemented interfaces instead of duplicating them on every occurrence.

git-svn-id: trunk@20344 -
2012-02-13 18:49:48 +00:00
pierre
34f0538248 Update to add mips-linux support
git-svn-id: trunk@20334 -
2012-02-13 00:13:13 +00:00
pierre
38ecd5371f Add mips and mipsel source_cpu_string
git-svn-id: trunk@20333 -
2012-02-13 00:12:15 +00:00
sergei
3eeca2b172 * Emit published method table into single object section (previously every method name was written into a section of its own), labels for method names no longer have to be global.
* Pass target asmlist as parameter to genpublishedmethodstable and generate_field_table.
* Omit field table if there are no published fields (Delphi compatible).

git-svn-id: trunk@20310 -
2012-02-11 13:51:29 +00:00
sergei
3b006c4a9c nobj.pas, cleanup/refactoring:
- removed empty destructors, overriding destructor without calling inherited is incorrect (although harmless here).
* pass target asmlist as parameter to message table generation procedures, instead of using global variables.

git-svn-id: trunk@20303 -
2012-02-11 09:27:03 +00:00
pierre
8efbcbaabb NetBSD also needs explicit DynamicLinker
git-svn-id: trunk@20293 -
2012-02-09 17:38:10 +00:00
pierre
0f1a4f94af Modern i386 NetBSD has no underscore prefix, but since when?
git-svn-id: trunk@20292 -
2012-02-09 17:37:40 +00:00
paul
3b153c223a compiler:
- treat the defs equal when convert from rawbytstring to any ansistring type (delphi compatible)
  - set result of ansistring copy() function to the type of first argument for ansistring arguments and to ansistring for pchar and char array arguments (delphi compatible)
  + test

git-svn-id: trunk@20285 -
2012-02-09 08:22:38 +00:00
florian
e79f3a6930 * range check error fixed
git-svn-id: trunk@20283 -
2012-02-08 21:30:31 +00:00
florian
f927198c2a + gas for mips is by default little endian, so pass the endianess
git-svn-id: trunk@20280 -
2012-02-08 21:28:22 +00:00
florian
6be7b08b8e * gas reader fixed
git-svn-id: trunk@20272 -
2012-02-06 21:50:05 +00:00
florian
ae37b9f5b9 * fix floating point registers gas name
git-svn-id: trunk@20271 -
2012-02-06 20:33:12 +00:00
florian
de4a96f96d * fixes several register allocation related mips issues
* fixes range check error in mips code

git-svn-id: trunk@20266 -
2012-02-05 21:58:45 +00:00
florian
3d2a27c66c * fix fpu register type
git-svn-id: trunk@20261 -
2012-02-05 09:14:55 +00:00
florian
f2ee5da112 * fix gas mips integer register naming
git-svn-id: trunk@20260 -
2012-02-05 08:24:51 +00:00
florian
a2009af76e * updated MIPS code so the compiler gets through the system unit
git-svn-id: trunk@20259 -
2012-02-05 08:14:46 +00:00
florian
28036ed068 * fix some mips compiler issues, system unit compilation is getting forward
git-svn-id: trunk@20258 -
2012-02-04 22:53:52 +00:00
florian
8b339ded7a * started to fix the mips(el) linux rtl
git-svn-id: trunk@20255 -
2012-02-04 21:25:53 +00:00
svenbarth
ef10ce3bd0 * pgenutil.pas, generate_specialization:
When parsing an inline specialization inside a generic we need to 
	respect the "parsedtype" parameter which tells us whether the first
	generic parameter was already parsed. This fixes Mantis #20871 .
+ added test for this

git-svn-id: trunk@20251 -
2012-02-04 16:26:47 +00:00
svenbarth
9cb16c950f This fixes Mantis #20851 .
For the solution symbols will now contain a "sp_explicitrename" flag if they
were created through a type rename. This is necessary, because we can't
decide whether a type is a renamed generic para which contains by default a
reference to the default undefined def. Using individual undefined defs will
lead to duplicate identifiers as they are created before a symtable was
pushed (thus they'll ba part of whatever symtable is at the top). 

+ symconst.pas, tsymoption:
        Add a new option "sp_explicitrename" which will be used to track type
        renames.
+ pdecl.pas, type_dec:
        Set the new flag if we're dealing with a type rename
* pexpr.pas, factor_read_id:
        If we have an undefined def that is also a rename then we assume that
        it's a rename of a generic parameter
* utils/ppudump.pp:
        Adjustment because of change to tsymoption
* utils/ppu.pp:
        Increase PPU version
+ added test

git-svn-id: trunk@20250 -
2012-02-04 16:03:58 +00:00
svenbarth
04683c5f13 pgenutil.pas, generate_specialization:
- Remove unneeded check for "parse_generic" (it's already checked in the outer if-clause).
+ Check whether we are trying to specialize one of the surrounding type declarations of a
  nested type (as long as nested generics are forbidden this is always the outermost generic
  or specialization). This check can not rely on the symbol, because while parsing the
  generic or the specialization the symbol's def is still an errordef. This fixes 
  Mantis #19498 .

+ Added test from bug report.

git-svn-id: trunk@20247 -
2012-02-04 14:20:26 +00:00
svenbarth
a7a0ba0cf4 * Move the setup and teardown of the specialization symtable stack into two extra
procedures, so that changes in the setup/teardown need to be done only once 
  instead of twice.

git-svn-id: trunk@20246 -
2012-02-04 12:37:43 +00:00
svenbarth
c572395f61 * pgenutil.pas, generate_specialization & psub.pas, specialize_objectdefs:
When specializing a generic the references from unitsyms to the loaded modules
	needs to be reestablished, so that "unitidentifier.identifier" can be used
	inside a generic without leading to an access violation.
	Only global units are checked, because a generic must not use symbols from the
	static symtable or from units used by the implementation section (the latter is 
	currently not checked)

+ added tests for the above problem for "normal" units as well as units with a namespace 

git-svn-id: trunk@20245 -
2012-02-04 11:33:17 +00:00
florian
76d29ff172 * some Makefiles regenerated to support mips-linux
git-svn-id: trunk@20244 -
2012-02-04 09:50:03 +00:00
pierre
19e11f889f * Fix error in EXTDEBUG code
git-svn-id: trunk@20227 -
2012-02-02 23:55:43 +00:00
pierre
cf6590cc0e Use rmipsgas.inc file for gas register names
git-svn-id: trunk@20226 -
2012-02-02 23:54:39 +00:00
pierre
936c78eef1 + Use new assembler reader
git-svn-id: trunk@20225 -
2012-02-02 23:52:08 +00:00
pierre
bd9ddd498c Use standard MIPS regsiter names
git-svn-id: trunk@20224 -
2012-02-02 23:51:16 +00:00
pierre
61eba72178 Use standard MIPS regsiter names
git-svn-id: trunk@20223 -
2012-02-02 23:50:39 +00:00
pierre
a9c7e135ee Add MIPS GNU AS reader
git-svn-id: trunk@20222 -
2012-02-02 23:49:51 +00:00
pierre
77301e699d Commit some MIPS changes from MarkMLl
git-svn-id: trunk@20221 -
2012-02-02 23:46:24 +00:00
pierre
c0690d1bdc + New virtual method TATTReader.HandleDollar, useful for MIPS reader
git-svn-id: trunk@20220 -
2012-02-02 23:45:22 +00:00
pierre
4a351f42fe Commit some MIPS changes
git-svn-id: trunk@20219 -
2012-02-02 23:43:52 +00:00
Jonas Maebe
6a5cf6cf8d * always pass -arch parameter to linker when targetting Darwin, instead of
skipping this for dynamic libraries (not sure why that was done, but
    apparently not passing -arch triggers a bug in Xcode 4.2 Lion linker,
    mantis #21159)

git-svn-id: trunk@20211 -
2012-02-01 19:01:58 +00:00