* correctly handle X86_64_X87UP_CLASS getting merged with another class and
    becoming X86_64_SSE_CLASS/X86_64_INTEGER_CLASS/... This is not defined in
    the ABI because there sizeof(extended)=16 and hence the class of the upper
    eightbyte of the extended value can never be merged with the class of
    another field (except in a union, but then the class of the lower
    eightbyte will also be overwritten).

    Handle it the same as when the lower eightbyte class of an extended in an
    aggregate gets changed into something else: pass everything in memory
    (part of mantis #26993)

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28984 3ad0048d-3df7-0310-abae-a5850022a9f2
  * handle the fact that records containing a single extended value are
    returned on the x87 fpu stack on x86-64
   o also handle the fact that this means that we'll generated float
     loads/stores with OS_128/OS_F128 in case the surrounding record
     is padded to a multiple of its alignment

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28985 3ad0048d-3df7-0310-abae-a5850022a9f2
  * mark the global variable as "public;" so its assembler symbol is exported
    (because @gotpcrel shouldn't be used for non-global/exported symbols on
     some platforms, such as OS X)
   o fixes the test on OS X

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28986 3ad0048d-3df7-0310-abae-a5850022a9f2
  + test for r28985

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