Commit Graph

13854 Commits

Author SHA1 Message Date
sergei
3edaa66ee7 * For Win64, handle environment variables the same way as on Win32 (the generic version of GetEnvPChar does not return nil for non-existent environment variables).
git-svn-id: trunk@21035 -
2012-04-25 15:28:55 +00:00
pierre
1b3fd997fc + Regenerate all Makefiles's after adding x86_64 netbsd target
git-svn-id: trunk@21031 -
2012-04-24 23:15:18 +00:00
florian
13e152f8a9 * even if currency is handle by an int64, it needs no extra handling in handle_default
git-svn-id: trunk@21025 -
2012-04-24 18:47:58 +00:00
florian
aa2a9dbf2e patches by Nico Erfurth to improve the arm peephole optimizer:
* Introduce MatchInstruction and MatchOperand

MatchInstruction allows to match an instruction by condition and
oppostfix. MatchOperand checks if an operand is a register and matches
another operand. In the future this could be overloaded with other
versions not only accepting TRegister.

* Optimize cmp,moveq,movne sequence on ARM

This patch implements an peephole optimizer for the following sequence:

  cmp   reg,const1
  movne reg,const2
  moveq reg,const1

* Small improvements to the ARM peephole optimizer

Most instructions in the ARM ISA have taicpu(p).oper[0]^.typ = top_reg
as the only option, so there is no need to check for it if we're
looking at those instructions.

* Remove redundant mov instructions on ARM

This is an addition to the ARM PeepHole Optimizer.
It folds code like this:

mov reg1, reg2
add reg1, reg1, (const|reg)

git-svn-id: trunk@21024 -
2012-04-24 18:25:19 +00:00
pierre
bf1690458a Partial fix for x86_64 peephole optimization
git-svn-id: trunk@21022 -
2012-04-24 15:38:07 +00:00
sergei
13e513fdf7 * Pass NR_FUNCTION_RESULT_REG to FPC_SAFECALLCHECK in target-independent way.
* Added missing call to paramanager.freecgpara.
* Handle safecall stuff after deallocating registers of the main call in order to keep allocations balanced.

git-svn-id: trunk@21021 -
2012-04-24 14:50:56 +00:00
sergei
04ca8a9126 * translate_disp_call: improved building the parameter block by using ttemprefnode.create_offset instead of taking address/pointer additions/dereference. Results in simpler node tree and lesser CPU instructions generated.
git-svn-id: trunk@21018 -
2012-04-24 12:51:36 +00:00
sergei
6d0dd50be3 * tcallnode.maybe_load_in_temp: treat asnode like callnode, because asnodes are converted into helper calls in pass 1. Improves code generated for expressions "(a as b).SomeMethod".
git-svn-id: trunk@21017 -
2012-04-24 12:31:21 +00:00
Jonas Maebe
d08a17b763 * AIX requires record data that partially fills a register to be
left-aligned. Other targets only require this if the total size of the
    parameter was > 8 bytes (this last part used to be ensured by
    the ppc64-specific version of a_load_ref_cgpara() that was removed in
    r20962)

git-svn-id: trunk@21008 -
2012-04-23 21:14:38 +00:00
Jonas Maebe
426d44905e * add symtable to uses clause for tabstractsymtable, part of r20967
(fixes powerpc64 compiler compilation)

git-svn-id: trunk@20981 -
2012-04-22 10:41:02 +00:00
Jonas Maebe
5dac788b71 * use tabstractrecordsymtable.has_single_field() to determine whether a
record has only a single field (and if so, which one) when checking
    whether we have to treat the record as if it was actually its first
    field that's passed as a parameter (fixes problems with records
    with methods, e.g. crash while compiling tests/test/trhlp35)

git-svn-id: trunk@20967 -
2012-04-21 20:18:08 +00:00
Jonas Maebe
d7247c9bd9 * prevent duplicate symbol errors when compiling code with debug info
on AIX due to the extra inserted local symbols (although in case e.g
   multiple procedures contain a typed constant with the same name, only
   one can be accessible)
  * removed '.' suffix of local symbols inserted for debug info of typed
    constants for AIX (gdb couldn't find those symbols; it seems the
    address calculated by gdb for typed constants is still not correct
    though)

git-svn-id: trunk@20966 -
2012-04-21 20:18:03 +00:00
Jonas Maebe
35b80a4229 * enable assembling via pipe for the AIX assembler
git-svn-id: trunk@20965 -
2012-04-21 20:17:58 +00:00
Jonas Maebe
ec77b0f3ca * fixed writing the alignment for datablocks on darwin/aix based on
the last section's alignment (lastalignment is log2(alignment) there,
    and writesection again takes log2() of its parameter)

git-svn-id: trunk@20964 -
2012-04-21 20:17:53 +00:00
Jonas Maebe
3380b58695 * when we get near the limit of the maximum number of TOC entries that can
be generated for a single object file on AIX, automatically switch to
    an indirection scheme that uses much less TOC entries, but is slower to
    access global variables
  * manually merged infrastructure for target-specific code generation
    switches from JVM branch (-CTxxx switches)
  * -CTsmalltoc switch for AIX that forces the indirection scheme for TOC
    entries from the start in case the automatic one does not conserve
    a sufficient amount (or in case you bump up against the global TOC
    entries limit during linking)

git-svn-id: trunk@20963 -
2012-04-21 20:17:46 +00:00
Jonas Maebe
a473cf14d6 - removed ppc64-specific a_load_ref_cgpara(), the generic one can also
handle of its special cases nowadays

git-svn-id: trunk@20962 -
2012-04-21 20:17:40 +00:00
Jonas Maebe
b512744bfb * don't overwrite the reg to load in a parameter in tcg.a_load_reg_cgpara()
if the value has to be shifted first (it could be a regvar)
  * also take the cgpara's shiftval into account when loading a constant

git-svn-id: trunk@20961 -
2012-04-21 20:17:35 +00:00
Jonas Maebe
5f3db3c1ba * if we assign something to a record field whose type is not regable by
itself (e.g. a 3-byte record as field insde a 4 byte record), make
    the parent record non-regable either. The reason is that the parent
    record will be forced to memory in that case when subscripting, and
    the assignment will happen to this temporary memory location.
    Fixes tests/test/tw15357.pp on ppc64 when compiled with -O2 and
    without -Cg (not sure why enabling PIC disables global regvars)

git-svn-id: trunk@20959 -
2012-04-21 18:38:31 +00:00
Jonas Maebe
98609d4c3e * also create a realconstn for default(currency) on platforms where the
currency type is implemented via int64 (fixes tests/test/tdefault1 on
    platforms without an x87)

