Commit Graph

10531 Commits

Author SHA1 Message Date
florian
bc0586139a * copyright and description fixed
git-svn-id: trunk@10414 -
2008-03-01 20:22:18 +00:00
florian
d83722076f * fixed implements for interfaces
+ tests for implements through interface

git-svn-id: trunk@10413 -
2008-03-01 20:20:49 +00:00
Jonas Maebe
86f90d8ac1 + support for setting the name of "main" (-XM command line parameter) in
the code using {$pascalmainname x} + storing it in the ppu file
    (and give a warning if it's overridden multiple times + test)

git-svn-id: trunk@10406 -
2008-03-01 13:05:01 +00:00
Jonas Maebe
e1ec2834df * increase/decrease refcount of interface value parameters on procedure
entry/exit (mantis #10897)
  * fixed tinterface2 which crashed after this change. It also crashed under
    Kylix: you cannot assign the result of an interfaced class to a class
    instance variable and then use it both as an interface (refcounted) and
    as class (non-refcounted)

git-svn-id: trunk@10405 -
2008-03-01 10:25:27 +00:00
Jonas Maebe
a2beae0e11 * use more generic set type boundaries for constant sets with one
element in Delphi mode (fixes mantis #10890, but requires more
    thorough changes in nadd.pas for proper fixing)

git-svn-id: trunk@10399 -
2008-02-27 21:17:13 +00:00
Jonas Maebe
59ca0153e7 * moved transformation of "mul by power-of-2" to shl from type check
pass to pass 1 (where most optimizing transformations are located,
    and because the way it's written it goes wrong if left and right are
    a constant, and I'm working on moving the simplify code after the
    typechecking code so the resulttype for constant and non-constant
    expressions can be the same)

git-svn-id: trunk@10396 -
2008-02-27 15:56:40 +00:00
Jonas Maebe
179b840cea * also adjust constsetlo when parsing a constant set in Delphi mode
git-svn-id: trunk@10395 -
2008-02-27 15:42:49 +00:00
florian
6c53785e3a * first part of implements clean up and fixing
git-svn-id: trunk@10382 -
2008-02-24 11:05:46 +00:00
Jonas Maebe
469452b0ba * avoid check being wrongly "optimized" away (left and right
side were convered to int64, after which the expression was
    considered to be never true)

git-svn-id: trunk@10372 -
2008-02-20 21:27:32 +00:00
Jonas Maebe
db34ed44e4 * fixed an {$ifndef cpu64bitalu} which had to be {$ifndef cpu64bitaddr}
git-svn-id: trunk@10371 -
2008-02-20 20:08:03 +00:00
Jonas Maebe
638fc56489 * rlwnm_ -> rlwnm.
git-svn-id: trunk@10368 -
2008-02-20 11:50:12 +00:00
Jonas Maebe
417b5dcfda + internal round/trunc support for ppc970 using fctid/fctidz
* a_fctw_ -> a_fctiw_

git-svn-id: trunk@10367 -
2008-02-20 11:49:15 +00:00
Jonas Maebe
e9108ed51c * fixed skipping of character after number of errors to report in
parsing of -Se<xxx> string (mantis #10849)

git-svn-id: trunk@10362 -
2008-02-19 20:20:26 +00:00
daniel
3540c400dc * Fix read/write enum on cpu's requiring alignment: Call 'align' the proper way.
git-svn-id: trunk@10351 -
2008-02-17 21:43:39 +00:00
florian
796f39a7a7 * force ansistring concatenation when building stabs
git-svn-id: trunk@10336 -
2008-02-16 08:53:54 +00:00
florian
d8d96f14e6 + experimental directive, resolves #10833
git-svn-id: trunk@10331 -
2008-02-15 19:29:34 +00:00
florian
e5a960d860 * set default reserved stack size on win32/win64 to 16MB
git-svn-id: trunk@10330 -
2008-02-15 19:06:23 +00:00
florian
f28636ac5b + dummy navradd unit
git-svn-id: trunk@10328 -
2008-02-14 20:40:18 +00:00
Jonas Maebe
f36e5411af * split cpu64bit compiler define into
a) cpu64bitaddr, which means that we are generating a compiler which
       will generate code for targets with a 64 bit address space/abi
    b) cpu64bitalu, which means that we are generating a compiler which
       will generate code for a cpu with support for 64 bit integer
       operations (possibly running in a 32 bit address space, depending
       on the cpu64bitaddr define)
   All cpus which had cpu64bit set now have both the above defines set,
   and none of the 32 bit cpus have cpu64bitalu set (and none will
   compile with it currently)
  + pint and puint types, similar to aint/aword (not pword because that
    that conflicts with pword=^word)
  * several changes from aint/aword to pint/pword
  * some changes of tcgsize2size[OS_INT] to sizeof(pint)

git-svn-id: trunk@10320 -
2008-02-13 20:44:00 +00:00
florian
c05d4912f4 + basic system unit for avr-embedded
* fixed several compiler stuff to be able to start system unit compilation on avr

git-svn-id: trunk@10318 -
2008-02-13 20:35:16 +00:00
florian
cae52272aa * split ena_rq define
git-svn-id: trunk@10316 -
2008-02-13 19:06:17 +00:00
florian
469672cb56 * fixed another crash with the new function result handling for sysv x86-64 abi
git-svn-id: trunk@10312 -
2008-02-12 21:26:46 +00:00
peter
737212ff22 * fix result type of constset+[]
git-svn-id: trunk@10311 -
2008-02-12 17:30:00 +00:00
peter
417c832e9d * in node simplify
git-svn-id: trunk@10310 -
2008-02-12 17:27:27 +00:00
tom_at_work
52135af71f * implement branchless fpc_abs_long in a generic way
* enable optimization for ppc/ppc64 (two times faster than 
"generic" rtl branching routine)

git-svn-id: trunk@10306 -
2008-02-11 21:13:52 +00:00
florian
1a2a4af773 * hopefully the final fix for x86-64 sysv calling conventions
git-svn-id: trunk@10304 -
2008-02-11 19:46:40 +00:00
yury
ed86757898 * Pass const record parameters by reference for all calling conventions on i386-wince. It is needed to be Windows unit Delphi compatible, since WinAPI functions are cdecl on wince.
git-svn-id: trunk@10296 -
2008-02-11 15:12:41 +00:00
florian
e4997eaa45 * fixes safecall on non-win64 x86-64, should solve random rte 229
git-svn-id: trunk@10295 -
2008-02-11 13:47:41 +00:00
florian
4592402529 * fixed sysv x86-64 function results for records and arrays with sizes 9..16 bytes
git-svn-id: trunk@10285 -
2008-02-10 22:28:07 +00:00
Jonas Maebe
3e63d3f1dd - removed {$ifndef cpu64bit} code
git-svn-id: trunk@10275 -
2008-02-10 17:05:27 +00:00
Jonas Maebe
a497aec91d * always use ppc<targetcpu> instead of ppcross<targetcpu> on darwin,
because due to the mach-o executable format which can contain
    binaries for different architectures in a single file, different
    names for native and cross compilers are not used on Mac OS X
    (mantis #10067)

git-svn-id: trunk@10270 -
2008-02-10 14:42:49 +00:00
Jonas Maebe
59d9169bbd * perform typechecking of callinit/callcleanup statements immediately when
they are added (mantis #10807), because
   a) the typecheckpass of the entire blocks has to be postponed until firstpass
      because new statements may still be added in the firstpass (otherwise
      the newly added statements in the firstpass are never typechecked due to
      the blocknode already having a resultdef set)
   b) simplify can be called between the typecheck and firstpass, and it needs
      the typeinfo

git-svn-id: trunk@10263 -
2008-02-10 11:13:33 +00:00
Jonas Maebe
839edb58a1 - reverted r9776 (see comments to #10433)
git-svn-id: trunk@10261 -
2008-02-10 10:09:25 +00:00
Jonas Maebe
058e3762aa * added missing begin/end
git-svn-id: trunk@10260 -
2008-02-10 10:07:55 +00:00
Jonas Maebe
c44fb4a79e * call FreeInstance after fail if vmt<>nil rather than if vmt=1
(mantis #10790)

git-svn-id: trunk@10249 -
2008-02-08 15:04:58 +00:00
florian
a210a74629 * compiling skeleton
git-svn-id: trunk@10211 -
2008-02-04 20:57:09 +00:00
florian
0e13d07a31 + more avr code
git-svn-id: trunk@10207 -
2008-02-04 19:50:22 +00:00
Jonas Maebe
fee257ba81 * one more fix for x86 fpu stack swapping (mantis #10757)
git-svn-id: trunk@10199 -
2008-02-03 22:49:06 +00:00
Jonas Maebe
84401d2226 * fixed debug info for enum types after r10189
git-svn-id: trunk@10197 -
2008-02-03 21:45:59 +00:00
peter
13f6396221 * generalize def and symbol handling
* stabs uses ansistring instead of pchars
  * write procdef in separate loop. this fixes debugging of nested/overloaded procs

git-svn-id: trunk@10189 -
2008-02-03 17:52:30 +00:00
florian
bc73f9021c Merged revisions 5891-10167,10169-10180 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/avr

........
  r5891 | florian | 2007-01-11 17:30:12 +0100 (Do, 11 Jan 2007) | 2 lines
  
  + some initial work
........
  r10170 | florian | 2008-02-03 11:02:04 +0100 (So, 03 Feb 2008) | 2 lines
  
  * continued to work on avr port
........
  r10180 | florian | 2008-02-03 15:29:30 +0100 (So, 03 Feb 2008) | 2 lines
  
  + a lot of skeleton code for avr added
........

git-svn-id: trunk@10186 -
2008-02-03 17:21:52 +00:00
florian
90a3b20b48 Merged revisions 10168 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/avr

........
  r10168 | florian | 2008-02-03 10:56:10 +0100 (Sun, 03 Feb 2008) | 1 line
  
  * properties set
........

git-svn-id: trunk@10169 -
2008-02-03 09:59:37 +00:00
peter
169516ffc0 * don't optimize funcret with assignment result if the value is also used
as a parameter and the funcret is also passed as parameter. Because in that
    case both are pointing to the same memory location

git-svn-id: trunk@10159 -
2008-02-02 17:39:28 +00:00
Jonas Maebe
3521d64f4b - removed "do_count" parameter from tcallparanode.insert_typeconv
because the method was always called the same way (and it did not
    affect any counting anymore)
  * fixed and simplified read/write checking of methodpointer (mantis
    #10736)

git-svn-id: trunk@10155 -
2008-02-02 16:34:48 +00:00
peter
519b11dba7 * workaround for 2.2 rnagecheck
git-svn-id: trunk@10106 -
2008-01-29 23:19:24 +00:00
peter
6744b747b8 * remove goto, that prevents optimizations
git-svn-id: trunk@10083 -
2008-01-28 18:13:32 +00:00
peter
74f21d7bc3 * typecheck after converting type to constant set
git-svn-id: trunk@10081 -
2008-01-28 17:35:32 +00:00
Jonas Maebe
8349cde7db * changed byte/word/longbool to be Delphi-compatible (+ similar changes
for qwordbool) + test:
    o assigning true to such a variable now sets them to $ff/$ffff/$ffffffff
    o these types are now all signed
    o converting an integer type to a byte/word/long/qwordbool using an
      explicit type cast keeps the integer's original value stored in the
      bool, instead of forcing it to ord(true)/ord(false)
    (mantis #10233 and #10613, implemented for all architectures, testsuite
     tested for ppc32, sparc and x86)
  * fixed some places where the rtl depended on longbool(true) having the
    value 1
  * extended several boolean tests (and adapted some to no longer assume
    that byte/word/long/qwordbool(true)=1)
  + support for converting to qwordbool in second_int_to_bool for x86, ppc
    and sparc

git-svn-id: trunk@9898 -
2008-01-24 21:30:55 +00:00
Jonas Maebe
ea22e81374 * fixed include/exclude for byte-sized sets in registers
git-svn-id: trunk@9887 -
2008-01-23 22:28:12 +00:00
yury
801837f60d * Fixed bug #10681.
+ Test.

git-svn-id: trunk@9879 -
2008-01-23 10:24:04 +00:00