Commit Graph

12700 Commits

Author SHA1 Message Date
Jonas Maebe
4de8f53f03 * prevent exception when the compiler is compiled with -CR and we find a
non-procsym during overload resolving

git-svn-id: trunk@18161 -
2011-08-10 15:41:00 +00:00
pierre
bafbbe9f0f * Fix bug report 7210
git-svn-id: trunk@18154 -
2011-08-09 15:52:03 +00:00
pierre
c43b91ef15 Fix infinite loop in PUSH/POP directives
git-svn-id: trunk@18141 -
2011-08-07 20:44:22 +00:00
florian
562961fd42 * catch EOSError, EIOError and IOutOfMemory exceptions inside the compiler
so a proper error message is written (resolves #19871), 
  EOutOfMemory is not handle perfectly because it could be that the exception
  handling requires again a memory allocation

git-svn-id: trunk@18132 -
2011-08-07 09:18:07 +00:00
florian
e6e6b98dd8 * stellaris => ct_stellaris
git-svn-id: trunk@18125 -
2011-08-06 19:56:01 +00:00
Jonas Maebe
20c3809c3a * when a constant Objective-C class reference is used for anything but
the methodpointer of a call, transform it into a call to the classclass
    method because otherwise it can be used before the first call to any
    method of the class (such as in the packages/cocoaint/src/IvarSize test)
    and this can result in crashes

git-svn-id: trunk@18124 -
2011-08-06 19:49:59 +00:00
sergei
fec5dde5b6 * Fix handling of Windows WideString typed constants, resolves #15842 and completes the related #14308:
* Do not initialize unused symbols, because finalization code is not generated for them either.
  * Always initialize/finalize such constants, even if they are declared in {$J-} state and cannot be modified by user code.

git-svn-id: trunk@18121 -
2011-08-06 18:11:39 +00:00
Jonas Maebe
0398ff6bf5 * also save/restore the size of the padding of record/objectsymtables
* when creating a child class, ignore the padding added to the parent
    in case of objcclasses (gcc/clang also do that; maybe the same
    has to be done for cppclass as well)
  -> objcclass layouts seem to finally completely match the gcc ones

git-svn-id: trunk@18119 -
2011-08-06 18:01:39 +00:00
Jonas Maebe
1c11f6c8b7 + tppufile.putasizeint()
* save/restore tabstractrecordsymtable.datasize as asizeint instead of
    aint (not ppu version change because they are the same on all
    production targets)
  * add shortint() typecasts when reading/writing fieldalignment/
    recordalignment fields

git-svn-id: trunk@18118 -
2011-08-06 17:18:21 +00:00
Jonas Maebe
13598f1b5f * update of ppudump for r18114
git-svn-id: trunk@18117 -
2011-08-06 17:14:22 +00:00
Jonas Maebe
86b088f398 * store the current field alignment of tobjectdefs that use C_alignment,
because it influences the offset at which the next field in child classes
    should be placed in case it also uses C_alignment
  * also pad objectdefs based on the packrecords setting (Delphi-compatible)
  -> field offset calculation in objcclasses is now correct if they are
     compiled with {$packrecords c}

git-svn-id: trunk@18114 -
2011-08-06 13:11:23 +00:00
sergei
0231863fce + Added missing PMULLD instruction, part of Mantis #19910
git-svn-id: trunk@18106 -
2011-08-06 06:59:33 +00:00
Jonas Maebe
0d4d1a2ac8 * fixed two places where after r1913 valid_for_assign() didn't immediately
exit anymore if an error was detected

git-svn-id: trunk@18098 -
2011-08-04 22:44:00 +00:00
marco
043e9b2ec2 * Trunk version to 2.7.1
git-svn-id: trunk@18075 -
2011-08-03 13:59:33 +00:00
marco
39d7bb511d * Regenned all makefiles before 2.6.x branching.
git-svn-id: trunk@18073 -
2011-08-03 13:41:52 +00:00
Jonas Maebe
ec8c7b4888 + when compiling for Darwin/ARM, pass the subarchitecture to the linker.
The old linker option to accept object files from all subarchitecture
    types no longer works.
  + support for subarchitectures in fcl-res/fpcres

git-svn-id: trunk@18070 -
2011-08-02 20:41:39 +00:00
Jonas Maebe
da056da20f + added armv7 identifier (no special code generation, but required to
link against Xcode 3.2.6/4-generated code for ARMv7 -- use -Cparmv7,
    but note that you also have to compile the RTL and all other units with
    this option for them to be linkable against other ARMv7 code when using
    those tools)

git-svn-id: trunk@18069 -
2011-08-02 20:36:43 +00:00
Jonas Maebe
d7c1967351 * fixed switched around lists for read-only/read-write typed consts
git-svn-id: trunk@18068 -
2011-08-02 20:32:48 +00:00
Jonas Maebe
da3fb5de0f * prevent double freeing temps containing int64-sized parameters
(mantis #19700)

git-svn-id: trunk@18053 -
2011-08-01 17:12:45 +00:00
sergei
c9f92c0323 * Excluded oso_executable from attributes of user sections. User sections may currently be specified only for variables and typed consts, which are not executable.
* Fixed TLS directory size written to PE header when cross-compiling. It must be the value for target, not for host.

git-svn-id: trunk@18024 -
2011-07-27 14:10:22 +00:00
Jonas Maebe
cb1da8de85 * fixed getcopy order for ttempcreatenode in case it has tempinitcode
(this tempinitcode contains a reference to the tempcreatenode itself
     -> hookoncopy must be set before copying the tempinitnode)

git-svn-id: trunk@18016 -
2011-07-18 00:38:47 +00:00
florian
95ad75c7bf * hack to set stack top for atmega128
* default output for avr-embedded is .hex

git-svn-id: trunk@18015 -
2011-07-17 20:46:05 +00:00
florian
57613d1bb9 + add avr-embedded to systems_embedded
git-svn-id: trunk@18014 -
2011-07-17 20:44:43 +00:00
florian
5c9e0a7a1b + V is avr help screen option
git-svn-id: trunk@18013 -
2011-07-17 20:44:10 +00:00
florian
57cdf34a6b * put -Wpxxxx switch on the help screen
git-svn-id: trunk@18012 -
2011-07-17 20:42:56 +00:00
florian
ecb04d1620 * use tcgint instead of aint in ttempcreatenode
git-svn-id: trunk@18011 -
2011-07-17 20:10:05 +00:00
florian
98d3007580 + support to parse hi8/lo8(...) in inline assembler
git-svn-id: trunk@18009 -
2011-07-17 16:26:57 +00:00
florian
04e2321724 * avr cpuflags renames
+ cpuflagsstr

git-svn-id: trunk@18007 -
2011-07-17 08:55:16 +00:00
sergei
ae4cdf25f8 + aggas.pas: Write section attributes when long section names are used for smart linking (enabled for win32 and win64). It is needed because GAS does not understand that '.text.something' is part of '.text' and assigns default attributes (writable data) to all such sections, which is not the desired behavior.
git-svn-id: trunk@17989 -
2011-07-13 23:45:28 +00:00
florian
b0cef1693a * compilation of system unit was broken
git-svn-id: trunk@17972 -
2011-07-10 21:03:55 +00:00
florian
4f08d148ea * unique internal errors
git-svn-id: trunk@17970 -
2011-07-10 20:54:48 +00:00
sergei
6a2e87121b * ogcoff.pas: sort all objsections having '$' in the name, not just .idata$*. This is a documented PECOFF feature and it is required for tls callback stuff to link correctly regardless of the order of declarations in source files.
git-svn-id: trunk@17968 -
2011-07-10 12:24:35 +00:00
pierre
5a2d6c0429 Fix constant pointer reading for 64 bit CPU
git-svn-id: trunk@17962 -
2011-07-08 16:28:24 +00:00
pierre
0ca127b97e * Fix length size for non-short string types
git-svn-id: trunk@17961 -
2011-07-08 16:21:28 +00:00
pierre
f23b265ce1 + Add global testppudump rule
git-svn-id: trunk@17960 -
2011-07-08 16:01:28 +00:00
pierre
efb0193cb2 Add ./utils/ppudump prerequisite to log-ppu files
git-svn-id: trunk@17959 -
2011-07-08 15:57:27 +00:00
pierre
d4372a7ac5 * Add ppudump testing rules
git-svn-id: trunk@17958 -
2011-07-08 15:47:27 +00:00
pierre
b94cdd4881 * Handled real constants of different size
git-svn-id: trunk@17957 -
2011-07-08 15:39:04 +00:00
pierre
322e3f8a16 * More fixes for ppudump use
git-svn-id: trunk@17956 -
2011-07-08 15:38:14 +00:00
pierre
3017132268 * Remove triple sources
git-svn-id: trunk@17955 -
2011-07-08 15:37:23 +00:00
pierre
2f7a57fcab * Use extended for bestreal type if GENERIC_CPU is defined
git-svn-id: trunk@17954 -
2011-07-08 15:36:29 +00:00
pierre
eb4798238d * Display hexadecimal values of wide strings
* Set has_errors on more locations
  + Add has_more_infos boolean
  * Add -M option to set ExitCode to 2 if more info is available.
  * Support constnil type.

git-svn-id: trunk@17953 -
2011-07-08 10:32:28 +00:00
pierre
dd96bfb3dd * fix ppu dumping with ppudump utility for cross CPU
git-svn-id: trunk@17952 -
2011-07-08 08:57:24 +00:00
sergei
5d5ddbbe3e * Revert rounding section data size, it should be done in a more sophisticated way
git-svn-id: trunk@17950 -
2011-07-07 11:34:57 +00:00
sergei
2d96c34b06 * Improvements to PE executable output:
* Clear bits in section flags, that are only valid for object files
  * Round section datasize up to filealignment (PECOFF v8 documentation requires this)
  * Zero datapos and datasize for all sections w/o data, not just for .bss
  * Produce IMPORT_ADDRESS_TABLE directory in exe header
  * Entirely smartlink away unused DLLs (these used to have two terminating thunks left)

git-svn-id: trunk@17949 -
2011-07-06 20:55:57 +00:00
pierre
cff85bdb3b * Rename ag386nsm.pas unit source to agx86nsm.pas
git-svn-id: trunk@17933 -
2011-07-04 09:13:55 +00:00
pierre
f6ab12d677 * Move ag386nsm.pas to x86 directory
git-svn-id: trunk@17932 -
2011-07-04 09:08:54 +00:00
pierre
54fc0bf694 Add missing x86_64 -A options
git-svn-id: trunk@17931 -
2011-07-04 08:59:06 +00:00
pierre
bded762fef Add missing x86_64 -A options
git-svn-id: trunk@17930 -
2011-07-04 08:58:46 +00:00
pierre
d1a6ef9cd9 * Restrict use of postw32 external utility to
win32/wdosx target systems.

git-svn-id: trunk@17929 -
2011-07-04 07:36:47 +00:00
pierre
1a468eebc7 * Fix insdatx86 rule for Windows Makefiles
Also include regeneration of register include files.

git-svn-id: trunk@17928 -
2011-07-04 07:35:24 +00:00
pierre
cdd4b0297a * Show usage and halt with error if unknown parameters are given
at command line.
  * Also generate NASM register files for x86_64 (for support of NASM
    assembler for x86_64 CPU, to be committed later).

git-svn-id: trunk@17927 -
2011-07-04 07:33:00 +00:00
pierre
cfdc7c861d * Use public/global name 'name' section 'section' without semicolon for Windows TLS support
git-svn-id: trunk@17909 -
2011-07-01 19:29:38 +00:00
pierre
372b16b2e6 * Look for __FPC_tls_callbacks, should be reset to nil for DLLs, not yet done
git-svn-id: trunk@17908 -
2011-07-01 19:28:32 +00:00
pierre
4ad2707674 Windows TLS callback code testable by using -dTEST_TLS_DIRECTORY
git-svn-id: trunk@17906 -
2011-07-01 14:42:39 +00:00
pierre
92c92e1945 * Add oso_keep option to threadvar section if FPC_USE_TLS_DIRECTORY is set
git-svn-id: trunk@17905 -
2011-07-01 14:40:02 +00:00
pierre
eb90591ea9 TLS directory requires some labels in specific sections
I implemented this by allowing '.section sec_name mangled_name'
   for name 'xxxx'; specifier in tstaticvarsym.set_mangledname

git-svn-id: trunk@17904 -
2011-07-01 14:36:44 +00:00
pierre
30feeff3c2 + TlsDirectory handling code
git-svn-id: trunk@17903 -
2011-07-01 14:30:32 +00:00
pierre
bcb2bb9e5b Add removal of braces for parameters in linker script
git-svn-id: trunk@17902 -
2011-07-01 14:28:18 +00:00
pierre
c611c91cef Provide _tls_index in script
git-svn-id: trunk@17901 -
2011-07-01 14:27:33 +00:00
pierre
a45b29911c * Handle vo_has_section for constants
git-svn-id: trunk@17900 -
2011-07-01 14:26:21 +00:00
pierre
e6b5ce8557 * Use vo_has_section to test for user name section in insertbssdata
git-svn-id: trunk@17899 -
2011-07-01 14:24:56 +00:00
pierre
b3e1ba70e9 * Avoid warning about missing field for AVR
git-svn-id: trunk@17896 -
2011-07-01 11:59:31 +00:00
pierre
af098d08d5 * Avoid pointer to signed integer warning
git-svn-id: trunk@17895 -
2011-07-01 11:55:05 +00:00
pierre
37b98917e0 * Handle invalid register correctly
git-svn-id: trunk@17894 -
2011-07-01 11:52:37 +00:00
pierre
3cc2b5e97b + Added default dynamic linker for mips CPU
git-svn-id: trunk@17889 -
2011-07-01 07:37:05 +00:00
tom_at_work
619afa83ad Use NOCPUDEF for all ppu* compilations
git-svn-id: trunk@17888 -
2011-07-01 07:30:16 +00:00
florian
570f3c4b39 * merges recent class helper fixes by Sven Barth
git-svn-id: trunk@17887 -
2011-06-30 18:54:46 +00:00
pierre
2909e43043 * Make TAICPU class child of TAI_CPU_ABSTRACT_SYM instead of TAI_CPU_ABSTRACT
git-svn-id: trunk@17883 -
2011-06-30 13:19:48 +00:00
pierre
f328836cad + Add checks for internal linker script
git-svn-id: trunk@17882 -
2011-06-30 13:16:04 +00:00
pierre
0227fbad7d * Fix some internal linker script lines
git-svn-id: trunk@17881 -
2011-06-30 13:02:31 +00:00
pierre
63f38e6c03 * Fix make_dllmangledname: Use computed dllprefix instead of dllname
git-svn-id: trunk@17879 -
2011-06-29 20:34:40 +00:00
pierre
61df26bf0c * Avoid string constants array elements longer than type
git-svn-id: trunk@17873 -
2011-06-29 15:07:08 +00:00
pierre
32d919f543 Use ptruint type in typecast to avoid warning
git-svn-id: trunk@17872 -
2011-06-29 15:05:30 +00:00
pierre
4d50a95320 Use FPC_HAS_SYSTEMS_INTERRUPT_TABLE conditional
undefined for now as long as
  systems_interrupt_table set
  defined in systems unit is empty.
  This removes several warnings from compiler compilation.

git-svn-id: trunk@17871 -
2011-06-29 15:03:55 +00:00
pierre
9ec1213be1 * Reorganize code to avoid warnings about unreachable code
git-svn-id: trunk@17868 -
2011-06-29 09:59:06 +00:00
pierre
5148cb6ca8 * make sure pmessage field is aligned
git-svn-id: trunk@17867 -
2011-06-29 09:57:32 +00:00
pierre
1a262bee80 * $WARN $PUSH/$POP support
git-svn-id: trunk@17866 -
2011-06-29 09:57:02 +00:00
pierre
ffbf1a7331 * Avoid pointer typecast warning
git-svn-id: trunk@17865 -
2011-06-29 09:54:46 +00:00
pierre
d707d38ea1 * Fix double WARN infinite loop
git-svn-id: trunk@17864 -
2011-06-29 09:52:03 +00:00
pierre
a347381066 * Allow direct executable rule by adding $(COMPILER_UNITTARGETDIR) and $(COMPILER_TARGETDIR) dependencies
git-svn-id: trunk@17863 -
2011-06-29 07:05:27 +00:00
pierre
446c128e71 * Double LONG (-1) and LONG (0) for x86_64 linker script
git-svn-id: trunk@17862 -
2011-06-28 20:41:05 +00:00
pierre
c07bcefb6b * Fix anumval wrong overwriting as found out by Sergey
git-svn-id: trunk@17861 -
2011-06-28 20:39:53 +00:00
florian
01e9eacf5c * merge changes committed to the wrong branch
git-svn-id: trunk@17857 -
2011-06-28 18:23:02 +00:00
pierre
b78e0db500 + Also look for gdb if gdbpas is not found.
+ AdaptToGDB procedure to convert filenames with dirtectories
  to the format GDB expects.

git-svn-id: trunk@17853 -
2011-06-28 10:12:19 +00:00
pierre
d09389ac79 Implement support for $WARN XXX ON/OFF/ERROR
* globtype.pas:
  tmsgstate updated (ms_on/off/error_global variants added).
  ms_local_mask, ms_global_mask : new constants.
  tmessagestaterecord: new record, use to list chains
  of local changes to warnings by $WARN directive.
  pmessagestaterecord: new pointer to tmessagestaterecord.

  * globals.pas:
    tsettings record:
    new field: pmessage of type pmessagestaterecord;

  * cmsgs.pas:
  TMessage class:
  New method: ResetStates; Called on unit parsing changes
  New Method: SetVerbosity(nr:longint;newstate:tmsgstate):boolean;
  Remember global state in
  replacing ClearVerbosity method.
  New boolean field:  has_local_changes
  set if a call to SetVerbosity makes a local change that must be
  reset when changing unit.

  * verbose.pas:
  New functions/procedures:
  function  SetMessageVerbosity(v:longint;state:tmsgstate):boolean;
  for changes caused by $WARN or option
  procedure RestoreLocalVerbosity(pstate : pmessagestaterecord);
  procedure FreeLocalVerbosity(var fstate : pmessagestaterecord);
  function ChangeMessageVerbosity(s: string; var i: integer;state:tmsgstate): boolean;

  * switches.pas:
  Implement recordpendingmessagestate
  flushpendingswitchesstate: Handle new pmessage field of
  current_settings record.

  * parser.pas:
  Handle pmessage field of current_settings.

  * scandir.pas:

  Handle also integer constants in $WARN.

git-svn-id: trunk@17852 -
2011-06-28 10:03:07 +00:00
pierre
3fd3cc8099 * Avoid warning for i386 cpu
git-svn-id: trunk@17851 -
2011-06-28 08:02:35 +00:00
pierre
47ff755068 symdef.pas New make_dllmangledname function
used both in pdecvar and pdecsub units to generate a mangled name
  for externals imported from a dynamic library.

git-svn-id: trunk@17850 -
2011-06-28 05:38:05 +00:00
pierre
311d99b416 Avoid line > 255 chars and range check error on THandle type
git-svn-id: trunk@17848 -
2011-06-27 20:58:02 +00:00
florian
26850e3425 * fix full cycle after adding new boolean types
git-svn-id: branches/pasboolxx@17847 -
2011-06-27 20:11:08 +00:00
florian
3938f5e0b9 + merge support for boolean16, boolean32 and boolean64 into trunk
git-svn-id: trunk@17846 -
2011-06-27 19:21:07 +00:00
pierre
548ee755b1 * Use crc for special dllnames in proc_get_importname
git-svn-id: trunk@17844 -
2011-06-27 16:23:33 +00:00
Legolas
2503ac1d97 * Updated nds to devkitARM r33
git-svn-id: trunk@17843 -
2011-06-27 12:22:46 +00:00
florian
990add9272 * fixed non short boolean evaluation of <64 bit bool> and/or <64 bit bool> on non-64 bit cpus
* extended test for new pas boolean types

git-svn-id: branches/pasboolxx@17841 -
2011-06-26 21:01:59 +00:00
florian
c186e5bf1b * fixed make all
git-svn-id: branches/pasboolxx@17840 -
2011-06-26 20:54:39 +00:00
florian
d35d1ed357 + initial support for pascal booleans with sizes 2, 4 and 8
git-svn-id: branches/pasboolxx@17836 -
2011-06-26 15:02:37 +00:00
florian
589d061c3d * when comparing overridden methods, ignore hidden parameters because overridden methods does not
need to repeat a calling convention specifier so if the calling convention specifier 
  influences the hidden parameters, the methods are not considered equal, resolves #19159

git-svn-id: trunk@17832 -
2011-06-26 12:34:59 +00:00
florian
6e1d5e0aa0 * handle pointer+type param. correctly, resolves #19548
* convert exit(x) into result:=x; exit;, enables further optimizations in the future

git-svn-id: trunk@17829 -
2011-06-25 18:05:49 +00:00
sergei
7d99f95c45 * Always create a section before emitting data to current_asmdata.asmlists[al_typedconsts]. Without it, such data ends up in sections created elsewhere, creating very non-obvious dependencies on other parts of compiler.
git-svn-id: trunk@17816 -
2011-06-24 02:05:56 +00:00
florian
a6b2fcfe22 * fixes breakage of r17766, should resolve #19598
git-svn-id: trunk@17814 -
2011-06-23 21:30:40 +00:00
florian
8e7f39f176 * constant evaluation of ror/rol if they are internally handled, resolves #6300
* renamed rox_x_x to rox_x_y

git-svn-id: trunk@17810 -
2011-06-23 20:54:08 +00:00
florian
fda10ff098 * insert type conversions to the prototype type for internal procedures as well, rol/ror/sar and friends require the exact type
git-svn-id: trunk@17808 -
2011-06-23 20:50:47 +00:00
pierre
8a0ed92957 * Remove useless code for i386
git-svn-id: trunk@17806 -
2011-06-23 14:50:31 +00:00
pierre
239944f8d0 + Use DLL name in assembler labels used to import DLL functions/variables
in Windows, Emx and OS2 targets.
    This fixes test failures: test/library/tlib1b.pp and lib2b.pp

    link unit TLinker.AddImportSymbol: Added symmangledname parameter.
    ogbase unit TImportSymbol.Create: Add AMangledName parameter.
    fmodule unit TModule.AddExternalImport: Add symmangledname parameter.
    fppu unit: Also put mangled name string for imported symbol.
    ppu unit: Increase PPUVersion
    utils/ppudump.pp: Adapt to PPU change above.
    systems/T_OS units: Use ImportSymbol.MangledName property to create
    import libraries or .idata sections.

git-svn-id: trunk@17804 -
2011-06-23 11:38:57 +00:00
pierre
f220513821 + Warning for possible library overloading
git-svn-id: trunk@17803 -
2011-06-23 08:28:49 +00:00
Jonas Maebe
19fb48dfa9 * prefer "any array" -> "open array" over "single element" -> "open array"
conversions, instead failing to choose the best overload (Delphi-compatible)

git-svn-id: trunk@17800 -
2011-06-22 19:32:28 +00:00
sergei
3dba3a0219 * Float constants must be pooled using their the actual type, not the mapped type of assembler instruction. Otherwise e.g. extended may be mixed up with cextended, because both are mapped to ait_real_80bit.
git-svn-id: trunk@17787 -
2011-06-22 02:57:07 +00:00
pierre
1a9f4ba314 * Improve ogbase linker script support, add warnings for unknown entries
git-svn-id: trunk@17784 -
2011-06-21 16:49:50 +00:00
pierre
33cb4b4a83 + generic_cpu defines fro ppudump
git-svn-id: trunk@17779 -
2011-06-20 21:44:18 +00:00
pierre
1d8851f0eb Use systems.inc include file
git-svn-id: trunk@17775 -
2011-06-20 15:17:47 +00:00
pierre
4729b76ad9 Added forgotten include file
git-svn-id: trunk@17774 -
2011-06-20 14:57:34 +00:00
pierre
83f100432c + Move enumration types uses in ppu files from systems.pas
into systems.inc include file for direct inclusion by utils/ppudump.pp
  + new generic/cpuinfo.pas unit to allow compilation of ppudump without any
    CPU specific code.
  * Modified utils/ppudump rule in utils Makefile.fpc
    to use generic/cpuinfo unit by use of -dGENERIC_CPU
  * globals unit changed to support GENERIC_CPU.
  * utils/ppudump.pp changed to remove local enumeration types.

git-svn-id: trunk@17773 -
2011-06-20 14:16:57 +00:00
sergei
2f7c779fa4 * tmoddivnode.simplify: made result definitely assigned and removed local var
* tshlshrnode.simplify: likewise

git-svn-id: trunk@17770 -
2011-06-19 21:48:18 +00:00
sergei
1470d91ba1 * Optimized pooling of floating point and large set constants using hash tables.
git-svn-id: trunk@17769 -
2011-06-19 21:41:41 +00:00
florian
b00a610aec * optimize andb/w const,reg andw/l const,reg sequences as well
git-svn-id: trunk@17766 -
2011-06-18 15:22:09 +00:00
florian
37b8b791d5 * overloaded versions of IsNan, resolves #14351
* prefer <ord> -> single over <ord> -> double/extended, this is delphi compatible

git-svn-id: trunk@17758 -
2011-06-14 20:38:51 +00:00
joost
499d6f78d1 * Fixed recipe commences before first target error when using GNU make version 3.82
git-svn-id: trunk@17757 -
2011-06-14 20:21:15 +00:00
florian
ce76ce8769 * fixed wrong tmpref usage as mentioned by Pierre on the mailing list
git-svn-id: trunk@17754 -
2011-06-14 18:48:22 +00:00
pierre
4850190663 * Change TImplementedInterface.GetCopy from a warning at compile time to an internalerror if called
git-svn-id: trunk@17752 -
2011-06-14 15:19:38 +00:00
pierre
e4bb241409 * Silence warning in MakeSharedLibrary
git-svn-id: trunk@17750 -
2011-06-14 12:37:27 +00:00
sergei
3eaf8df446 * Don't use hardcoded value for maxoutputlists
git-svn-id: trunk@17734 -
2011-06-13 07:11:56 +00:00
marco
90c47c5c86 * fix for renaming of type_interface_noguid (or so) to type_E_interface...
by Florian in r17722

git-svn-id: trunk@17731 -
2011-06-12 13:45:38 +00:00
florian
4f18a59b87 * fixes errore.msg file errors, resolves #19541
git-svn-id: trunk@17722 -
2011-06-11 21:21:59 +00:00
florian
60e16260e1 o adjust define handling to resolve #19519
* ensure that all defines are written when running the compiler with -va
  * even if a define is defined/undefined, write a message if it is written again

git-svn-id: trunk@17714 -
2011-06-10 19:03:27 +00:00
Jonas Maebe
78c3e6b359 * always use crtbeginS.o/crtendS.o when generating PIC code, not just when
generating libraries for x86_64 (at least all Linux systems I checked
    have the S-variants of those files) (mantis #19501)

git-svn-id: trunk@17713 -
2011-06-10 14:17:20 +00:00
Jonas Maebe
a03a597374 * don't call assembler when using -s in combination with -ap (mantis #19401)
git-svn-id: trunk@17712 -
2011-06-10 13:42:59 +00:00
Jonas Maebe
9f4f21baa1 * set the line information for the initialization of local variables with
their default value to the entrypos of the function, instead of the end
    (mantis #19459)

git-svn-id: trunk@17711 -
2011-06-10 12:34:33 +00:00
sergei
19c8000056 64-bit masm writer:
* fixed writing rip-relative references
* use correct name to close the last section

git-svn-id: trunk@17710 -
2011-06-10 03:47:13 +00:00
sergei
d4b2998e07 * Another attempt to fix x86_64 stack frame calculation, tested better this time.
git-svn-id: trunk@17709 -
2011-06-10 03:41:33 +00:00
sergei
c40b8d92c7 * Revert r17695 because it breaks cycling.
git-svn-id: trunk@17698 -
2011-06-08 19:19:24 +00:00
sergei
318a55b96c * x86_64-win64: fixed stack calculations so that 32-byte spilling area is only included once and only for non-leaf procedures (it was included twice with -O- and 3 times with -O2, wasting large amounts of stack memory).
git-svn-id: trunk@17695 -
2011-06-08 14:46:22 +00:00
florian
81bd7867b3 * it makes no sense to search the windows dirs for dlls when cross compiling
git-svn-id: trunk@17687 -
2011-06-07 19:24:53 +00:00
pierre
09e9d922c7 * Reset F to NIL after freeing in tempclose
git-svn-id: trunk@17683 -
2011-06-07 16:10:25 +00:00
pierre
82ffdb48c9 * Fix tppufile.tempopen method needed for go32v2 cycle
git-svn-id: trunk@17674 -
2011-06-06 16:11:19 +00:00
florian
449c20ce63 * moved pic helpers into system unit, resolves #8119
git-svn-id: trunk@17669 -
2011-06-05 21:16:11 +00:00
florian
2f2c3ea545 * ignore 0 for code alignment, makes broken tests by r17659 working again
git-svn-id: trunk@17668 -
2011-06-05 21:12:26 +00:00
florian
0b9099f13f * fixes mistake in r17664
git-svn-id: trunk@17667 -
2011-06-05 17:51:09 +00:00
sergei
354d0520b7 + x86 assembler: fixed MOVABS instruction (it is a x86_64-only subset of MOV with 8-byte immediates/offsets) and same-form encodings of MOV instruction.
git-svn-id: trunk@17666 -
2011-06-05 17:32:18 +00:00
florian
ebc7a10954 * synchronized -Wxxxxx handling in options.pas and help screen, resolves #19400
* limited -Wxxxxx options to the targets they apply to

git-svn-id: trunk@17664 -
2011-06-05 15:39:44 +00:00
florian
33de8c8336 * fix potential range check error in cfileutl, should resolve #19405
git-svn-id: trunk@17660 -
2011-06-04 22:14:55 +00:00
florian
93e53e1990 * allow also smaller values for code alignment parameters than the current one, resolves #19463
* limit code alignment parameters to power of 2 up to 256
* give an error for an invalid code alignment directive

git-svn-id: trunk@17659 -
2011-06-04 20:56:15 +00:00
florian
69e7d8b02f * generate correct PIC in tcg386.a_loadaddr_ref_cgpara, resolves #19464
git-svn-id: trunk@17657 -
2011-06-04 16:57:45 +00:00
Jonas Maebe
7173b9dfed * fixed (harmless) range check errors
git-svn-id: trunk@17643 -
2011-06-02 20:07:06 +00:00
sergei
9608c4eabe * Interface wrappers must be global when linking smart, Mantis #19462. Other targets already have this condition in place.
git-svn-id: trunk@17631 -
2011-06-02 10:49:28 +00:00
joost
45bc3fcae0 * Enabled safecall on x86_64-linux
git-svn-id: trunk@17629 -
2011-06-02 10:43:18 +00:00
tom_at_work
1f023f4b36 * Use new qword_to_float32/64 compilerproc functions in first_int_to_real
git-svn-id: trunk@17624 -
2011-06-01 13:27:45 +00:00
pierre
f9e7b364bb * Added missing PPU flags
git-svn-id: trunk@17622 -
2011-06-01 10:28:57 +00:00
tom_at_work
e5fc169e57 * Call fpc_shl/r_qword for qword types for first_shlshr64bitint method
git-svn-id: trunk@17620 -
2011-06-01 06:25:00 +00:00
florian
2005f6869b * cycling with $R+ fixed
git-svn-id: trunk@17600 -
2011-05-28 21:18:35 +00:00
sergei
e3050439a8 * Reverted r17556 and replaced it with more generic handling of 'rela'-styled relocations. Resolves #19416.
+ Test case added to existing test/ulib2a.pp.

git-svn-id: trunk@17580 -
2011-05-27 18:19:08 +00:00
sergei
5bda700410 * External assemblers: moved some common code into the base class, 4 copies reduced to one.
git-svn-id: trunk@17561 -
2011-05-26 13:10:49 +00:00
sergei
9c27a802a0 * When relocating local symbols on x86_64, put symbol address into addend field of the relocation, resolves #13671.
+ test

git-svn-id: trunk@17556 -
2011-05-25 16:18:04 +00:00
sergei
d89aeeadaf x86 assembler:
* Adjust rip-relative offsets using values known from calcsize, instead of reinterpreting the tail of instruction. This is simpler and remains the same regardless of particular codes used in opcode table.
* Reduced maxinfolen to 8.
- 'jmp imm64' and 64-bit versions of 'in' do not exist, removed.

git-svn-id: trunk@17546 -
2011-05-23 20:43:50 +00:00
florian
bf32e47132 * hopefully fixes broken sparc-solaris building due to r17459
git-svn-id: trunk@17522 -
2011-05-22 08:17:03 +00:00
sergei
504e0c6816 x86 assembler fixes:
* mkx86ins.pp: 'regmem' operand type in x86ins.dat must be converted to OT_RM_GPR, not OT_REGMEM. The latter does not restrict register type, allowing to use e.g. xmm registers in place of regular ones. 
* Finished 'movd' and 'movq', added some tests for them to tasm2.pp.

git-svn-id: trunk@17515 -
2011-05-20 20:39:35 +00:00
florian
d19d8de8fe * packed column writing/reading for token recorder, reduces size of fgl.ppu by approx. 10%
git-svn-id: trunk@17512 -
2011-05-20 17:43:11 +00:00
florian
e29d8df95c * updated ppudump for latest ppu format changes
git-svn-id: trunk@17509 -
2011-05-19 20:32:39 +00:00
florian
7d9c4a97ce + compression of tokens in token recorder
git-svn-id: trunk@17508 -
2011-05-19 20:32:19 +00:00
sergei
08ff5ff051 * x86 Intel assembler reader: disallow more than one register name per register operand, resolves #15672.
git-svn-id: trunk@17507 -
2011-05-19 20:00:15 +00:00
florian
41c18adaf4 * patch by Sven Barth, handle idtoken correctly in the token recorder, resolves #19277
git-svn-id: trunk@17506 -
2011-05-19 19:31:08 +00:00
florian
f53a14ec38 * fix regressions caused by r17496
git-svn-id: trunk@17499 -
2011-05-19 11:59:59 +00:00
sergei
08e895cf7c * Fixed handling of 'movq' instruction by assembler reader, resolves #18205.
git-svn-id: trunk@17497 -
2011-05-19 06:44:24 +00:00
florian
e271595e20 * patch by Hans-Peter Diettrich to speed up specialize_objectdefs, resolves #17638
git-svn-id: trunk@17496 -
2011-05-18 20:26:00 +00:00
sergei
1aa5c4ac0e * Fixed wrong ModRM byte in movq encoding, causing regression of test/cg/tcalext6 in r17490.
git-svn-id: trunk@17493 -
2011-05-18 14:55:26 +00:00
sergei
9e8a31193b x86 assembler:
* Optimized the opcode representation of movq and remaining 3DNow instructions
* Disallow immediates not fitting in 32 bits (Mantis #14685) + test
* Disallow push/pop with 32-bit operands in x86_64 + test

git-svn-id: trunk@17490 -
2011-05-17 20:06:12 +00:00
florian
6ea8eb7dc2 + changes precedence of unary minus operator in mac and iso mode, resolves #17710
git-svn-id: trunk@17489 -
2011-05-17 19:53:55 +00:00
Jonas Maebe
b0e83a06af * fixed crash when trying to index a record without a default property
git-svn-id: trunk@17480 -
2011-05-17 13:13:59 +00:00
sergei
d908fb42f7 x86 assembler fixes:
* Factored repeating REX operations into a separate function.
* Fixed instruction matching bug which was preventing compilation of 3-operand SIMD instructions with RIP-relative operand + test.
* Do not adjust offset of RIP-relative reference if it is a literal number, this was causing 0x123(%rip) to assemble as 0x122(%rip) in 3-operand instructions. Now tasm2.pp is the same with and without -Aas. Also fixed the expected result, improved verbosity of diagnostic and removed %norun, so it is actually executed.
+ Disallow high-byte registers in instructions requiring REX + test.

git-svn-id: trunk@17478 -
2011-05-16 20:18:03 +00:00
florian
d0c6e23116 + -Sy on the command line is now equal to $T+, resolves #16160
git-svn-id: trunk@17477 -
2011-05-16 15:36:16 +00:00
florian
d9ed5adb21 * set line info markers properly, resolves #17803
git-svn-id: trunk@17476 -
2011-05-16 15:15:35 +00:00
florian
5231d109ba * fullcycle fixed
git-svn-id: trunk@17475 -
2011-05-15 19:13:49 +00:00
florian
13285ab264 o several strings changed into ansistrings, resolves #19318, no compilation speed degrations measurable
* TCmdStr changed into an ansistring
 * command line parameter handling uses now ansistrings
 * message handling parameters are now ansistrings

git-svn-id: trunk@17469 -
2011-05-15 14:53:31 +00:00
florian
f1b13dca19 * handle aligned assignments with size < sizeof(aint) properly, resolves #19355
git-svn-id: trunk@17468 -
2011-05-15 13:47:26 +00:00
sergei
c28197bac3 * PSADBW second operand is xmmrm, not xmmreg
+ A couple of tests related to the recent assembler changes

git-svn-id: trunk@17460 -
2011-05-14 18:59:06 +00:00
florian
77f2d6cc0d * introduce usage of TCGInt in the code generator units
git-svn-id: trunk@17459 -
2011-05-14 17:58:23 +00:00
florian
7803a302bf + added avr to full cycle
git-svn-id: trunk@17458 -
2011-05-14 17:44:49 +00:00
sergei
958954890e A big update of x86 instruction table, part 2:
- Removed remaining address-size control codes \300 and \301
- Also removed codes \323, they are no longer necessary once REX is being written on the first literal.

git-svn-id: trunk@17457 -
2011-05-14 16:36:42 +00:00
sergei
86d0c7f4c5 * x86 assembler: write REX prefix before the first literal byte of instruction (this becomes possible once the instruction table has all $66,$F2,$F3 prefixes changed to non-literal control codes). This way it is no longer necessary to manually specify position of REX in every instruction entry (code \323 becomes obsolete), and the situation when REX is not written (IE 200603191) is hopefully gone forever.
git-svn-id: trunk@17456 -
2011-05-14 16:02:31 +00:00
sergei
3b979fef6d * Re-commit r17437 after more testing and fixing aasmcpu.pp in r17449.
git-svn-id: trunk@17452 -
2011-05-14 11:04:52 +00:00
joost
ce35e121ba * Reverted r17386 because object file is used for debugging on Darwin, bug #19322
git-svn-id: trunk@17451 -
2011-05-14 10:55:26 +00:00
sergei
6d0d8734e0 * x86 assembler: operand type declarations rewritten using expressions instead of literal numbers where possible. Reassigned bit values to match the current NASM (the values themselves don't actually matter and can be chosen pretty arbitrary. What matters is the clean separation between different parts of the bitmask. In particular, the old value of XMM register class bit was equal to OT_BITS80, causing matching algorithm to effectively ignore it and accept e.g. MMX registers in place of XMM ones, part of Mantis #14387).
* Fixed matching of memory references with OT_XMMRM and OT_MMXRM.

git-svn-id: trunk@17449 -
2011-05-14 00:07:07 +00:00
sergei
b257231203 * Revert r17437, it breaks builds with -O2 and builds on i386 (although -O- on x86_64 is ok).
git-svn-id: trunk@17439 -
2011-05-12 23:53:18 +00:00
sergei
1d81a1244b A big update of x86 instruction table, part 1 (mostly SIMD instructions):
* Using ot_mmxrm and ot_xmmrm operand types to match arguments, reduces number of required entries by half.
* Replaced all literal $66, $F2 and $F3 prefixes with control codes (\361, \334 and \333, respectively).
* Prefix control codes imply writing REX, so code \323 after them is no longer necessary, removed.
* Fixed technology flags (SSSE3, SSE4.1, SSE4.2)
- Removed codes \300 and \301 (intended to generate address size prefix). FPC does not support this feature (the prefix itself is generated, but process_ea rejects operands needing non-default address size). Probably we don't even need to support it. But if we do, a much simpler solution is check all operands, like today's NASM does.
* Fixed/added some instructions along the way, namely CRC32, UNPCKHPD, CMPNEQSD.

git-svn-id: trunk@17437 -
2011-05-12 19:49:19 +00:00
sergei
de8ae0f873 x86 assembler improvements:
* Simplified REX handling: instead of useless adjusting instruction length on every REX change, adjust it just once, based on the final REX value.
* Similar for omitting REX.W in certain instructions: set a flag and consider it once the entire instruction has been processed. This removes the requirement for \335 to be the last opcode.
* maybewriterex also after $F2 prefix
* Fixed behavior of codes \310 and \311 (16- and 32-bit address respectively), this is needed for a few fancy instructions like LOOP and JCXZ, which honor address-size prefix instead of REX.
+ control code \361 for $66 prefix
+ IF_SSSE3, IF_SSE41, IF_SSE42 instruction flags (with dummy values)

x86/x86ins.dat:
* replaced literal $67 prefixes with \310 or \311
* marked encodings containing code \310 as NOX86_64
* replaced literal $48 prefixes with \326

git-svn-id: trunk@17433 -
2011-05-12 13:09:51 +00:00
sergei
6739cec2b9 * Flagged with NOX86_64 instructions/encodings that are invalid in 64-bit mode.
* AESKEYGENASSIST is not ATT-specific name, it is used by Intel-style assemblers as well. Also updated tests/test/taes1.pp to reflect the change.
+ Added SCASQ, resolves #16730 (other opcodes mentioned in that report were added/fixed earlier)

git-svn-id: trunk@17431 -
2011-05-11 15:50:59 +00:00
sergei
9bb0dc6cfe * mkx86ins.pp: ot_signed flag must not be set by literal opcodes. Ignore 2- and 3-byte literal sequences, not just 1-byte ones.
* x86ins.dat: replaced codes \17 with literal zeros. They aren't necessary for FPC, and they were removed from NASM quite a while ago.

git-svn-id: trunk@17430 -
2011-05-11 12:31:18 +00:00
Jonas Maebe
2c94ef0f09 * quote the path to the assembler if necessary when using popen(), since
it's based on calling "/bin/sh -c $cmdline" (mantis #19316)

git-svn-id: trunk@17423 -
2011-05-09 21:27:36 +00:00
Jonas Maebe
1b5fed238a * don't quote the Darwin syslibroot path in link.res, it's not reinterpreted
by the shell since it's cat'ed into the command line

git-svn-id: trunk@17422 -
2011-05-09 21:26:36 +00:00
Jonas Maebe
9cd6a7ad85 * correctly handle -XR (sysroot) paths with spaces under Darwin
git-svn-id: trunk@17421 -
2011-05-09 20:14:17 +00:00
paul
937bf3cdaf compiler: write finished zero for enumeration rtti (this was broken since r14511 fixes bug #0019288)
git-svn-id: trunk@17407 -
2011-05-05 08:52:14 +00:00
pierre
0d7945d8ae Avoid range check error on internalerror function call
git-svn-id: trunk@17399 -
2011-05-03 14:15:52 +00:00
Jonas Maebe
a08989a76b * zero/sign extend parameter values and return values < 32 bit to 32 bit on
x86_64 (mantis #19269)
  * this is also required for darwin/i386 and was already done there for
    parameters, but not yet for return values

git-svn-id: trunk@17388 -
2011-05-01 11:33:29 +00:00
joost
786f0a5067 * Delete main executable- or library-objectfile after linking
git-svn-id: trunk@17386 -
2011-04-30 17:33:00 +00:00
sergei
d288592c5a + Declared operand types OT_XMMRM (matches either xmm register or 128-bit memory reference) and OT_MMXRM (same for mmx).
* Modified taicpu.Pass2 to exclude non-definitely assigned variable and issue InternalError if impossible segment prefix is used.

git-svn-id: trunk@17374 -
2011-04-26 16:34:36 +00:00
paul
901a9a974e compiler: don't create set constants from arrays with high bound > 255 if elements of array are lower than 255
git-svn-id: trunk@17372 -
2011-04-26 00:17:14 +00:00
sergei
1bcc41c8c6 * x86 assembler reader: fixed bug in Tx86Instruction.AddReferenceSizes which was causing "Unable to determine operand size" error on instructions like "cmpss $0x10,(%rax),%xmm7" (3-operand instructions with reference being the source operand).
git-svn-id: trunk@17370 -
2011-04-25 21:35:36 +00:00
paul
f0ce4ccb44 compiler: copy extendeddef in tobjectdef.getcopy by Sven Barth
git-svn-id: trunk@17366 -
2011-04-25 02:06:04 +00:00
sergei
92adf34e3f * Tighten rules for accepting ATT suffixes, no longer accept FPU suffixes for integer instructions and vice versa. Resolves #18900.
* tb0267.pp required patching due to 'fildw' instruction at line 72, which is rejected by GAS. Before this commit, FPC was silently converting it to 'filds', so it went unnoticed. Now FPC rejects 'fildw' like GAS does.

git-svn-id: trunk@17363 -
2011-04-21 20:03:05 +00:00
florian
66a8dd1e32 * cmov cannot use memory location as destination, fixed spiling code, resolves #19201
git-svn-id: trunk@17359 -
2011-04-21 13:51:45 +00:00
pierre
af32b57170 * increase op2strtable size to string[15] and rectify askeygen to askeygenassist for ATT
git-svn-id: trunk@17358 -
2011-04-21 13:38:20 +00:00
sergei
f97f223de6 x86_64 assembler reader improvements:
+ Added new value TAttSuffix.attsufINTdual, assigned it to movsX and movzX instructions
* Moved suffix-to-size translation tables from rax86att.pas to itcpugas.pas
+ Added x86_64 specific suffix-to-size translation, enabling BQ and WQ suffixes (LQ seems unnecessary at the moment)
* Fixed logic of tx86attreader.is_asmopcode so it only assigns dual suffix to instructions that explicitly allow it. This disambiguates cases like movsbq=movs+bq vs. cmovbq=cmovb+q
* As a net result: movz[bw]q and movs[bw]q now compile for x86_64; cmovbw and cmovbl which were incorrectly handled for i386 are now fixed.
+ Test for correct assembling of cmov.

git-svn-id: trunk@17353 -
2011-04-20 11:18:13 +00:00
florian
918909c65d * fix building on powerpc/powerpc64/mips/mipsel
git-svn-id: trunk@17352 -
2011-04-20 09:02:29 +00:00
florian
58893a7342 * fix formatting: mainly wrapped extremely long lines
git-svn-id: trunk@17351 -
2011-04-20 08:18:50 +00:00
paul
d21bbc4548 compiler: reduce amount of hints and warnings
git-svn-id: trunk@17350 -
2011-04-20 02:58:52 +00:00
paul
ab8db32e2e compiler: correct the last used number for parser messages
git-svn-id: trunk@17349 -
2011-04-20 02:34:09 +00:00
florian
7f0d245ac2 * reintegrate avr branch into trunk, work on avr is less invasive than I thought so it can be continued in trunk
git-svn-id: trunk@17348 -
2011-04-19 20:17:52 +00:00
paul
f904f41664 compiler: don't allow local or anonymous records to have types (the second part of issue #0019099)
git-svn-id: trunk@17336 -
2011-04-18 06:10:56 +00:00
paul
550ad700c3 compiler: allow class declarations inside records (1 part of issue #0019099)
git-svn-id: trunk@17335 -
2011-04-18 03:26:46 +00:00
paul
56cd7b3450 compiler: allow use of default properties for records (issue #0019098)
git-svn-id: trunk@17334 -
2011-04-18 03:15:58 +00:00
florian
d3e0105ba8 + Italian UTF-8 message file, contributed by Massimo Soricetti, resolves #19179
git-svn-id: trunk@17332 -
2011-04-16 20:41:59 +00:00
florian
ee54a8b879 * Merged helper branch made by Sven Barth
-- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in ».«:
 U   rtl/inc/objc1.inc
U    rtl/inc/system.inc
U    rtl/objpas/typinfo.pp
A    tests/test/tchlp30.pp
A    tests/test/thlp35.pp
A    tests/test/tchlp3.pp
A    tests/test/thlp7.pp
A    tests/test/trhlp24.pp
A    tests/test/tchlp13.pp
A    tests/test/thlp44.pp
A    tests/test/thlp18.pp
A    tests/test/trhlp33.pp
A    tests/test/tchlp22.pp
A    tests/test/thlp27.pp
A    tests/test/trhlp16.pp
A    tests/test/tchlp31.pp
A    tests/test/thlp36.pp
A    tests/test/tchlp4.pp
A    tests/test/thlp8.pp
A    tests/test/trhlp25.pp
A    tests/test/trhlp1.pp
A    tests/test/uhlp41a.pp
A    tests/test/tchlp40.pp
A    tests/test/tchlp14.pp
A    tests/test/thlp19.pp
A    tests/test/trhlp34.pp
 U   tests/test/ttpara1.pp
A    tests/test/tchlp23.pp
A    tests/test/thlp28.pp
A    tests/test/urhlp14.pp
A    tests/test/trhlp17.pp
A    tests/test/tchlp32.pp
A    tests/test/uhlp43.pp
A    tests/test/thlp37.pp
A    tests/test/tchlp5.pp
A    tests/test/thlp9.pp
A    tests/test/trhlp26.pp
A    tests/test/trhlp2.pp
A    tests/test/uchlp12.pp
A    tests/test/tchlp41.pp
A    tests/test/uhlp41b.pp
A    tests/test/tchlp15.pp
A    tests/test/trhlp35.pp
 U   tests/test/ttpara2.pp
A    tests/test/tchlp50.pp
A    tests/test/tchlp24.pp
A    tests/test/thlp29.pp
A    tests/test/trhlp18.pp
A    tests/test/thlp10.pp
 U   tests/test/cg/ttincdec.pp
A    tests/test/tchlp33.pp
A    tests/test/thlp38.pp
A    tests/test/tchlp6.pp
A    tests/test/trhlp27.pp
A    tests/test/trhlp3.pp
A    tests/test/tchlp42.pp
A    tests/test/tchlp16.pp
A    tests/test/trhlp36.pp
A    tests/test/tchlp51.pp
A    tests/test/tchlp25.pp
A    tests/test/trhlp19.pp
A    tests/test/thlp11.pp
A    tests/test/tchlp34.pp
A    tests/test/thlp39.pp
A    tests/test/tchlp7.pp
A    tests/test/trhlp28.pp
A    tests/test/thlp20.pp
A    tests/test/trhlp4.pp
A    tests/test/tchlp43.pp
A    tests/test/tchlp17.pp
A    tests/test/trhlp37.pp
A    tests/test/tchlp52.pp
A    tests/test/tchlp26.pp
A    tests/test/thlp1.pp
A    tests/test/urhlp17.pp
A    tests/test/thlp12.pp
A    tests/test/tchlp35.pp
A    tests/test/tchlp8.pp
A    tests/test/trhlp29.pp
A    tests/test/thlp21.pp
A    tests/test/trhlp5.pp
A    tests/test/tchlp44.pp
A    tests/test/tchlp18.pp
A    tests/test/trhlp10.pp
A    tests/test/trhlp38.pp
A    tests/test/thlp30.pp
A    tests/test/tchlp53.pp
A    tests/test/tchlp27.pp
A    tests/test/thlp2.pp
A    tests/test/thlp13.pp
A    tests/test/tchlp36.pp
A    tests/test/tchlp9.pp
A    tests/test/thlp22.pp
A    tests/test/trhlp6.pp
A    tests/test/tchlp45.pp
A    tests/test/tchlp19.pp
A    tests/test/trhlp11.pp
A    tests/test/trhlp39.pp
A    tests/test/thlp31.pp
A    tests/test/tchlp54.pp
A    tests/test/tchlp28.pp
A    tests/test/uhlp39.pp
A    tests/test/thlp3.pp
A    tests/test/trhlp20.pp
A    tests/test/thlp40.pp
A    tests/test/thlp14.pp
A    tests/test/tchlp37.pp
A    tests/test/thlp23.pp
A    tests/test/trhlp7.pp
A    tests/test/tchlp46.pp
A    tests/test/trhlp12.pp
A    tests/test/thlp32.pp
A    tests/test/tchlp29.pp
A    tests/test/thlp4.pp
A    tests/test/trhlp21.pp
A    tests/test/tchlp10.pp
A    tests/test/thlp41.pp
A    tests/test/thlp15.pp
A    tests/test/tchlp38.pp
U    tests/test/trtti1.pp
A    tests/test/trhlp30.pp
A    tests/test/thlp24.pp
A    tests/test/trhlp8.pp
A    tests/test/uchlp18.pp
A    tests/test/tchlp47.pp
A    tests/test/trhlp13.pp
A    tests/test/thlp33.pp
A    tests/test/tchlp1.pp
A    tests/test/thlp5.pp
A    tests/test/trhlp22.pp
A    tests/test/tchlp11.pp
A    tests/test/thlp42.pp
A    tests/test/thlp16.pp
A    tests/test/tchlp39.pp
A    tests/test/uhlp3.pp
A    tests/test/trhlp31.pp
A    tests/test/tchlp20.pp
A    tests/test/uhlp31.pp
A    tests/test/thlp25.pp
A    tests/test/trhlp9.pp
A    tests/test/tchlp48.pp
A    tests/test/trhlp40.pp
A    tests/test/trhlp14.pp
A    tests/test/thlp34.pp
A    tests/test/tchlp2.pp
A    tests/test/thlp6.pp
A    tests/test/trhlp23.pp
A    tests/test/tchlp12.pp
A    tests/test/thlp43.pp
A    tests/test/thlp17.pp
A    tests/test/trhlp32.pp
A    tests/test/tchlp21.pp
A    tests/test/thlp26.pp
A    tests/test/tchlp49.pp
A    tests/test/trhlp41.pp
A    tests/test/trhlp15.pp
 U   tests/webtbf/tw13815.pp
 U   tests/tbf/tb0216.pp
U    compiler/msgtxt.inc
U    compiler/nld.pas
U    compiler/dbgdwarf.pas
U    compiler/sparc/cgcpu.pas
U    compiler/fmodule.pas
U    compiler/i386/cgcpu.pas
U    compiler/msgidx.inc
U    compiler/pdecsub.pas
U    compiler/ncgld.pas
U    compiler/symdef.pas
U    compiler/nobj.pas
U    compiler/nflw.pas
U    compiler/pdecobj.pas
U    compiler/objcdef.pas
U    compiler/pinline.pas
U    compiler/pexpr.pas
U    compiler/ncgrtti.pas
U    compiler/x86_64/cgcpu.pas
U    compiler/htypechk.pas
U    compiler/parser.pas
U    compiler/tokens.pas
U    compiler/symbase.pas
U    compiler/ncal.pas
U    compiler/symtable.pas
U    compiler/pp.lpi
U    compiler/m68k/cgcpu.pas
U    compiler/ppu.pas
U    compiler/rautils.pas
U    compiler/arm/cgcpu.pas
U    compiler/ptype.pas
U    compiler/symconst.pas
U    compiler/mips/cgcpu.pas
U    compiler/msg/errore.msg
U    compiler/psub.pas
U    compiler/utils/ppudump.pp
 U   compiler/utils
U    compiler/pdecvar.pas
U    compiler/ncgcal.pas
U    compiler/pdecl.pas
U    compiler/dbgstabs.pas
U    compiler/ppcgen/cgppc.pas
 U   packages/fcl-xml/tests/README_DOM.txt
 U   packages/unzip/src/unzip51g.pp
 U   packages/winunits-base/src/dwmapi.pp
 U   .

git-svn-id: trunk@17328 -
2011-04-16 14:01:44 +00:00
sergei
06311e5aad * i386-win32: Pass const variants by reference to safecall procedures, confirmed this behavior with Delphi (in general, safecall on win32 must behave as close as possible to stdcall).
git-svn-id: trunk@17323 -
2011-04-15 12:12:36 +00:00
florian
58fcf9dc52 * probably mark an overloaded := operator used as type conversion as used, resolves #18909
git-svn-id: trunk@17320 -
2011-04-14 21:11:27 +00:00
svenbarth
35b47e491c Rebase to revision 17306
git-svn-id: branches/svenbarth/classhelpers@17314 -
2011-04-13 10:04:14 +00:00
svenbarth
9eafb5e7cd For "inherited" the use of helpers must be allowed as well, as those might use a ttypenode of a helper as well.
git-svn-id: branches/svenbarth/classhelpers@17313 -
2011-04-13 09:46:33 +00:00
svenbarth
3c477c67ec Removing "current_syssym" again
git-svn-id: branches/svenbarth/classhelpers@17309 -
2011-04-12 07:15:32 +00:00
svenbarth
24243f87e8 Added a check similar to the "allowed" one to be able to remove the "current_syssym" variable again.
* nld.pas:
- added "helperallowed" boolean field to ttypenode which is set to false by default
- check that field in ttypenode.pass_1 and generate an error if it's false
* ncal.pas:
check the "helperallowed" field if the methodpointer node is a typenode and contains a helper; this is needed, because pass_1 of ttypenode is never called in case of "TSomeHelper.SomeMethod"
* pexpr.pas: 
- allow helpers in "sizeof" and "typeinfo"
- remove the check against "TSomeHelper.SomeMethod", but leave an explaining comment there

git-svn-id: branches/svenbarth/classhelpers@17308 -
2011-04-12 07:10:36 +00:00
florian
4d19f6c532 * patch by Jeppe Johansen to be able to generate debug info if an rtl without variant support is used, resolves #18483
git-svn-id: trunk@17300 -
2011-04-10 21:11:03 +00:00
florian
ff6ab60508 * prefer typecast currency->extended over currency->single/double because the former loses no precision while the latter might cause a loss of precision, resolves #19077
git-svn-id: trunk@17297 -
2011-04-10 19:40:18 +00:00
florian
fb84cb865b * rebase to trunk@17295
git-svn-id: branches/avr@17296 -
2011-04-10 19:20:48 +00:00
florian
eb2a2a5ea0 + implements tavraddnode.second_cmpsmallset
git-svn-id: branches/avr@17295 -
2011-04-10 18:52:56 +00:00
florian
8cfbb70326 + generic a_cmp_const_reg_label
git-svn-id: branches/avr@17294 -
2011-04-10 18:52:37 +00:00
florian
ebe8078263 * compilation fixed
git-svn-id: branches/avr@17293 -
2011-04-10 18:43:44 +00:00
florian
610fa89484 + basic avr linker script
git-svn-id: branches/avr@17292 -
2011-04-10 18:43:04 +00:00
florian
7b8f3a61d3 + implemented tcgavr.g_flags2reg
git-svn-id: branches/avr@17290 -
2011-04-10 18:39:51 +00:00
florian
ed8d652398 + implemened a_cmp_reg_reg_label
git-svn-id: branches/avr@17289 -
2011-04-10 18:39:07 +00:00
florian
5fd4bb70de * started to implement ref.base parameter for normalize_ref
git-svn-id: branches/avr@17288 -
2011-04-10 18:38:06 +00:00
florian
a0b0b43d0c + implemented tcgavr.a_jmp_name
* updated todos

git-svn-id: branches/avr@17287 -
2011-04-10 18:37:26 +00:00
florian
c97869bd89 * merge user sections support branch
git-svn-id: trunk@17285 -
2011-04-10 18:08:59 +00:00
sergei
c939beee70 * Changed register allocation order for x86_64, putting first registers that don't need to be preserved by procedure. This way registers needing preservation are allocated less frequently (and for non-complex leaf functions not allocated at all), reducing amount of entry/exit code.
git-svn-id: trunk@17284 -
2011-04-10 18:04:17 +00:00
florian
7f995c093e * moved some code from pmodules to ncgutil to get rid of cpubase in pmodules
git-svn-id: trunk@17280 -
2011-04-10 16:27:49 +00:00
florian
3ce9ff93f1 + patch by Jeppe Johansen to support automatic interrupt table generation by using the interrupt directive with an offset. Not activated yet because it requires to change also the startup code of the different mcus.
git-svn-id: trunk@17279 -
2011-04-10 15:59:06 +00:00
Jonas Maebe
66258fb0b8 * fixed TCmdStrListItem.GetCopy() (the reference count of the ansistring
field was messed up due to the use of "move()" to copy all field data)

git-svn-id: trunk@17270 -
2011-04-08 08:10:07 +00:00
armin
672d76e636 added a segment table containing segments for symbols defined by linker script (needed for relocs)
git-svn-id: trunk@17268 -
2011-04-07 19:38:25 +00:00
florian
6fb666135f * forbid <ordinal> in <set type>
git-svn-id: trunk@17263 -
2011-04-06 20:32:45 +00:00
sergei
c6accaba5c * tcg386.g_copyvaluepara_openarray, improved generated code:
- second calculation of EDI is obsolete, its value is never used.
  - calculation of ECX can be partially shared with first calculation of EDI.
  - multiplying ECX by 1 is also redundant (was happening due to a wrong condition).

git-svn-id: trunk@17260 -
2011-04-06 08:54:20 +00:00
florian
9279c6955e * support for SSSE3, SSE4,1, SSE4.2, AES instructions set by Emelyanov Roman, resolves #18527
+ test for aes support

git-svn-id: trunk@17256 -
2011-04-05 20:22:57 +00:00
florian
0c62133d38 * patch by Mattias Gaertner to allow to override how the compiler reads source/ppu files, resolves #18740
git-svn-id: trunk@17255 -
2011-04-05 20:10:09 +00:00
florian
8bff2a0de4 * patch by Jeppe Johansen to fix thumb2 epilog generation, resolves #18392
git-svn-id: trunk@17252 -
2011-04-05 19:25:20 +00:00
svenbarth
16e500ee3c Removed old search algorithm
git-svn-id: branches/svenbarth/classhelpers@17242 -
2011-04-03 19:29:31 +00:00
svenbarth
d0705a1779 Rebase to revision 17236
git-svn-id: branches/svenbarth/classhelpers@17241 -
2011-04-03 17:24:35 +00:00
svenbarth
b0b051ae83 Introduce a new type kind for helpers in the RTTI. This is Delphi incompatible, but it's cleaner than Delphi's "let's extend some magic class". This might not matter much though, because according to Google the RTTI for class helpers seems to be rarely used.
* compiler/ncgrtti.pas:
- objectdef_rtti_class_full:
 - don't write the VMT data for helpers
 - write the typeinfo of the extended type (something that Delphi does definitely not support :P )
- objectdef_rtti: write the new type kind for helpers instead that of classes
* compiler/symconst.pas: introduce new type kind constant "tkHelper" before "tkFile" (what is that used for btw?)
* rtl/inc/system.inc: add the constant here as well (why wasn't tkUChar added here?)
* objpas/typinfo.pp: 
- add tkHelper to the TTypeKind enum (but here tkUChar was added?!)
- extend the TTypeData record with the data of helpers

git-svn-id: branches/svenbarth/classhelpers@17240 -
2011-04-03 14:13:00 +00:00
svenbarth
a944be69a6 * nflw.pas: search for enumerators in helpers for records as well
* pdecobj.pas:
- parse_object_members: in record helpers class methods need to be declared as "static" like in records
- object_dec: 
 - allow "published" in helpers as well
 - disallow inheritance for record helpers in mode Delphi (and remove the forward declaration flag in that case)
* pdecsub.pas:
pd_abstract: "abstract" isn't allowed in either mode
* pexpr.pas: multiple corrections because of "inherited" and records
- allow "inherited" for "record helpers" (except for mode Delphi)
- load the symbol from the correct class (I hope...)
- give a more precise error message if "inherited" is used in records
* ptype.pas: I forgot to adjust the "(bit)packed record" case
* symtable.pas:
- searchsym_in_helper: "result" was not initialized (and identation fix)
- search_last_objectpascal_helper:
 - don't search if there are no helpers (useful for projects that does not contain helpers like the compiler itself)
 - don't search if the type to search helpers for is defined locally
 - don't search if the type is a anonymous record
- search_struct_member: search for symbols in helpers as well
- msg*: 
* correct the message for "parser_e_not_allowed_in_helper"
* add message "parser_e_inherited_not_in_record" which is used to tell that the use of "inherited" is not allowed in records and (in mode Delphi) record helpers

git-svn-id: branches/svenbarth/classhelpers@17239 -
2011-04-03 14:03:17 +00:00
svenbarth
c0a0ec9962 correct ppudump
git-svn-id: branches/svenbarth/classhelpers@17238 -
2011-04-03 13:37:07 +00:00
florian
07c9a772bf * fix compilation when object type cast checking is on
git-svn-id: trunk@17236 -
2011-04-03 10:50:34 +00:00
florian
736071e716 * updated copyright to 2011
* corrected copyright notice in message files and added "and others"

git-svn-id: trunk@17232 -
2011-04-02 20:06:46 +00:00
Jonas Maebe
bc46ea5cba * use compare_defs() instead of a plain "=" comparison to check that the
return type of the interface and implementation declaration of a function
    match (so that in case the "real defs" match as described in the comment
    of r17201, they are accepted as being the same)

git-svn-id: trunk@17207 -
2011-03-29 18:51:36 +00:00
Jonas Maebe
5c2050e756 * when two objectdefs resolve to the same "real" objectdef, consider them
as te_exact rather than as te_equal (otherwise you get compilation errors
    if only a formal external definition is in scope in the interface, but
    the full definition is in scope in the implementation)

git-svn-id: trunk@17201 -
2011-03-28 18:03:57 +00:00
Jonas Maebe
ebb4d26201 * replaced all tobjectdef() typecasts of the first argument of
do_member_read() with tabstractrecorddef() typecasts, because in
    many cases it can also be a record nowadays

git-svn-id: trunk@17200 -
2011-03-28 15:23:25 +00:00
sergei
1c01d52ea6 * Improvements of tprocinfo class:
* Moved nestedprocs from tcgprocinfo to tprocinfo, in order to be able to access the entire nested procedure hierarchy without depending on psub.pas or code generator.
  * Creating an instance of tprocinfo automatically inserts it into list of parent's nested procedures.
  * nestedprocs list is created on demand. Public read-only access is provided by has_nestedprocs and get_first_nestedproc functions.
  + Method destroy_tree is provided for destroying the entire hierarchy of procinfo's. It can be called on any procinfo object in the tree.
  + Also added methods save_jump_labels and restore_jump_labels for asmlabel maintenance, which is currently being repeatedly done all over the codegenerator.

git-svn-id: trunk@17197 -
2011-03-27 17:21:48 +00:00