Commit Graph

42478 Commits

Author SHA1 Message Date
sergei
04f32c2a01 * Do not attempt to retrieve caller context if initial frame is not between StackTop and frame pointer of current procedure (aka stack bottom). Reverts part of r21843, fixing regression of tests/test/cg/traise6.pp after r26843.
r26843 caused regression because it removed exception handlers, causing condition "if ExceptAddrStack<>nil" in HandleErrorAddrFrame() to become False, so it wasn't raising another exception (which would halt with code 217) but terminating directly with code 216.

git-svn-id: trunk@26850 -
2014-02-23 10:20:54 +00:00
svenbarth
2a65c05a8c Clean up dead code.
m68k/n68kcnv.pas:
  - pass_generate_code is used from the parent class
  - ungetcpuregister is not needed here

git-svn-id: trunk@26848 -
2014-02-22 21:29:31 +00:00
svenbarth
908c0f7293 M68k: Correctly handle the case of assigning a Boolean expression to a 64-bit Boolean. Fixes tw20889.
* m68k/n68kcnv.pas, tm68ktypeconvnode.second_int_to_bool:
    Take an inspiration from the x86 code generator and correctly handle assignment of values with a size < 8 to 64-bit Booleans

git-svn-id: trunk@26847 -
2014-02-22 21:27:19 +00:00
sergei
ae81e0889b * Updated internal declarations of RTTI structures to match their counterparts in typinfo unit and actual data generated by compiler. It went unnoticed this far because fields whose location differ with and without 'packed' record attribute are not used by internal routines, and tests use declarations from typinfo unit (the declarations in question are not in interface, so tests cannot be done against them).
This eliminates a lot of unaligned code on SPARC and ARM. 

git-svn-id: trunk@26845 -
2014-02-22 19:26:25 +00:00
sergei
b26e36431a * Instead of three individual try..except blocks in fpc_pushexceptobject, guard the entire procedure at the caller side (it is called only from fpc_raiseexception). This additionally guards against possible crashes in getmem() due to corrupted heap. Furthermore, try..except block is not necessary at all for such one-time purposes.
git-svn-id: trunk@26843 -
2014-02-22 17:18:21 +00:00
florian
6697939903 * replaced some aren't, weren't, can't by are not, were not, cannot
git-svn-id: trunk@26842 -
2014-02-22 16:07:27 +00:00
florian
76b2074e59 * updated year in logo from 2013 to 2014
git-svn-id: trunk@26841 -
2014-02-22 15:58:03 +00:00
florian
13cb468a8e * fixed modification information for some avx instructions
git-svn-id: trunk@26840 -
2014-02-22 15:52:33 +00:00
svenbarth
0321a77d72 Fix the generation of alignment instructions for m68k. This not only fixes quite some tests, but most importantly the native m68k compiler!
* aggas.pas, TGNUAssembler.WriteTree.doalign:
    instead of strangely checking for the previous instruction always use .balignw if the previous code was code and we should not use a specific instruction

git-svn-id: trunk@26839 -
2014-02-22 15:36:30 +00:00
florian
c00d752813 + create avx code in abs as well
* improved abs code generation with sse(2)

git-svn-id: trunk@26838 -
2014-02-22 15:35:14 +00:00
sergei
d004607876 * fpc_raiseexception does not return a result.
git-svn-id: trunk@26837 -
2014-02-22 15:18:31 +00:00
sergei
749ff6b19d * fpc_popobjectstack: clean up.
git-svn-id: trunk@26836 -
2014-02-22 14:44:29 +00:00
svenbarth
435dec656f * m68k/n68kcnv.pas, tm68ktypeconvnode.second_int_to_bool:
use the size of the destination instead of the source for the destination register; fixes tenum6

git-svn-id: trunk@26835 -
2014-02-22 14:35:30 +00:00
sergei
1f22c2de22 - Text i/o routines are not expected to return a value.
git-svn-id: trunk@26834 -
2014-02-22 13:42:41 +00:00
michael
ff2b6a90d9 * Added tests for various strutils functions by Karl-Michael Schindler (bug ID 25756)
git-svn-id: trunk@26833 -
2014-02-22 12:40:31 +00:00
Károly Balogh
1c930b5d24 sysutils/GetEnvironmentVariable() now handles PATH lengths above 255 chars
git-svn-id: trunk@26832 -
2014-02-22 10:37:20 +00:00
Károly Balogh
e286a7462c a slightly less broken getpathstring() for dos unit. yes, sadly this code is still in use on MorphOS, sysutils wraps to it
git-svn-id: trunk@26831 -
2014-02-22 09:40:41 +00:00
florian
ab3f5744e0 * skip dec/inc type checking in unspecialized generic methods, resolves #25603
git-svn-id: trunk@26830 -
2014-02-22 09:20:57 +00:00
Károly Balogh
31ec76422a redirect .s files to the RAM: drive on Amiga while compiling
git-svn-id: trunk@26829 -
2014-02-22 08:43:11 +00:00
Károly Balogh
c6d60979d2 set errno after syscalls. this fixes tiorte test at least. this code ideally should be in assembly, but it seems the assembler reader needs some fixing first...
git-svn-id: trunk@26828 -
2014-02-22 05:30:04 +00:00
Károly Balogh
50c59a1cc2 don't try to fillchar/move by a negative amount, fixes tmem test
git-svn-id: trunk@26827 -
2014-02-22 03:30:58 +00:00
Károly Balogh
74533a7c90 avoid generating addressing like <label>+8(aX), since this might fail during linking if label is more than 32k away, fixes linking with lineinfo unit here
git-svn-id: trunk@26826 -
2014-02-22 02:12:03 +00:00
svenbarth
60a07770f1 Fix cycling after addition of the new case simplification.
nset.pas, tcasenode.simplify: don't assume a specific order of the case labels

