Commit Graph

37842 Commits

Author SHA1 Message Date
florian
d5aa89449e * generate less register wasting code for 64 bit comparions
git-svn-id: trunk@21950 -
2012-07-22 21:07:33 +00:00
masta
be6bf6e3f7 Fix possible access violation introduces in r21885
r21885 added a new peephole optimizer. The associated code refactoring
missed a check for

  tai(hp1).typ = tai_instruction

Which can lead to an access violation later on, because the rest of the
code expects to find a taicpu in hp1.

git-svn-id: trunk@21949 -
2012-07-22 18:06:08 +00:00
Jonas Maebe
bdc62289b4 * the safecall -> cdecl mapping is also activated for x86_64
(tf_safecall_clearstack is set for it) -> also use pocalls_cdecl for it
    and adjust the safecall tests not to try parameter scenarios that are
    unsupported for cdecl

git-svn-id: trunk@21948 -
2012-07-22 16:59:04 +00:00
Jonas Maebe
3798b79fd7 + optimization that (re)orders instance fields of Delphi-style classes in
order to minimise memory losses due to alignment padding. Not yet enabled
    by default at any optimization level, but can be (de)activated separately
    via -Oo(no)orderfields
   o added separate tdef.structalignment method that returns the alignment
     of a type when it appears in a record/object/class (factors out
     AIX-specific double alignment in structs)
   o changed the handling of the offset of a delegate interface
     implemented via a field, by taking the field offset on demand
     rather than at declaration time (because the ordering optimization
     causes the offsets of fields to be unknown until the entire
     declaration has been parsed)

git-svn-id: trunk@21947 -
2012-07-22 16:47:19 +00:00
michael
5b3026d0ce * Keep variable information in a more structured way
git-svn-id: trunk@21946 -
2012-07-22 14:57:30 +00:00
florian
9672f0537a * handle exports with a name consisting of a single character correctly
git-svn-id: trunk@21945 -
2012-07-22 14:23:09 +00:00
sergei
06844fdb23 * Entirely moved relocation fixup functionality from TObjSection to TExeOutput.
git-svn-id: trunk@21944 -
2012-07-22 07:21:11 +00:00
michael
1c894ba71d * Fixed last known access violations
git-svn-id: trunk@21942 -
2012-07-21 08:54:35 +00:00
florian
e10a95bf16 - removed unneeded firstcomplex calls, pass_left_right calls already firstcomplex
git-svn-id: trunk@21941 -
2012-07-21 07:09:06 +00:00
sergei
2bc792fe97 * TObjData.FName made protected.
* Allow EntryName to remain unspecified.