git-svn-id: trunk@20958 -
2012-04-21 18:38:27 +00:00
florian
c7974fe119 * mipsel-linux uses also a dollar sign as separator in assembler names
git-svn-id: trunk@20955 -
2012-04-21 18:19:38 +00:00
florian
5bf1354eca * lazarus project file updates
git-svn-id: trunk@20954 -
2012-04-21 18:18:23 +00:00
Jonas Maebe
b0f32fc5c2 * since we don't check interfaces yet during whole program optimization,
assume that all virtual methods that can be called via interfaces that
    appear in the program are in fact called (fixes WPO when applied to
    MSEIDE)

git-svn-id: trunk@20952 -
2012-04-21 11:00:56 +00:00
Jonas Maebe
5c6c5699a9 * cs_wpo_optimize_vmts also needs all unit info
git-svn-id: trunk@20951 -
2012-04-21 10:59:21 +00:00
Jonas Maebe
a8087498fa * tell GNU nm not to print undefined symbols, because
a) we don't care about them
     b) for 32 bit binaries on 64 bit platforms, they are indented differently
        than defined symbols
    (fixes -OWsymbolliveness for 32 bit binaries on 64 bit Linux platforms)

git-svn-id: trunk@20950 -
2012-04-21 10:58:42 +00:00
pierre
84cd32a593 * Add more explicit sizes for array types
git-svn-id: trunk@20948 -
2012-04-20 22:22:29 +00:00
Jonas Maebe
8c27e280e9 * pocall_mwpascal is the same as cdecl/cppdecl -> handle it the same for
varargs

git-svn-id: trunk@20947 -
2012-04-20 21:23:01 +00:00
florian
532102d3fa * use correct result registers for in64 results on armbe, resolves #21731
git-svn-id: trunk@20945 -
2012-04-20 18:07:06 +00:00
pierre
34bc5ea624 * Use localalignmax in calc_stackframe_size method
git-svn-id: trunk@20938 -
2012-04-20 12:13:52 +00:00
pierre
f0afaef920 Use linux/i386 aligmnents for NetBSD/OpenBSD i386
git-svn-id: trunk@20937 -
2012-04-20 12:09:41 +00:00
paul
b80e7c8fba compiler: change candidates search preference for variant arguments based on testing delphi XE + fixing tests
before the change order was (from better to worse): shortstring, ansistring, widestring, unicodestring
now the order is (from better to worse): widestring, unicodestring, ansistring, shortstring

git-svn-id: trunk@20907 -
2012-04-18 09:13:24 +00:00
Jonas Maebe
8e3d7fe8d3 * fixed genmultistringadd() optimization for jvm and enabled it
* created separate version of fpc_AnsiStr_Concat_multi() after all
    because it contains a punicodechar(unicodestring) typecast, which
    can't be supported on the JVM target (and splitting it out in the
    generic code seems like a bit overkill), and restored original
    generic version of fpc_AnsiStr_Concat_multi() (slightly faster
    than version partially adapted for jvm)

