Commit Graph

9868 Commits

Author SHA1 Message Date
Jonas Maebe
20b99dade3 - reverted r7600, see additional comments in mantis #9027
git-svn-id: trunk@7606 -
2007-06-09 17:14:28 +00:00
daniel
60dee7fcf0 + New optimization: Comparisions with evaluate to true or false if the
constant is outside the range of type bounds of the left expression.
    I.e. "if a>0" evaluates to true if a is declared with type 1..10,
    as all legal values of a are greater than zero.

git-svn-id: trunk@7603 -
2007-06-09 14:03:56 +00:00
Jonas Maebe
5a8679131f + support for new/dispose with extra size parameter in macpas mode
(mantis #9027)

git-svn-id: trunk@7600 -
2007-06-08 18:02:31 +00:00
Jonas Maebe
de75b34dba * fixed another IE with indexing bitpacked arrays of composite types,
this time with constant rather than variable indices

git-svn-id: trunk@7599 -
2007-06-08 13:53:01 +00:00
Jonas Maebe
5b24374cc2 * workaround for a bug in the assembler, linker or gdb on Mac OS X whereby
files with debuginfo but without any code could mess up the symbol
    tables used/built by gdb, resulting in various problems when debugging.
    The same workaround is used in gcc by Apple (mantis #9011)

git-svn-id: trunk@7597 -
2007-06-08 12:29:30 +00:00
Jonas Maebe
65e35ac401 * fixed internal error with bitpacked arrays of composite types whose
size is not a power of two

git-svn-id: trunk@7596 -
2007-06-08 09:11:08 +00:00
daniel
616fc0afcc * Adjust indent.
git-svn-id: trunk@7591 -
2007-06-06 20:10:35 +00:00
daniel
fe5118e903 * Reduce false positives of type_h_use_div_for_int.
git-svn-id: trunk@7590 -
2007-06-06 19:50:04 +00:00
florian
af352cda24 Merged revisions 7586 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/ssa/compiler

........
  r7586 | florian | 2007-06-05 20:19:26 +0200 (Di, 05 Jun 2007) | 1 line
  
  * updates from Karl-Michael Schindler
........

git-svn-id: trunk@7587 -
2007-06-05 18:22:54 +00:00
florian
8e3ade9f1f Merged revisions 7567 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/ssa/compiler

........
  r7567 | florian | 2007-06-03 22:53:07 +0200 (So, 03 Jun 2007) | 2 lines
  
  * better code generation for op_reg_reg_reg if src1 and dst are equal
........

git-svn-id: trunk@7569 -
2007-06-03 21:02:17 +00:00
florian
63b35fdb2e + give more sophisticated warnings about uninitalized variables when life info is available
git-svn-id: trunk@7562 -
2007-06-03 17:35:48 +00:00
florian
2761b9e096 * life info generation works for the whole compiler if exception catching blocks are ignored
git-svn-id: trunk@7561 -
2007-06-03 16:37:59 +00:00
florian
496d73dc9d + dfa for more node types
git-svn-id: trunk@7560 -
2007-06-03 10:33:50 +00:00
yury
73b8fba64b * fixed linking with eVC++ object files (bug #8542).
git-svn-id: trunk@7556 -
2007-06-02 22:14:35 +00:00
florian
36471608c1 * fixed regression caused by r7180
git-svn-id: trunk@7555 -
2007-06-02 20:35:17 +00:00
pierre
43f72f56f9 * fix 'ppc386 -F' crash
git-svn-id: trunk@7546 -
2007-06-01 22:50:37 +00:00
Jonas Maebe
2fe79903d6 * added missing "reserved" field to new code page files to fix warnings
git-svn-id: trunk@7537 -
2007-05-31 15:07:48 +00:00
yury
55394d9e72 * Added FlushOutput after "Linking..." message by internal linker. Now this message is visible in Lazarus during linking.
git-svn-id: trunk@7518 -
2007-05-29 17:04:53 +00:00
Jonas Maebe
8bcb6e689d * only check validity of assembler instructions in pass_2, after all
local operands have been resolved (mantis #8950)

git-svn-id: trunk@7516 -
2007-05-29 16:53:28 +00:00
yury
2b84a4643a * Fixed bug #6501: multiple resource files are correctly linked to executable.
It is done in the following way:

When unit is compiled, .rc file are compiled to .res and list of unit's resource files is stored in .ppu
Before final linking all program's .res files are collected into global .res file (.res files are easily concatenated). 
Then this global .res files is compiled to single .or file, which is linked to executable. 
As a result global resource index is created and the problem is fixed.

Old resource processing behavior still supported when tresinfo.rcbin is not set for target.
New resource processing is activated for windows and linux. Cross compiled windres can be used to compile .rc files on linux.

git-svn-id: trunk@7515 -
2007-05-29 15:51:02 +00:00
Jonas Maebe
95da9cb07a * fixed missing propagation of changed parameter type
of first readstr parameter in case it wasn't a string

git-svn-id: trunk@7514 -
2007-05-29 14:21:12 +00:00
Jonas Maebe
4ce4742bc8 * mark invisible high parameters of open arrays/arrays of const
of parent procedures which are implicitly accessed from within
    nested procedures for range checking purposes as non-regable in
    the resulttype pass of the nested procedure (as opposed to in its
    pass1/pass2, because by then the regvar assignment of the parent
    procedure is already finished) (mantis #8975)
  * related fix regarding checking whether the high parameter actually
    exists (must check calling convention of the procedure to which the
    high parameter belongs, which is not the same as checking that of
    the current procedure in case of nested procedures)

git-svn-id: trunk@7512 -
2007-05-29 13:42:49 +00:00
Jonas Maebe
628ddfa160 * fixed (harmless) range error
git-svn-id: trunk@7511 -
2007-05-29 13:04:15 +00:00
Jonas Maebe
60d424e97d * another check for register types (should fix new failure
of webtbs/tw7161)

git-svn-id: trunk@7510 -
2007-05-29 11:12:37 +00:00
peter
e1132f8fe1 * check register type to not mixup sse registers
git-svn-id: trunk@7505 -
2007-05-28 19:12:12 +00:00
florian
7b519c1ce3 * prevent usage of units being compiled with different fpu emulation state
git-svn-id: trunk@7501 -
2007-05-28 16:18:35 +00:00
florian
a3d906f1ca - removed several ;;
git-svn-id: trunk@7498 -
2007-05-28 15:59:17 +00:00
Jonas Maebe
e1b7ce5aa9 * fixed dynarr_property:=nil + test
git-svn-id: trunk@7495 -
2007-05-28 13:48:32 +00:00
peter
a58797f989 * use linkunitofiles instead of linkotherofiles to prevent path from being stored in ppu
git-svn-id: trunk@7490 -
2007-05-27 15:27:08 +00:00
peter
2e55b74a87 * force Archvie bit for file to get a difference if a fileexists or not
git-svn-id: trunk@7485 -
2007-05-27 10:50:51 +00:00
Jonas Maebe
fa5e232055 * fixed assigning an interface to a property after better property
checks

git-svn-id: trunk@7484 -
2007-05-27 10:25:46 +00:00
Jonas Maebe
a767e89a5b - removed a comment which wasn't true anymore
git-svn-id: trunk@7472 -
2007-05-25 12:30:14 +00:00
Jonas Maebe
4919cecb3b + defined FPC_SUPPORTS_UNALIGNED if the compiler supports the
unaligned() expression

git-svn-id: trunk@7469 -
2007-05-25 12:00:55 +00:00
Jonas Maebe
a244d54d6f * fixed a_load_ref_reg_unaligned in case reg is used in ref
git-svn-id: trunk@7466 -
2007-05-25 08:49:07 +00:00
yury
cf19c0993a * fixed bug #8919.
+ test.

git-svn-id: trunk@7448 -
2007-05-24 08:15:28 +00:00
michael
001ba5de84 * Applied patch from Ido Kanner
git-svn-id: trunk@7446 -
2007-05-24 07:42:39 +00:00
peter
c83f5c8546 * use elf writer for beos
git-svn-id: trunk@7439 -
2007-05-24 07:08:29 +00:00
peter
ecbcdcdabb * added status.currentmodulestate
git-svn-id: trunk@7435 -
2007-05-24 06:21:31 +00:00
Jonas Maebe
683de5ada2 * don't destroy source register when performing division of signed
number by constant power of two

git-svn-id: trunk@7431 -
2007-05-23 14:05:27 +00:00
peter
b29e4ad12f * add used by unit to can't find unit message
git-svn-id: trunk@7430 -
2007-05-23 13:40:27 +00:00
peter
e2db0a3982 * cleanup current module status
* new set_current_module function that sets the current_module and
    all related variables. Also closes scanner files if required, but
    that might still need some optimization to prevent closing/opening
    files too often

git-svn-id: trunk@7428 -
2007-05-23 13:33:53 +00:00
Jonas Maebe
085689af60 + support for unaligned stores
* avoid some unnecessary unaligned load sequences

git-svn-id: trunk@7427 -
2007-05-23 12:03:42 +00:00
Jonas Maebe
1e10424c6b * fixed a_load_reg_ref_unaligned() so it doesn't destroy the source
register anymore

git-svn-id: trunk@7426 -
2007-05-23 11:45:26 +00:00
Jonas Maebe
528eb2ec50 * shl/shr count on sparc is "mod <bitsize>" -> fix subsetref routines to
take that behaviour into account

git-svn-id: trunk@7424 -
2007-05-23 09:32:48 +00:00
peter
b09df37cef * size of secrel32 added
git-svn-id: trunk@7421 -
2007-05-22 20:36:39 +00:00
florian
9f56a89617 + added cyrillic code page tables
+ support -Fm<x> to load unicode tables from rtl/ucmaps, they must be in the same dir as the compiler though

git-svn-id: trunk@7420 -
2007-05-22 19:38:39 +00:00
Jonas Maebe
5cf2511283 - removed/disabled all normalset code (except for bootstrapping), since
it's no longer needed

git-svn-id: trunk@7403 -
2007-05-20 11:19:36 +00:00
Jonas Maebe
497df2bb37 * also check for properties passed to read(ln) when reading integers
different from the native size, or when reading enums (because those
    are handled via a temp internally -> regular var parameter checks
    were not automatically performed)

git-svn-id: trunk@7398 -
2007-05-19 18:53:24 +00:00
Jonas Maebe
02a69ff049 * mwpascal is also a clearstack_pocall (fixes e.g. calling
CGAffineTransformMakeRotation on Darwin/i386)

git-svn-id: trunk@7397 -
2007-05-19 18:10:22 +00:00
Jonas Maebe
a0b57eddb5 * new internal set format for big endian systems. Advantages:
* varsets ({$packset x}) are now supported on big endian targets
    * gdb now displays sets properly on big endian systems
    * cleanup of generic set code (in, include/exclude, helpers), all
      based on "bitpacked array[] of 0..1" now
  * there are no helpers available yet to convert sets from the old to
    the new format, because the set format will change again slightly
    in the near future (so that e.g. a set of 24..31 will be stored in
    1 byte), and creating two classes of set conversion helpers would
    confuse things (i.e., it's not recommended to use trunk currently for
    programs  which load sets stored to disk by big endian programs compiled
    by previous FPC versions)
  * cross-endian compiling has been tested and still works, but one case
    is not supported: compiling a compiler for a different endianess
    using a starting compiler from before the current revision (so first
    cycle natively, and then use the newly created compiler to create a
    cross-compiler)

git-svn-id: trunk@7395 -
2007-05-19 17:15:15 +00:00