* Load double-precision locations from integer registers directly into cgpara if sizes match and destination has a single location.

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28102 3ad0048d-3df7-0310-abae-a5850022a9f2
* m68k: fixed setjmp/longjmp:
  * Data registers have to be saved/restored using 'move.l', because 'move' without suffix assumes 16-bit size.
  * setjmp must behave as a regular function w.r.t. removing its argument from the stack.

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28103 3ad0048d-3df7-0310-abae-a5850022a9f2
Add a new warning message that is generated if an instance of an abstract class is created. This message is disabled by default, but can be switched on by using {$warn 4122 on} or {$warn 4122 error}.

Please note that this warning won't be triggered if an instance of that class is created using a class variable of that class type as the compiler can not know the type contained in the variable at compile time (see also the added test).

+ msg/errore.msg: added disabled message which informs about the instantiation of an abstract class
* pexpr.pas, do_member_read: generate the message if we have a constructor call for an abstract class using a loadvmtaddrnode (thus the type name is used and not a class variable)

* msg{idx,txt}.inc: updated

+ added test


git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28127 3ad0048d-3df7-0310-abae-a5850022a9f2
+ m68k: default implementation of fpc_cpuinit, provides correct masking of floating-point exceptions and fixes test/testv8.pp.



git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28128 3ad0048d-3df7-0310-abae-a5850022a9f2
  * update of German error message files by Karl-Michael Schindler
    (mantis #26282)

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28129 3ad0048d-3df7-0310-abae-a5850022a9f2
As discussed on core enable the abstract class construction warning by default and also make it controllable with {$warn constructing_abstract ...}.

* scandir.pas, dir_warn: also adjust the message state for type_w_instance_abstract_class if the identifier is CONSTRUCTING_ABSTRACT
* msg/errore.msg: enable type_w_instance_abstract_class by default

* msgidx.inc, msgtxt.inc: updated


git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28137 3ad0048d-3df7-0310-abae-a5850022a9f2
* the handling of pointer arithmetic in pass_1 moved to a new virtual method
  taddnode.first_addpointer. This will be overridden in the i8086 code generator
  in order to implement huge pointer arithmetic.

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28138 3ad0048d-3df7-0310-abae-a5850022a9f2
+ implemented huge pointer arithmetic

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28139 3ad0048d-3df7-0310-abae-a5850022a9f2
+ added rtl helpers for huge pointer comparisons



git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28148 3ad0048d-3df7-0310-abae-a5850022a9f2
* cs_hugeptr_normalization renamed to cs_hugeptr_arithmetic_normalization,
  because we're going to also introduce cs_hugeptr_comparison_normalization as
  an independent option

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28149 3ad0048d-3df7-0310-abae-a5850022a9f2
- rm the scan_w_hugepointernormalization_not_support message, replaced with
  scanner_w_directive_ignored_on_target

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28150 3ad0048d-3df7-0310-abae-a5850022a9f2
+ added directive {$HUGEPOINTERARITHMETICNORMALIZATION} to control the
  cs_hugeptr_arithmetic_normalization local setting
+ added the cs_hugeptr_comparison_normalization local setting and corresponding
  directive {$HUGEPOINTERCOMPARISONNORMALIZATION} to set it
* the {HUGEPOINTERNORMALIZATION} changed to set both of the huge pointer
  normalization settings, according to the specified compiler type ('BORLANDC',
  'MICROSOFTC' or 'WATCOMC')

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28151 3ad0048d-3df7-0310-abae-a5850022a9f2
+ added error message in case the HUGEPOINTERNORMALIZATION directive is used
  with an invalid argument

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28152 3ad0048d-3df7-0310-abae-a5850022a9f2
+ moved handling of pointer comparison in pass_1 to new virtual method
  taddnode.first_cmppointer. To be overriden for i8086 huge pointer comparisons.



git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28156 3ad0048d-3df7-0310-abae-a5850022a9f2
+ implemented normalized huge pointer comparison



git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28157 3ad0048d-3df7-0310-abae-a5850022a9f2
* fixed 'cannot convert type' error when comparing two voidhugepointers with
  = or <>



git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28158 3ad0048d-3df7-0310-abae-a5850022a9f2
* call first_addpointer and first_cmppointer in pass_1 for pchars as well. Fixes
  huge pointer arithmetic/comparison on huge pchars.



git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28159 3ad0048d-3df7-0310-abae-a5850022a9f2
Fix for Mantis #26177. Use the correct value for the method data when using a method pointer of a type or record helper.

Please note that Delphi has the exact same bug as we have and thus code working in FPC will not work in Delphi.
Additionally taking the method address of a local variable or a local/global constant for a method pointer is dangerous as the variable (in case of constants is a temporary local variable) will go out of scope once the containing procedure/function/method exits!

ncgld.pas, tcgloadnode.pass_generate_code:
  * only use the value of Self if it is an implicit pointer object (class instance) or a class reference, but not for everything else (objects, records, primitive types)

+added test


git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28160 3ad0048d-3df7-0310-abae-a5850022a9f2
* while loop replaced with a repeat..until loop in InternalTinyFreeMem



git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28161 3ad0048d-3df7-0310-abae-a5850022a9f2
+ extended test tfarptr2.pp with far pointers which are different, but point to
  the same linear address



git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28162 3ad0048d-3df7-0310-abae-a5850022a9f2