git-svn-id: branches/jvmbackend@20903 -
2012-04-16 20:51:51 +00:00
Jonas Maebe
02413c8a57 * moved maybequoted() from cutils to cfileutl and let its behaviour vary
based on the actual target platform rather than always on the host
    platform
  * on Unix, use single rather than double quotes for quoting, so it also
    properly handles $, ! and `, which keep their special meaning when
    appearing in scripts inside double quotes
  * since sysutils.executeprocess() can only deal with double-quoted
    strings in parameters, re-quote parameters on Unix when they turn
    out not to be for scripts but for direct execution (which is most
    of the time, but unfortunately doing the reverse is not possible
    because parameters used in scripts sometimes contain script-specific
    code that must not be quoted, such as `cat link.res`)
   -> always use cfileutl.RequotedExecuteProcess() rather than
    sysutils.ExecuteProcess() in the compiler (added a bunch of dummy
    ExecuteProcess string constants to common units to prevent accidental
    usage)

git-svn-id: branches/jvmbackend@20901 -
2012-04-16 19:52:36 +00:00
Jonas Maebe
ac419e1cb4 + passthrough hlcgpu for AVR
git-svn-id: branches/jvmbackend@20898 -
2012-04-15 21:43:57 +00:00
Jonas Maebe
cdefb6720f * fixed compilation after r20801
git-svn-id: trunk@20895 -
2012-04-15 21:11:10 +00:00
Jonas Maebe
fb73001389 * don't give an internalerror when setting the mangledbasename in case the
regular mangledname has already been set (just like we don't internalerror
    when changing the regular mangledname even if it has already been set);
    this happens e.g. when specifying the external name of some interface
    variables, such as in the Win32 system unit

git-svn-id: branches/jvmbackend@20893 -
2012-04-15 20:49:40 +00:00
florian
fc673340fe + implemented x86-64 mov optimization to test register usage tracking framework
git-svn-id: trunk@20892 -
2012-04-15 20:30:45 +00:00
florian
3c33bf4e6d * completed framework for register usage tracking
git-svn-id: trunk@20891 -
2012-04-15 20:29:35 +00:00
Jonas Maebe
aee5380ae0 * merged trunk up to r20882
o support for the new codepage-aware ansistrings in the jvm branch
   o empty ansistrings are now always represented by a nil pointer rather than
     by an empty string, because an empty string also has a code page which
     can confuse code (although this will make ansistrings harder to use
     in Java code)
   o more string helpers code shared between the general and jvm rtl
   o support for indexbyte/word in the jvm rtl (warning: first parameter
     is an open array rather than an untyped parameter there, so
     indexchar(pcharvar^,10,0) will be equivalent to
     indexchar[pcharvar^],10,0) there, which is different from what is
     intended; changing it to an untyped parameter wouldn't help though)
   o default() support is not yet complete
   o calling fpcres is currently broken due to limitations in
     sysutils.executeprocess() regarding handling unix quoting and
     the compiler using the same command lines for scripts and directly
     calling external programs
   o compiling the Java compiler currently requires adding ALLOW_WARNINGS=1
     to the make command line

git-svn-id: branches/jvmbackend@20887 -
2012-04-15 15:54:10 +00:00
florian
2a6a4831ea * basics for generic register usage information
git-svn-id: trunk@20886 -
2012-04-15 14:20:47 +00:00
florian
9e105677db * optimize mov/and sequences on x86-64
git-svn-id: trunk@20883 -
2012-04-15 12:58:02 +00:00
florian
4b7748ad11 * better suitable on x86_64-linux
git-svn-id: trunk@20876 -
2012-04-14 20:09:31 +00:00
florian
39ab9eceba * fix OpsEqual
git-svn-id: trunk@20875 -
2012-04-14 20:08:56 +00:00
florian
d24b70d22b * ported part of the i386 peep hole optimizer to x86-64 to see if it is possible to create a shared x86 peep hole optimizer
git-svn-id: trunk@20874 -
2012-04-14 19:08:02 +00:00
Jonas Maebe
93210cc419 * store JVM namespace separately from unitname so it doesn't conflict with
dotted unit names

git-svn-id: branches/jvmbackend@20872 -
2012-04-14 17:38:12 +00:00
Jonas Maebe
2b0d0bbee4 * also set the mangledbasename when a public name is specified for a
variable (used to create the JVM-style mangled name later on)

git-svn-id: branches/jvmbackend@20871 -
2012-04-14 17:38:06 +00:00
Jonas Maebe
622eb4b782 * call getbasedef before getting the classdef of an enum (only the basedef
has an associated class)

git-svn-id: branches/jvmbackend@20870 -
2012-04-14 17:38:02 +00:00
Jonas Maebe
21722802fa * also allow taking the address of a derefence expression on the JVM target
(required for taking the address of threadvars, used by the current RTL)

git-svn-id: branches/jvmbackend@20869 -
2012-04-14 17:37:56 +00:00
florian
ce845bf97c * introduction of in_generic in r20699 was unneeded, replaced by parse_generic
git-svn-id: trunk@20858 -
2012-04-12 21:53:10 +00:00
Jonas Maebe
210eac085a * do not perform stabstr replacements on mangled names of typed constants
(fixes stabs after r20842)

git-svn-id: trunk@20855 -
2012-04-12 16:13:27 +00:00
Jonas Maebe
e9d52f7b95 * fixed copy/paste bug that caused the default target OS to be always set
to AIX on Linux PPC32/64 platforms

git-svn-id: trunk@20854 -
2012-04-12 09:36:46 +00:00
Tomas Hajny
2cb7b4cf0f * fixed a silly bug from r20694
git-svn-id: trunk@20852 -
2012-04-11 21:12:03 +00:00
Jonas Maebe
ec1cceb3d1 + support for generating multiple script files (.sh/.bat/.cmd/...) with link
commands

git-svn-id: trunk@20847 -
2012-04-11 18:07:01 +00:00
Jonas Maebe
ebc542a48b * gcc does add a .file statement for AIX (but using different code than for
other platforms, which is where the confusion stemmed from)

git-svn-id: trunk@20846 -
2012-04-11 18:06:57 +00:00
Jonas Maebe
247033cce1 + stabx support for AIX, which is a variant of stabs. Note that we only
support the stabx as understood by gdb, which is a mixture of regular
    stabs and stabx (e.g., class/object definitions are completely different
    in real stabx). This means that gdb can be used to debug aix programs,
    but the native dbx will complain about lots of debug information
    constructs

git-svn-id: trunk@20842 -
2012-04-11 18:06:38 +00:00
Jonas Maebe
adbad5ab96 + fcl-res support for xcoff/aix
+ compiler support for Delphi-style resources on aix

git-svn-id: trunk@20841 -
2012-04-11 18:06:33 +00:00
Jonas Maebe
16692ff7c1 + support for AIX nm output
git-svn-id: trunk@20837 -
2012-04-11 18:06:13 +00:00
Jonas Maebe
1c91a555f4 + support for asd_reference, asd_weak_reference and asd_weak_definition
in AIX assembler writer

git-svn-id: trunk@20836 -
2012-04-11 18:06:09 +00:00
Jonas Maebe
5433db6a49 * also specify the section alignment with the section statements themselves
on AIX. Adding ".align" statements only align relative to the section
    start, but does not influence the alignment of the section itself

git-svn-id: trunk@20835 -
2012-04-11 18:06:05 +00:00
Jonas Maebe
cc4169ef68 * don't raise an internalerror when the the binding type of a weak external
symbol is changed to something else (binding a weak symbol to a real
    implementation in the current file is valid)

git-svn-id: trunk@20834 -
2012-04-11 18:06:00 +00:00
Jonas Maebe
d545a72f1a + lnfogdb unit that can use gdb to symbolicate backtraces on unix targets
(used for stabx/aix)

git-svn-id: trunk@20833 -
2012-04-11 18:05:56 +00:00
Jonas Maebe
7aa3b99fb5 + -CN/{$CHECKLOWADDRLOADS+/-} switch to enable explicit checks for accesses
to low addresses in case the target cpu/OS does not support this (enabled
    for reads on AIX/PPC because on AIX the first 16KB are readable)

git-svn-id: trunk@20832 -
2012-04-11 18:05:50 +00:00
Jonas Maebe
69e01418bb * set the type of record/object/class method symbols to AT_FUNCTION
* in case of a jump/call to an AT_FUNCTION symbols on
    systems_dotted_function_names platforms, prepend a dot to the symbol
    name in assembler code

git-svn-id: trunk@20829 -
2012-04-11 18:05:35 +00:00
Jonas Maebe
a9220ffd2a + systems_dotted_function_names set that holds targets using dotted function
names as function descriptors

git-svn-id: trunk@20828 -
2012-04-11 18:05:31 +00:00
Jonas Maebe
8a35bb090a + ansistring version of strpnew()
git-svn-id: trunk@20827 -
2012-04-11 18:05:27 +00:00
Jonas Maebe
1f9d8420b6 * set correct fileinfo for the asmnodes (so that the start fileinfo of
assembler functions doesn't get changed into the end fileinfo)

git-svn-id: trunk@20825 -
2012-04-11 18:05:16 +00:00
Jonas Maebe
51e50f72be + support for creating dynamic libraries on AIX
git-svn-id: trunk@20818 -
2012-04-11 18:04:40 +00:00
Jonas Maebe
ddde9760c2 * ignore tf_no_backquote_support in source_info.flags in case we will link
on the target system (-St command line option during cross-compiling)

git-svn-id: trunk@20817 -
2012-04-11 18:04:36 +00:00
Jonas Maebe
cf2ffdce1a * use cg.g_external_wrapper() rather than cg.a_jmp_name() to generate stubs
for alternate shared library function names (corrects them on at least
    AIX and Linux/ppc64)

git-svn-id: trunk@20816 -
2012-04-11 18:04:31 +00:00
Jonas Maebe
909f99b4c7 * code symbols start with a dot on AIX just like on linux/ppc64
git-svn-id: trunk@20813 -
2012-04-11 18:04:16 +00:00
Jonas Maebe
44bd889b9b * regenerated Makefiles with AIX support
git-svn-id: trunk@20812 -
2012-04-11 18:03:57 +00:00
Jonas Maebe
9ca2ea7fd0 + AIX support to Makefiles
git-svn-id: trunk@20809 -
2012-04-11 18:02:38 +00:00
Jonas Maebe
b93cc83703 * on AIX, you also can't have a label without data coming at the end of the
resource string table -> use same workaround as for Darwin

git-svn-id: trunk@20805 -
2012-04-11 18:02:18 +00:00
Jonas Maebe
dc70db9402 * parameter passing support for AIX:
o the last bytes of records passed by value whose size is not a multiple
     of the register size must be passed in the upper (leftmost) bytes of
     a register

git-svn-id: trunk@20804 -
2012-04-11 18:02:13 +00:00
Jonas Maebe
273b90fc37 + AIX assembler writer
o .short/.long/.llong are automatically aligned to 2/4/8 byte multiples
     by the AIX assembler (and for compatibility reasons, also by the
     GNU assembler when targeting AIX) -> change to .vbyte statements
  o .ascii does not allow non-ASCII characters in the AIX assembler
    -> change to .byte sequences like gcc on AIX

git-svn-id: trunk@20803 -
2012-04-11 18:02:08 +00:00
Jonas Maebe
260958eb45 * changed last parameter of g_indirect_sym_load() to a set and also
pass on whether the symbol refers to code or data (important for
    AIX weak symbols; note that AIX does not support undefined weak
    external symbols, and FPC does not yet support weakly defining
    non-external symbols, so this functionality isn't really used yet)

git-svn-id: trunk@20802 -
2012-04-11 18:02:03 +00:00
Jonas Maebe
ac43eb9b70 + generic implementation of ReplaceForbiddenAsmSymbolChars() instead
of the AVR-specific ifdef'ed variant
   o since the only special character we use in mangled names on all platforms
     is $, added a new field to tasminfo called "dollarsign" that holds the
     character $'s should be replaced with (if it doesn't have to be replaced,
     leave it at $)

git-svn-id: trunk@20801 -
2012-04-11 18:01:57 +00:00
Jonas Maebe
23df85e52a * initialize dirhint field of created tasmconds
git-svn-id: trunk@20800 -
2012-04-11 18:01:49 +00:00
Jonas Maebe
aaf6015b51 * converted tai directive string from pshortstring to ansistring (some
AIX directives are quite long)

git-svn-id: trunk@20799 -
2012-04-11 18:01:41 +00:00
Jonas Maebe
7a92d5e912 + TExternalAssembler.AsmWrite(ansistring) (from JVM branch), needed to be
able to write long tasmdirective strings required by AIX target

git-svn-id: trunk@20798 -
2012-04-11 18:01:35 +00:00
Jonas Maebe
71106219f2 * detect RTOC-based accesses on AIX in inline assembly, and change the
symbol names to those of the associated TOC entries

git-svn-id: trunk@20797 -
2012-04-11 18:01:29 +00:00
Jonas Maebe
b738657bf3 * on AIX, functions are called via function descriptors whose name
is '.' followed by the function symbol name (like on linux/ppc64)

git-svn-id: trunk@20796 -
2012-04-11 18:01:21 +00:00
Jonas Maebe
4123df9cb8 * moved g_external_wrapper() code from powerpc64/cgcpu to ppcgen/cgppc,
made it 32/64 bit neutral and adjusted it so it can be used for
   linux/ppc64, aix/ppc and aix/ppc64

git-svn-id: trunk@20795 -
2012-04-11 18:01:14 +00:00
Jonas Maebe
95966da949 + AIX support for a_call_reg()
* renamed some ppc64 stackframe offset constants to the same names as their
    32 bit counterparts so they can be used in shared ppc code

git-svn-id: trunk@20794 -
2012-04-11 18:01:01 +00:00
Jonas Maebe
509df28361 + AIX symbol handling: load symbol address from the TOC
* fixed code dealing with symbol+offsets on 64 bit platforms in
    case of offsets > 32 bit (and to use smallint() typecasts
    instead of lo(), since the return value of lo() depends on
    the type passed in)

git-svn-id: trunk@20793 -
2012-04-11 18:00:48 +00:00
Jonas Maebe
481b3d99a9 * just like Darwin and Classic Mac OS, AIX uses the system crt* files and
hence contains a dummy "main" that refers to the system unit
    FPC_SYSTEMMAIN, which in turn jumps to the main program's PASCALMAIN
  * we call FPC_SYSTEMMAIN instead of jumping to it like on Darwin, so that
    the TOC gets set correctly

git-svn-id: trunk@20792 -
2012-04-11 18:00:43 +00:00
Jonas Maebe
57908f528b * AIX-specific struct alignment rules
o doubles are aligned to 8 bytes outside records, but to 4 bytes
     inside them
   o same as for Darwin/PPC: if the first field of a record has 8 byte
     alignment (including double!), then the struct itself gets 8 byte
     alignment

git-svn-id: trunk@20791 -
2012-04-11 18:00:37 +00:00
Jonas Maebe
462de0f5fd + AIX target definition and info for the compiler and ppudump
git-svn-id: trunk@20790 -
2012-04-11 18:00:29 +00:00
Jonas Maebe
452414e1a7 - removed cg.g_indirect_sym_load() calls from pass_generate_code; this
routine is called from tcgppcgen.fixref()/tcgx86.make_simple_ref()
    when necessary

git-svn-id: trunk@20789 -
2012-04-11 18:00:21 +00:00
paul
75eaad88fb compiler: don't crash after r20753
git-svn-id: trunk@20778 -
2012-04-10 01:19:10 +00:00
pierre
34a4ee46ff Use elf32 binary writer for i386 netbsd target
git-svn-id: trunk@20776 -
2012-04-09 22:00:54 +00:00
Tomas Hajny
46d3da9ca3 * message include files regenerated
git-svn-id: trunk@20764 -
2012-04-08 20:02:12 +00:00
Tomas Hajny
b11a2b169a * fixed inconsistent license files references
git-svn-id: trunk@20763 -
2012-04-08 20:00:45 +00:00
florian
dd70debe80 * records containing managed types are not "regable", resolves #21674
git-svn-id: trunk@20753 -
2012-04-07 20:19:48 +00:00
florian
6b8a865f93 * update msgidx.inc and msgtxt.inc after r20747
git-svn-id: trunk@20751 -
2012-04-07 19:27:09 +00:00
pierre
02479d0409 Add openbsd/netbsd x86_64 systems to list using 16 for size of cextended type
git-svn-id: trunk@20749 -
2012-04-07 17:03:21 +00:00
Tomas Hajny
a5a7c2aa3e * directions for reporting bugs are different from those for asking questions nowadays
git-svn-id: trunk@20747 -
2012-04-07 16:43:15 +00:00
Tomas Hajny
20ebbefc2b * e-mail address for reporting bugs is not valid since long time ago
git-svn-id: trunk@20746 -
2012-04-07 16:31:08 +00:00
pierre
20eaf3240a Accept x86_64_netbsd system for GNU as
git-svn-id: trunk@20745 -
2012-04-07 15:54:17 +00:00
pierre
06c362c02f Accept x86_64_netbsd system for elf64 object writer
git-svn-id: trunk@20744 -
2012-04-07 15:53:36 +00:00
florian
7819eb892c * use GNU AS as default assembler on x86_64-win64 now
git-svn-id: trunk@20740 -
2012-04-07 13:00:46 +00:00
Jonas Maebe
c4d80a8a10 * only try to use objdump to extract symbol liveness information if the
target OS is Linux, since it's not supported on other platforms for that
    purpose

git-svn-id: trunk@20739 -
2012-04-07 11:11:48 +00:00
florian
7fe6c0d95d * handle currency constants correctly on non i386 platforms if they are given as integer constant, resolves #21091
git-svn-id: trunk@20734 -
2012-04-06 22:13:48 +00:00
pierre
39d6d4800f * Set netbsd defautf for x86_64 compiler if on netbsd system
git-svn-id: trunk@20733 -
2012-04-06 22:07:38 +00:00
pierre
175ec19308 + Register for system_x86_64_ntbsd
git-svn-id: trunk@20732 -
2012-04-06 22:04:20 +00:00
pierre
d5dd980efe + Add system_x86_64_ntbsd_info record
git-svn-id: trunk@20731 -
2012-04-06 22:03:37 +00:00
pierre
6907539691 * Add system_x86_64_netbsd system
git-svn-id: trunk@20730 -
2012-04-06 21:43:40 +00:00
pierre
b6576452ed Use correct dynamic linker for x86_64 openbsd system
git-svn-id: trunk@20728 -
2012-04-06 21:21:56 +00:00
pierre
7dfbc38c68 Mark x86_64 openbsd system as under development
git-svn-id: trunk@20727 -
2012-04-06 21:21:15 +00:00
florian
d1e16c3cd4 + define CPUX86 on i386 and CPUX64 on x86-64, resolves #21670
git-svn-id: trunk@20726 -
2012-04-06 21:05:09 +00:00
florian
9fcff238f1 * create and push array def before the array range is parsed, this allows generic parameters to be used in the range definition, resolves #21592
git-svn-id: trunk@20725 -
2012-04-06 20:35:18 +00:00
pierre
2c4d8cc9d9 Add x86_64-openbsd target in Makefiles
git-svn-id: trunk@20723 -
2012-04-06 16:49:08 +00:00
pierre
58ef9b63dd Accept i386/x86_64 openbsd systems for elf object writer
git-svn-id: trunk@20718 -
2012-04-05 21:10:43 +00:00
pierre
b1900cda2a + Add system_x86_64_openbsd to systems_openbsd set
git-svn-id: trunk@20717 -
2012-04-05 21:09:31 +00:00
pierre
2b5cadf271 + Add system_x86_64_openbsd to list of supported systems for as assembler
git-svn-id: trunk@20716 -
2012-04-05 21:08:14 +00:00
pierre
7e71e1d3a0 + Add system_x86_64_openbsd_info record
git-svn-id: trunk@20715 -
2012-04-05 21:06:56 +00:00
pierre
2794ce5c09 + Add system_x86_64_openbsd system
git-svn-id: trunk@20714 -
2012-04-05 21:04:21 +00:00
florian
c5445399c6 * take care also of reg. allocation information after the current instruction when moving it
git-svn-id: trunk@20709 -
2012-04-05 14:21:41 +00:00
florian
9867f34398 * the arm rescheduler has not only to move instructions but also associated register allocations
git-svn-id: trunk@20707 -
2012-04-04 21:21:52 +00:00
florian
1f154028da * proper title value
git-svn-id: trunk@20706 -
2012-04-04 19:42:31 +00:00
florian
fecafd8bb7 * unified formatting
git-svn-id: trunk@20700 -
2012-04-03 19:30:04 +00:00
florian
79a77ae7d6 + in_generic for testing if currently a generic declaration/definition is parsed/record
* omit several error messages when in_generic is true because the error can be checked only during specialisation, resolves the issue reported in #21592

git-svn-id: trunk@20699 -
2012-04-03 19:29:09 +00:00
florian
a1f9055978 * formatting
git-svn-id: trunk@20697 -
2012-04-03 16:14:15 +00:00
pierre
24ba8e2dca * Fix bug #21607
git-svn-id: trunk@20696 -
2012-04-03 07:27:55 +00:00
Tomas Hajny
2a57a6a307 * add previously missing support for proper handling of -? from the fpc binary
git-svn-id: trunk@20695 -
2012-04-02 22:24:01 +00:00
Tomas Hajny
b12c38984b * fpc binary supported options made localizable and not shown separately from those handled by ppc* any longer
git-svn-id: trunk@20694 -
2012-04-02 22:11:21 +00:00
florian
bb8be38607 - removed some no longer used constants
git-svn-id: trunk@20688 -
2012-04-01 20:49:34 +00:00
pierre
c3da1aa542 Reenabled D0-D30 registers
git-svn-id: trunk@20674 -
2012-03-30 15:54:05 +00:00
pierre
b2608f326e Fix error in final output
git-svn-id: trunk@20673 -
2012-03-30 15:46:57 +00:00
pierre
f1203398d9 + Add sparc register includes generation rule
git-svn-id: trunk@20672 -
2012-03-30 15:45:45 +00:00
pierre
ce90cae9f4 + Add sparc register includes generation rule
git-svn-id: trunk@20671 -
2012-03-30 15:45:38 +00:00
Jonas Maebe
39242c2cfa - removed changes from r20660 (ARM hard float patch): ARM VFP regvars are
in LOC_CMMREGISTER, not in LOC_CFPUREGISTER (and they also are there in
    case the softfp calling convention is used), and this change broke SPARC

git-svn-id: trunk@20667 -
2012-03-30 09:52:36 +00:00
Jonas Maebe
2a8f624eb0 * fixed returning small but "non-simple" records on ARM platforms that use
the old APCS calling convention (such as iOS): they are returned by
    reference

git-svn-id: trunk@20665 -
2012-03-29 20:54:51 +00:00
Jonas Maebe
8525a30d9f * don't generate a classClass call for objc loadvmtaddrnodes generated
for inherited calls (that is only required when not using them for
    dispatch purposes, and calling an inherited method is obviously
    a dispatch situation)

git-svn-id: trunk@20664 -
2012-03-29 20:54:47 +00:00
Jonas Maebe
dabcfc2806 + LOC_(C)LOC_SUBSETREF/G support for tcg.a_loadmm_loc_reg()
git-svn-id: trunk@20663 -
2012-03-29 20:54:42 +00:00
Jonas Maebe
86265534d0 * fixed misplaced endif that caused the default target not be set when
(hypothetically) running the compiler on Darwin/ARM

git-svn-id: trunk@20662 -
2012-03-29 20:54:38 +00:00
Jonas Maebe
bba4b02eb2 * use r7 instead of r11 as frame pointer on Darwin/iOS, and make sure r7
always points to the previous r7 on the stack (with the saved return
    address coming right after it) so that the debugger and crashreporter
    can use it for backtraces as specified in the ABI
   o changed NR_FRAME_POINTER_REG and RS_FRAME_POINTER_REG from a symbolic
     into a typed constant, and added a new method to tprocinfo that can
     be used to initialze it (so it can be inited to r7/r11 depending on
     the target platform)
  * allow using r9 on Darwin, it was only used by the system on iOS up to
    2.x, which we no longer support
  * prefer using r9 and r12 before r4..r11 on Darwin, because they are
    volatile and hence do not have to be saved

git-svn-id: trunk@20661 -
2012-03-29 20:54:33 +00:00
Jonas Maebe
6ba8dc7146 + support for the ARM hard float EABI on Linux (patch by Peter Green):
o new eabihf (hard float) abi
   o vfpv3_d16 variant of VFP (default variant used by EABI assemblers: VFPv3
     with only 16 double registers instead of 32) and pass it to GNU as
   o make the odd numbered single precision floating point VFP registers
     available for explicit allocation for use by the calling convention
  * fixed copy/paste error in stdname of S30 register
  -> use -dFPC_ARMHF to create an ARM eabi hard float compiler
  (mantis #21554)

git-svn-id: trunk@20660 -
2012-03-29 20:50:09 +00:00
pierre
1c27730c8c * Give debug information once for each conditional directive
git-svn-id: trunk@20648 -
2012-03-28 14:09:04 +00:00
pierre
ff8e1afec1 Display source position with timestamps also
git-svn-id: trunk@20647 -
2012-03-28 14:08:01 +00:00
svenbarth
bf5695c455 Allow unsetting the option for C-operators (-Sc-).
git-svn-id: trunk@20639 -
2012-03-27 11:40:10 +00:00
pierre
7101151b5c Avoid internal error 2002042430 and check overloading before calling simplify method
git-svn-id: trunk@20635 -
2012-03-26 15:44:47 +00:00
svenbarth
c9ca2a6c0c Correct messages that should not have been changed (merge during update gone wrong). Resolves Mantis #21553
git-svn-id: trunk@20631 -
2012-03-25 19:33:26 +00:00
Jonas Maebe
26754a3f9f * fully compare typenodes and rttinodes in their docompare() methods
(mantis #21551)

git-svn-id: trunk@20630 -
2012-03-25 16:52:34 +00:00
svenbarth
bd19a16be9 Add support for Default() intrinsic. For now this is only (fully) supported
in code and not in constants. In the case of primitive types constant nodes
are used while complex types like arrays, records and objects use a local
variable which is initialized to zero once at the entry of the method (the
variable is reused if Default() is used for the same type multiple times in
the same method). For this a new compilerproc was added which uses FillChar
to initialize the given memory area to zero.
This fixes Mantis #9420.

+ psystem.pas: Added Default symbol to system unit
+ htypechk.pas: Added function "is_valid_for_default" which checks recursively
                whether the given type can be used with Default at all. 
                Forbidden types are files, helpers, ObjC and C++ types. This
                check is used for records, arrays and objects only if the mode
                is a non-Delphi one, as Delphi ignores these types on lower
                levels.
+ msg/errore.msg: Added error message for unsupported types for Default()
+ symconst.pas: Added a new enum value vo_is_default_var which is used for the
                local variables utilized by Default() so their initalization
                and finalization can be avoided.
+ pexpr.pas: Add handling of Default() intrinsic to "statement_syssym"
+ ninl.pas: Extended tinlinenode by a method which returns the correct node for
            a Default() and used that method in handle_typecheck.
* ncgutil.pas: Check for new flag "vo_is_default_var" when initializing and
               finalizing local variables.
* ppu.pas: increase PPU version
+ psub.pas: 
  * Added a new routine which zeros defaultvars of a symtable.
  * Use this routine inside "initializevars".
  * Also use this routine to initialize the staticsymtable of the unit/program.
* Adjusted ppudump, because of the new enum value.
+ Added implementation of fpc_zeromem to system unit.
+ Added tests for Default()

git-svn-id: trunk@20629 -
2012-03-25 16:02:27 +00:00
Jonas Maebe
94bdf8a086 * adjust integer type information before stores part of a_op_const_ref for
Dalvik type checker

git-svn-id: branches/jvmbackend@20628 -
2012-03-25 14:46:37 +00:00
florian
a953b732d4 * update of project file
git-svn-id: trunk@20627 -
2012-03-25 14:23:57 +00:00
florian
f4af507321 * inline is only a hint to the compiler which might be ignored so throw only a hint and not a warning if subroutine cannot be inlined
git-svn-id: trunk@20626 -
2012-03-25 14:19:45 +00:00
Jonas Maebe
c4c9661f84 * set "forcall" to true for the objc loadvmtaddrnodes generated as
self parameter for invoking inherited method calls (if you are in a
    category method or a method of a child class, the extended or parent
    class must have already been loaded by the run time, so we can
    directly load the ISA pointer rather than detouring via the "class"
    method)

git-svn-id: trunk@20624 -
2012-03-25 12:59:17 +00:00
Jonas Maebe
284210ad48 * hardcode offset of the ISA field in Objective-C (meta)classes to be
0, just like gcc/clang. This results in more efficient code on
    non-fragile ABI platforms and removes a dependency of the name
    of the isa field in header translations

git-svn-id: trunk@20623 -
2012-03-25 12:55:18 +00:00
Jonas Maebe
2e3605e999 * fixed tobjectdef.is_related() checks in case formal class definitions are
involved and the classes are not exactly equal (but one is a child of the
    other): we have to look up the real class definition first in those cases

git-svn-id: trunk@20622 -
2012-03-25 11:37:21 +00:00
florian
ca90260855 + fix duplicate internal error, resolves #21545
git-svn-id: trunk@20619 -
2012-03-25 09:18:45 +00:00
florian
99b0421193 + patch by Seth Grover to support line number macro returning a numerical number, resolves #21372
git-svn-id: trunk@20608 -
2012-03-23 20:35:42 +00:00
florian
0f9b8c8936 * don't throw an error if a non-generic is tried to be specialized, resolves #21238
git-svn-id: trunk@20607 -
2012-03-23 20:32:40 +00:00
florian
0a118768c0 * updated copyright message to 2012
git-svn-id: trunk@20605 -
2012-03-23 18:38:05 +00:00
Jonas Maebe
94b058fe19 * fixed version of r20547: can't check the number of abstract methods of a
class before its VMT has been built, because that's the process that looks
    for inherited abstract methods that are overridden -> instead use a new
    synthetic method kind (tsk_callthrough_nonabstract) that will call
    through to another method (in this case a constructor) if the owning
    class does not contain any abstract methods, and generates an
    empty routine otherwise

git-svn-id: branches/jvmbackend@20589 -
2012-03-23 11:26:30 +00:00
florian
4cf4c65502 * write the file location (if available), if a unit is not found, resolves #21514
git-svn-id: trunk@20583 -
2012-03-22 21:04:16 +00:00
pierre
813ebf08e3 * Avoid having current_debuginfo pointing to freed memory
git-svn-id: trunk@20549 -
2012-03-21 10:17:43 +00:00
Jonas Maebe
94bffa65e9 * don't create an instance of abstract classes inside their virtual
constructors (simply do nothing), because creating an abstract class
    is not possible in the JVM (and while the JVM only triggers an
    exception when you actually execute code that tries to create an
    abstract class, the Android platform checks this using the bytecode
    verifier at class verification time and therefore stumbled over the
    old code)

git-svn-id: branches/jvmbackend@20547 -
2012-03-20 21:59:57 +00:00
florian
0cbdc1ae6e * deactivate assembler scheduler, needs some more fixes first
git-svn-id: trunk@20537 -
2012-03-18 17:05:22 +00:00
Jonas Maebe
4fd9d98dbb * correctly set default version for iPhoneOSVersionMin rather than for
MacOSXVersionMin when targeting iOS/iphonesim

git-svn-id: trunk@20536 -
2012-03-18 11:05:36 +00:00
Jonas Maebe
fc6be612fd * also insert an explicit conversion from byte/char/bytebool/... to smallint
on Dalvik, because those values are obtained via an "and 255" operation
    which again turns them into longint values as var as the Dalvik type
    system is concerned

git-svn-id: branches/jvmbackend@20527 -
2012-03-16 20:57:22 +00:00
Jonas Maebe
83235a483b * always return a LOC_JUMP from tjvmnotnode.second_boolean: required both
to correctly handle non-pasbool types (can't just "not" their value),
    and for Dalvik (a "not pasbool" became "xori 1", which turned the value
    from a boolean into an integer as far as the Dalvik type checker was
    concerned)

git-svn-id: branches/jvmbackend@20525 -
2012-03-16 17:23:55 +00:00
Jonas Maebe
639aa0c0c2 * fixed 64 bit boolean operations on ppc32 (fixes tests/test/taddbool)
git-svn-id: trunk@20521 -
2012-03-15 18:51:03 +00:00
Jonas Maebe
0248258670 * always size the value on top of the stack back down to its original size
after an 8/16 bit operation on Dalvik (even if the value cannot have
    become too big), because otherwise its type checker complains

git-svn-id: branches/jvmbackend@20520 -
2012-03-15 17:05:50 +00:00
florian
fbc519faeb * don't allow multiple deprecated messages, resolves #21466
git-svn-id: trunk@20515 -
2012-03-12 21:39:43 +00:00
florian
38d3a081f6 * update of TODOs
git-svn-id: trunk@20513 -
2012-03-11 20:12:46 +00:00
florian
0fe22a358b + first version of ldr instruction scheduler on arm
git-svn-id: trunk@20512 -
2012-03-11 19:10:58 +00:00
florian
e84a43768e * typo fixed
git-svn-id: trunk@20511 -
2012-03-11 08:24:44 +00:00
Jonas Maebe
5c56b1bc3d * give an error when trying to take address of a global label declared in
another scope instead of crashing (mantis #21078)

git-svn-id: trunk@20508 -
2012-03-10 23:24:43 +00:00
Jonas Maebe
3589f90cf8 * also show the valid bounds in most cases when signalling a range check
warning/error while evaluating constants (mantis #21299)

git-svn-id: trunk@20507 -
2012-03-10 21:53:36 +00:00
florian
3b1df45c28 * version update
git-svn-id: trunk@20505 -
2012-03-10 21:06:06 +00:00
florian
2f5ce095ce * RefsHaveIndexReg -> cpurefshaveindexreg
* cpurefshaveindexreg defined properly in fpcdefs.inc

git-svn-id: trunk@20504 -
2012-03-10 19:43:52 +00:00
Jonas Maebe
eb2cccffda + -WM<X> and -WP<x> command line parameters to specify the minimally required
Mac OS X/iOS version for the compiler code
   o such a parameter is not passed, extract the information from the
     environment variables MACOSX_DEPLOYMENT_TARGET/IPHONEOS_DEPLOYMENT_TARGET,
     like gcc
   o if neither the parameter nor the environment variable is used, use preset
     default values
   o pass on this version setting on to the Darwin linker
   o use this setting to determine which version of the startup code (crt1.o
     etc) to use, if any (based on information gathered from the GCC sources)
   o define a symbol called MAC_OS_X_VERSION_MIN_REQUIRED/
     IPHONE_OS_VERSION_MIN_REQUIRED based on this parameter
   o for usage information, see
     http://wiki.freepascal.org/FPC_New_Features_Trunk#Support_for_specifying_and_querying_the_deployment_version

git-svn-id: trunk@20503 -
2012-03-10 19:31:57 +00:00
Jonas Maebe
d95d0e588d - removed a sanity check for the output of nm, because it doesn't hold
on Darwin in some cases: it sometimes has a "symbol" with the name
    " stub helpers" (including the leading space)

git-svn-id: trunk@20502 -
2012-03-10 19:22:44 +00:00
Jonas Maebe
34df763ab1 * allocate space for the explicitly allocated assert parameter
git-svn-id: trunk@20501 -
2012-03-10 19:20:07 +00:00
florian
7ea7031017 + cpu type armv5t
git-svn-id: trunk@20500 -
2012-03-10 19:04:22 +00:00
Jonas Maebe
188677ea91 * fixed the offset of memory parameters allocated via getintparaloc():
the register parameters are not put on the stack, so don't count them
    (only makes a practical difference for fixed stack targets, fixes
     random crashes with webtbs/tw3870 on Darwin/i386)

git-svn-id: trunk@20499 -
2012-03-10 18:01:22 +00:00
florian
9c6e3d317a * reenabled ldr/ldr and ldr/str optimization
git-svn-id: trunk@20497 -
2012-03-10 17:09:42 +00:00
Jonas Maebe
8c86455965 - removed "inline" from getansistringdef(), it's way too big
git-svn-id: trunk@20489 -
2012-03-10 00:25:58 +00:00
Jonas Maebe
a6a43c71ec * give an error message when including a file starting with an UTF-8 BOM
in a compilation module parsed using a different code page, because this
    changes the default ansistring type and {$codepage xxx} is also not
    allowed in the middle of a unit (mantis #21445)

git-svn-id: trunk@20488 -
2012-03-09 22:50:14 +00:00
Jonas Maebe
2696c1f1d3 * also print fpc-specific help when executed without parameters or with -h
(mantis #21323)
  * don't print a message about the ppc binary exiting with an error if no
    source file is specified (if a no option or -h is used, the help message
    will be printed; in other cases, a source file may not have been specified
    but that's an error like any other in that case -- that message only
    existed because the compiler binary also exits with a non-zero exit code
    in case the help is printed)
  - removed alpha and ia64 support for selecting ppc binary
  + added mips and mipsel support for selecting ppc binary

git-svn-id: trunk@20487 -
2012-03-09 21:38:22 +00:00
Jonas Maebe
d1acb76df8 * don't replace "expr1 or expr1" or "expr1 and expr1" with just "expr1"
if expr1 has sideeffects. This can't be done safely even in case of
    short boolean evaluation, because expr1 may return the inverse the
    second time its called (and "0 or 1" is not the same as "0", and
    neither is "1 and 0"), based on comment by Michael Karcher
  * perform a full string compare when comparing stringconstnodes
    before the string constant labels have been generated (patch by
    Michael Karcher, mantis #21255)

git-svn-id: trunk@20485 -
2012-03-09 20:26:32 +00:00
Jonas Maebe
cca1fe9573 * adjust the name of the external debug and map file when the name of
the output binary is changed via the -o option (patch by Barlone,
    mantis #21171)

git-svn-id: trunk@20484 -
2012-03-09 15:24:46 +00:00
florian
a7b46fc36f * don't create a temp. for a dereferenced pointer which is passed to a var parameter of an inline procedure
git-svn-id: trunk@20478 -
2012-03-07 21:17:09 +00:00
florian
841d67ec81 * don't waste an extra register when copying 4 bytes
git-svn-id: trunk@20475 -
2012-03-05 19:12:00 +00:00
florian
b4907578b0 * temporarily disable LDR/LDR STR/LDR optimizations, let's see if this broke regression testing on fpcarm
git-svn-id: trunk@20473 -
2012-03-04 20:37:06 +00:00
florian
8278271b4e * fix RegInInstruction
+ introduce generic RegModifiedByInstruction

git-svn-id: trunk@20472 -
2012-03-04 20:21:14 +00:00
florian
f33ee60c2e * write ait_varloc into assembler output, it is generated if -sr is passed to the compiler
git-svn-id: trunk@20471 -
2012-03-04 20:15:28 +00:00
sergei
92f927976e * Rewrote fpc_dynarray_copy to trim out-of-range arguments instead of raising range error. Makes behavior Delphi-compatible and resolves #21396.
* Changed copying the entire array to use range 0..high(sizeint) instead of -1..-2.

git-svn-id: trunk@20468 -
2012-03-04 04:41:52 +00:00
paul
d59c0237b2 compiler: global property can't be a class property
git-svn-id: trunk@20441 -
2012-02-29 02:31:03 +00:00
Tomas Hajny
f1b81f12b5 * indicate -an being only useful with -dEXTDEBUG
git-svn-id: trunk@20433 -
2012-02-26 20:49:45 +00:00
florian
fdfb9a3fba * take care of conditions when doing ldr/str optimizations
git-svn-id: trunk@20428 -
2012-02-25 21:04:28 +00:00
Jonas Maebe
b9c54fab0d * fixed finding the real definition for formal Objective-C protocols
* fixed printed source code positions in error message in case the external
    name of a formal and of a real definition don't match

git-svn-id: trunk@20425 -
2012-02-25 11:52:35 +00:00
pierre
2e0a5facd2 * Fix str inline for booleans for 64 bit CPUs
git-svn-id: trunk@20423 -
2012-02-24 10:06:44 +00:00
florian
bb2df48aa9 - <op> ....; cmp ...,#0 cmps ... optimization deactivated
* optimize ldr/ldr if possible

git-svn-id: trunk@20416 -
2012-02-23 21:29:22 +00:00
florian
e2c9a8c6a1 * fold <arithmed. op> ...; cmp ...,#0into cmps on arm
* remove unnecessary ldr after str to the same memoy location, however, to do this optimization safely, we should add support for volatile variables

git-svn-id: trunk@20399 -
2012-02-22 20:16:06 +00:00
Jonas Maebe
85ef5e109c + assert() support for the JVM target (currently ignores the Java classloader
assertionStatus setting)

git-svn-id: branches/jvmbackend@20388 -
2012-02-20 11:28:59 +00:00
Jonas Maebe
3916a32f9e * created generic version of thlcgobj.g_reference_loc() and only override
JVM-specific case (needed for future trunk marge to prevent abstract
    method warning)

git-svn-id: branches/jvmbackend@20387 -
2012-02-20 11:28:50 +00:00
sergei
eda5511ef9 * Don't widen boolean operands of taddnode if they will be converted to pasbool8 immediately thereafter, doing so only causes generation of useless code. Mantis #20843.
git-svn-id: trunk@20376 -
2012-02-19 18:49:50 +00:00
Jonas Maebe
bacdd8be81 * don't ever mark the function result as vs_initialised, also not when
it is passed as a hidden parameter (mantis #20907)

git-svn-id: trunk@20373 -
2012-02-17 16:25:50 +00:00