+ added test based on ppu.pas, tppu.getaint where no matching case label was found because of the ordering

git-svn-id: trunk@26825 -
2014-02-21 22:49:19 +00:00
svenbarth
500920030b Implement simplification of ordinal case nodes if the case expression is constant (might be useful when inlining).
+ nset.pas, tcasenode: add simplify method; for ordinal constant case expressions either return a copy of the correct block or return a nothing node if the constant did not match anything

+ added test to check that nothing is broken

git-svn-id: trunk@26824 -
2014-02-21 20:36:41 +00:00
nickysn
83dd2aed4a * refactored the pass_typecheck code for and/or/xor/comparisons, so that the logic is simpler, but still yields exactly the same result
git-svn-id: trunk@26823 -
2014-02-21 14:55:00 +00:00
michael
cc88c609c8 * Fixed known memory leaks, removed some debug statements and change TJSPrimaryExpressionIdent.AString -> name
git-svn-id: trunk@26822 -
2014-02-21 12:59:13 +00:00
michael
5c158507cf * Added some ease-of-use constructors
git-svn-id: trunk@26821 -
2014-02-21 12:58:00 +00:00
michael
1785a12670 * Fixed known memory leaks
git-svn-id: trunk@26820 -
2014-02-21 12:57:32 +00:00
michael
7d61aa0404 * Fixed known memory leaks
git-svn-id: trunk@26819 -
2014-02-21 12:56:58 +00:00
florian
6364cf412d * do not crash on invalid property declaration, resolves #23980
git-svn-id: trunk@26818 -
2014-02-19 19:44:06 +00:00
nickysn
3c332bf276 * not(is_signed(ld) xor is_signed(rd)) changed to (is_signed(ld)=is_signed(rd)) for better readability
git-svn-id: trunk@26817 -
2014-02-19 16:49:03 +00:00
lacak
58687847db fcl-db: bufdataset: formatting (cosmetic, char-case, ordering of methods)
git-svn-id: trunk@26816 -
2014-02-19 11:43:52 +00:00
sergei
c83f4c5ddc * Windows targets: removed 'errno' threadvar, OS error codes can be passed directly to Errno2InOutRes().
git-svn-id: trunk@26815 -
2014-02-19 07:28:46 +00:00
michael
d91da3bd6b * Patch from Petr-K to take into account modifier - for short date format (bug id 25731)
git-svn-id: trunk@26814 -
2014-02-18 21:23:13 +00:00
michael
3c3e2d1909 * Added NullStream compilation
git-svn-id: trunk@26813 -
2014-02-18 21:20:32 +00:00
florian
f7785be945 * make the dwarf line info reader more fault tolerant, patch by Martin Friebe, resolves #24900
git-svn-id: trunk@26812 -
2014-02-18 20:36:25 +00:00
florian
caba4a2050 + test for #24410 so it does not popup again
git-svn-id: trunk@26811 -
2014-02-18 19:30:42 +00:00
sergei
489b23cecd * Made TStartupInfo type common for win32 and win64 and updated as suggested by Mantis #23074.
* Deprecated StartupInfo variable because it is not there for Delphi compatibility (Delphi apparently does not have such variable in interface of its System unit), and we don't have other reasons to export non-portable stuff.

git-svn-id: trunk@26810 -
2014-02-18 16:49:08 +00:00
Jonas Maebe
5729c9c8ef * fixed shl/shr with constant value>=32 on 64 bit platforms
git-svn-id: trunk@26809 -
2014-02-18 16:46:36 +00:00
Jonas Maebe
7033ddf679 * converted tshshrnode to thlcgobj
o make sure that the return register has the correct size

git-svn-id: trunk@26808 -
2014-02-18 16:46:29 +00:00
sergei
5e762cc6ea * Second part of 64-bit Windows fixes and updates from Mantis #23074.
git-svn-id: trunk@26807 -
2014-02-18 09:26:47 +00:00
sergei
83deae45b8 * First part of 64-bit Windows fixes from Mantis #23074.
git-svn-id: trunk@26806 -
2014-02-18 02:10:35 +00:00
sergei
53f3bc052d - Do not compile non-SEH parts of exception handling if SEH is used.
git-svn-id: trunk@26805 -
2014-02-18 01:54:15 +00:00
svenbarth
1e48c7c930 Now that spilling correctly works on m68k we definitely need to store/restore the registers inside the FpSyscall functions. Fixes quite some tests.
* rtl/linux/m68k/syscall.inc:
    Remove "assembler" modifier and instead use an inline asm block with an accurate list of modified registers so that the compiler correctly stores/restores them

git-svn-id: trunk@26804 -
2014-02-16 21:21:40 +00:00
florian
6e1bf4d040 * properly simplify not(<const. cbool>), resolves #25255
git-svn-id: trunk@26803 -
2014-02-16 20:20:58 +00:00
florian
d185122799 * optimize type conversions away if bits has been masked by a previous and operation
git-svn-id: trunk@26802 -
2014-02-16 18:40:35 +00:00
florian
ac85d44899 * do OpCmp2OpS optimization also if after cmp follows an appropriate mov
git-svn-id: trunk@26801 -
2014-02-16 18:39:55 +00:00
michael
c3a0d0ece3 * Applied patch from Luiz Americo with some optimizations. (Bug ID 25745)
git-svn-id: trunk@26800 -
2014-02-16 18:14:00 +00:00
florian
150363c09e * thlcgobj.a_load_regconst_subsetreg_intern takes care if the whole register is modified
git-svn-id: trunk@26799 -
2014-02-16 15:13:43 +00:00
florian
07579cf0b7 * cleanup
git-svn-id: trunk@26798 -
2014-02-16 13:15:16 +00:00