git-svn-id: trunk@21940 -
2012-07-20 12:50:21 +00:00
michael
34c126a2d0 * Fix access violation in case statement
git-svn-id: trunk@21939 -
2012-07-19 16:39:01 +00:00
michael
cd01ae3bd0 * Fixed compilation and finalization
git-svn-id: trunk@21938 -
2012-07-19 06:29:38 +00:00
michael
252c2bbc83 * FormatMessageA -> FormatMessage (W version)
git-svn-id: trunk@21937 -
2012-07-18 09:17:30 +00:00
michael
8a9bd38cd7 * Copied non-sysutils solution of win32/64
git-svn-id: trunk@21936 -
2012-07-18 07:38:21 +00:00
michael
78bfc145c1 * No SysErrorMessage on WinCE ?
git-svn-id: trunk@21935 -
2012-07-18 07:36:24 +00:00
michael
f5e36a8510 * Fixed memory leak with unary expressions
git-svn-id: trunk@21934 -
2012-07-17 23:43:25 +00:00
michael
f6662b7f3c * Fixed memory leak
git-svn-id: trunk@21933 -
2012-07-17 23:18:03 +00:00
michael
09275660d8 * Fix access violation when file not found. Better GetCurColumn
git-svn-id: trunk@21932 -
2012-07-17 22:47:04 +00:00
michael
60022280f0 * Test case for undefine and define
git-svn-id: trunk@21931 -
2012-07-17 22:39:22 +00:00
michael
8b8ccb9e05 * Fixed $UNDEF
git-svn-id: trunk@21930 -
2012-07-17 22:38:04 +00:00
michael
113c97a306 * Some more reference count fixes
git-svn-id: trunk@21929 -
2012-07-17 21:51:13 +00:00
florian
0e9139c914 * retrieve stack size correctly
git-svn-id: trunk@21928 -
2012-07-17 20:14:15 +00:00
florian
f6f6df2780 * removed line breaks
git-svn-id: trunk@21927 -
2012-07-17 20:13:21 +00:00
florian
a6a1f2a0a1 * properly retrieve the stacktop on win64
git-svn-id: trunk@21926 -
2012-07-17 19:47:35 +00:00
Jonas Maebe
6cc78635d7 * send full x/y ansi position information in case of an X-coordinate
overflow (don't know what the y-coordinate is at that point, because the
    window may be  wider than the artificial screenwidth) (mantis #20880)

git-svn-id: trunk@21925 -
2012-07-17 18:03:23 +00:00
Jonas Maebe
408f459f5a * the code generator bugs referred to in r21921 weren't completely fixed yet
after all, although for some reason the problems only showed up with the
    external assembler on x86-64 platforms other than Darwin. Now we never use
    GOT entries on x86-64 anymore for local symbols, regardless of their nature,
    and instead use plain RIP-relative addressing for them.

git-svn-id: trunk@21924 -
2012-07-17 14:36:37 +00:00
sergei
684bf4fba2 + Reject object types without VMT as arguments of typeof(). Without this check, an undefined reference to VMT is generated which fails at the linking stage.
git-svn-id: trunk@21923 -
2012-07-17 05:46:55 +00:00
michael
a4be3f17d7 * Fixed release problem and except (reported by Seth Grover)
git-svn-id: trunk@21922 -
2012-07-16 20:52:22 +00:00
Jonas Maebe
5e93f6b70f - reverted r1733, which caused all local procedures to become global in case
PIC was used. This was probably a workaround for a code generator bug,
    which is no longer required

git-svn-id: trunk@21921 -
2012-07-16 15:22:14 +00:00
michael
955a90c4db * Time is in 24 hours time
git-svn-id: trunk@21920 -
2012-07-16 13:24:23 +00:00
florian
a5754ed02b * more robust get_caller_frame and get_caller_addr for win32 which has always a valid StackTop value
git-svn-id: trunk@21919 -
2012-07-15 21:36:06 +00:00
florian
3a9e3991be * the switch -Oouseebp allows the i386 compiler to use ebp as normal register
the drawback of this is that get_caller_frame and get_caller_addr might not work
  anymore because they make the wrong assumption (i.e. not required by the abi)
  that ebp contains always a valid (not necessarily the current) frame pointer

git-svn-id: trunk@21918 -
2012-07-15 19:23:36 +00:00
Jonas Maebe
b1d00b66ac * fixed internalerror after invalid type node in subscript node
(mantis #22395)

git-svn-id: trunk@21917 -
2012-07-15 18:17:29 +00:00
florian
a38be24672 * get rid of tabs with wrong size
git-svn-id: trunk@21916 -
2012-07-15 16:56:11 +00:00
michael
7a1d4dfe72 * Fix parsing uses unit in filename, added library parsing and exports sections
git-svn-id: trunk@21915 -
2012-07-15 16:55:18 +00:00
Jonas Maebe
07ebc51b6c * always store generics token streams in little endian, so we don't have to
keep a separate field for each tstoreddef that records whether the
    endianness needs to be swapped

git-svn-id: trunk@21914 -
2012-07-15 16:09:14 +00:00
florian
25b80bedf9 * get rid of tabs with wrong size
git-svn-id: trunk@21913 -
2012-07-15 14:04:50 +00:00
florian
3d76823929 * load StackTop and StackBottom correctly on windows, also in libraries
git-svn-id: trunk@21912 -
2012-07-15 14:03:45 +00:00
masta
aa4fe66153 Fix ARM ASM-reader for MVN/CMP/CMN/TST/TEQ
Like MOV these instructions support 2 operands, with the second beeing a
shifterop.

Without this patch the asm reader would fail on something like

cmp r0, r1, lsr 16

with

Error: Unknown identifier "LSR"

git-svn-id: trunk@21911 -
2012-07-15 01:03:08 +00:00
michael
607b86f582 * Parse program without program header and with complete header
git-svn-id: trunk@21910 -
2012-07-13 18:17:52 +00:00
michael
f32b9fd572 * Use container to create statement elements so they get sourcefile information
git-svn-id: trunk@21909 -
2012-07-13 13:37:39 +00:00
Tomas Hajny
2bcfe75ea8 * correction for copy&paste error in previous commit
git-svn-id: trunk@21908 -
2012-07-12 23:32:51 +00:00
Tomas Hajny
4dccf2d321 * GetLoadErrorStr implemented
git-svn-id: trunk@21907 -
2012-07-12 23:30:19 +00:00
Jonas Maebe
7717e43929 * moved setting the call result to a separate method, so it can still be
used across multiple levels of inheritance such as on MIPS (and the code
    has to be reusable for a_call_ref/reeg in the future anyway)

git-svn-id: trunk@21906 -
2012-07-12 20:56:25 +00:00
sergei
e5ee1c9f67 * Don't access tcfilestream.size 3 times in sequence, as each access costs two seeks (syscalls).
+ made size of tobjectreader data available via property.

git-svn-id: trunk@21905 -
2012-07-12 16:10:34 +00:00
pierre
dd59db1bba * Set retun value of get_frame method to nil
git-svn-id: trunk@21904 -
2012-07-12 14:16:24 +00:00
Jonas Maebe
56fcc87cb2 * add get_frame as an internal symbol for the jvm target because that target
defines INTERNAL_BACKTRACE (which assumes get_frame to be internal rather
    than a system unit procedure)
  * changed fpc_assert() declaration for jvm to be the same as for other
    targets, so the same code can be used to call it in ninl now that's
    called from the first pass

git-svn-id: trunk@21903 -
2012-07-12 13:25:02 +00:00
pierre
54bfc8156d Fix termios constants for mips cpu, mostly using octal prefix
git-svn-id: trunk@21902 -
2012-07-12 13:11:13 +00:00
pierre
68c8383254 Add support for binary/octal/hexadecimal constants
git-svn-id: trunk@21901 -
2012-07-12 13:09:32 +00:00
pierre
a311c53167 Replace HandleErrorFrame calls by HandleErrorAddrFrameInd where possible in common code (to allow correct backtrace for mips cpu)
git-svn-id: trunk@21900 -
2012-07-12 11:53:59 +00:00