Patchwork ARM fixed-point support [5/6]: make long-long support optional for fixed-point tests

login
register
mail settings
Submitter Julian Brown
Date May 13, 2011, 1:58 p.m.
Message ID <20110513145808.5086b821@rex.config>
Download mbox | patch
Permalink /patch/95484/
State New
Headers show

Comments

Julian Brown - May 13, 2011, 1:58 p.m.
This makes makes the requirement for "long long" fixed-point types
optional in the testsuite (fixed-point.exp tests), since they are
unsupported by the ARM backend.

Tested alongside other patches in the series. OK to apply?

Julian

ChangeLog

    gcc/testsuite/
    * gcc.dg/fixed-point/func-scalar.c: Include longlong-support.h.
    Avoid long long tests on targets which don't support them.
    * gcc.dg/fixed-point/unary.c: Likewise.
    * gcc.dg/fixed-point/muldiv-warning.c: Likewise.
    * gcc.dg/fixed-point/operator-logical.c: Likewise.
    * gcc.dg/fixed-point/func-array.c: Likewise.
    * gcc.dg/fixed-point/func-struct.c: Likewise.
    * gcc.dg/fixed-point/func-vararg-mixed.c: Likewise.
    * gcc.dg/fixed-point/binary.c: Likewise.
    * gcc.dg/fixed-point/comma.c: Likewise.
    * gcc.dg/fixed-point/func-mixed.c: Likewise.
    * gcc.dg/fixed-point/func-vararg.c: Likewise.
    * gcc.dg/fixed-point/operator-cond.c: Likewise.
    * gcc.dg/fixed-point/loop-index.c: Likewise.
    * gcc.dg/fixed-point/convert.c: Likewise.
    * gcc.dg/fixed-point/allop-const.c: Likewise.
    * gcc.dg/fixed-point/call-by-value.c: Likewise.
    * gcc.dg/fixed-point/longlong-support.h: New.
Julian Brown - May 26, 2011, 4:49 p.m.
On Fri, 13 May 2011 14:58:08 +0100
Julian Brown <julian@codesourcery.com> wrote:

> This makes makes the requirement for "long long" fixed-point types
> optional in the testsuite (fixed-point.exp tests), since they are
> unsupported by the ARM backend.
> 
> Tested alongside other patches in the series. OK to apply?

This patch is no longer needed with the updated version of:

http://gcc.gnu.org/ml/gcc-patches/2011-05/msg02060.html

Please consider it withdrawn.

Thanks,

Julian

Patch

commit 8a2b92c370a17cc7e95506f9aa26fe1c4a9a48db
Author: Julian Brown <julian@henry8.codesourcery.com>
Date:   Fri May 13 05:55:12 2011 -0700

    Long-long support made optional in testsuite.

diff --git a/gcc/testsuite/gcc.dg/fixed-point/allop-const.c b/gcc/testsuite/gcc.dg/fixed-point/allop-const.c
index 1cf8598..fdcb046 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/allop-const.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/allop-const.c
@@ -12,6 +12,8 @@ 
 
    Check if all operations on constants are ok.  */
 
+#include "longlong-support.h"
+
 #define ALLOPCONST(TYPE,NAME,POSTFIX) \
 	TYPE NAME ## plus = +0.1 ## POSTFIX; \
 	unsigned TYPE NAME ## u_plus = +0.1u ## POSTFIX; \
@@ -140,8 +142,8 @@ 
 ALLOPCONST(short _Fract, sf, hr);
 ALLOPCONST(_Fract, f, r);
 ALLOPCONST(long _Fract, lf, lr);
-ALLOPCONST(long long _Fract, llf, llr);
+LLFRACT_TEST (ALLOPCONST(long long _Fract, llf, llr));
 ALLOPCONST(short _Accum, sa, hk);
 ALLOPCONST(_Accum, a, k);
 ALLOPCONST(long _Accum, la, lk);
-ALLOPCONST(long long _Accum, lla, llk);
+LLACCUM_TEST (ALLOPCONST(long long _Accum, lla, llk));
diff --git a/gcc/testsuite/gcc.dg/fixed-point/binary.c b/gcc/testsuite/gcc.dg/fixed-point/binary.c
index e2cb6ea..35d9b56 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/binary.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/binary.c
@@ -11,6 +11,8 @@ 
 
    Check binary operators + - * / << >> < <= >= > == != += -= *= /= <<= >>=.  */
 
+#include "longlong-support.h"
+
 extern void abort (void);
 
 #define BINARY(TYPE,POSTFIX) \
@@ -114,45 +116,45 @@  int main ()
   BINARY(short _Fract, hr);
   BINARY(_Fract, r);
   BINARY(long _Fract, lr);
-  BINARY(long long _Fract, llr);
+  LLFRACT_TEST (BINARY(long long _Fract, llr));
   BINARY(unsigned short _Fract, uhr);
   BINARY(unsigned _Fract, ur);
   BINARY(unsigned long _Fract, ulr);
-  BINARY(unsigned long long _Fract, ullr);
+  ULLFRACT_TEST (BINARY(unsigned long long _Fract, ullr));
   BINARY(_Sat short _Fract, hr);
   BINARY(_Sat _Fract, r);
   BINARY(_Sat long _Fract, lr);
-  BINARY(_Sat long long _Fract, llr);
+  LLFRACT_TEST (BINARY(_Sat long long _Fract, llr));
   BINARY(_Sat unsigned short _Fract, uhr);
   BINARY(_Sat unsigned _Fract, ur);
   BINARY(_Sat unsigned long _Fract, ulr);
-  BINARY(_Sat unsigned long long _Fract, ullr);
+  ULLFRACT_TEST (BINARY(_Sat unsigned long long _Fract, ullr));
   BINARY(short _Accum, hk);
   BINARY(_Accum, k);
   BINARY(long _Accum, lk);
-  BINARY(long long _Accum, llk);
+  LLACCUM_TEST (BINARY(long long _Accum, llk));
   BINARY(unsigned short _Accum, uhk);
   BINARY(unsigned _Accum, uk);
   BINARY(unsigned long _Accum, ulk);
-  BINARY(unsigned long long _Accum, ullk);
+  ULLACCUM_TEST (BINARY(unsigned long long _Accum, ullk));
   BINARY(_Sat short _Accum, hk);
   BINARY(_Sat _Accum, k);
   BINARY(_Sat long _Accum, lk);
-  BINARY(_Sat long long _Accum, llk);
+  LLACCUM_TEST (BINARY(_Sat long long _Accum, llk));
   BINARY(_Sat unsigned short _Accum, uhk);
   BINARY(_Sat unsigned _Accum, uk);
   BINARY(_Sat unsigned long _Accum, ulk);
-  BINARY(_Sat unsigned long long _Accum, ullk);
+  ULLACCUM_TEST (BINARY(_Sat unsigned long long _Accum, ullk));
 
   FRACT_SAT_BINARY(_Sat short _Fract, hr);
   FRACT_SAT_BINARY(_Sat _Fract, r);
   FRACT_SAT_BINARY(_Sat long _Fract, lr);
-  FRACT_SAT_BINARY(_Sat long long _Fract, llr);
+  LLFRACT_TEST (FRACT_SAT_BINARY(_Sat long long _Fract, llr));
 
   FRACT_SAT_UNS_BINARY(_Sat unsigned short _Fract, uhr);
   FRACT_SAT_UNS_BINARY(_Sat unsigned _Fract, ur);
   FRACT_SAT_UNS_BINARY(_Sat unsigned long _Fract, ulr);
-  FRACT_SAT_UNS_BINARY(_Sat unsigned long long _Fract, ullr);
+  ULLFRACT_TEST (FRACT_SAT_UNS_BINARY(_Sat unsigned long long _Fract, ullr));
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/fixed-point/call-by-value.c b/gcc/testsuite/gcc.dg/fixed-point/call-by-value.c
index 8b9d822..09bef43 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/call-by-value.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/call-by-value.c
@@ -8,6 +8,8 @@ 
 
    This test is copied from gcc.dg/dfp/ and changed for fixed-point types.  */
 
+#include "longlong-support.h"
+
 extern void abort (void);
 
 #define FOO_FUN(NAME,TYPE,VALUE) \
@@ -27,35 +29,35 @@  int foo ## NAME (TYPE z) \
 FOO_FUN (sf, short _Fract, 0.2hr)
 FOO_FUN (f, _Fract, 0.2r)
 FOO_FUN (lf, long _Fract, 0.2lr)
-FOO_FUN (llf, long long _Fract, 0.2llr)
+LLFRACT_TEST (FOO_FUN (llf, long long _Fract, 0.2llr))
 FOO_FUN (usf, unsigned short _Fract, 0.2uhr)
 FOO_FUN (uf, unsigned _Fract, 0.2ur)
 FOO_FUN (ulf, unsigned long _Fract, 0.2ulr)
-FOO_FUN (ullf, unsigned long long _Fract, 0.2ullr)
+ULLFRACT_TEST (FOO_FUN (ullf, unsigned long long _Fract, 0.2ullr))
 FOO_FUN (Ssf, _Sat short _Fract, 0.2hr)
 FOO_FUN (Sf, _Sat _Fract, 0.2r)
 FOO_FUN (Slf, _Sat long _Fract, 0.2lr)
-FOO_FUN (Sllf, _Sat long long _Fract, 0.2llr)
+LLFRACT_TEST (FOO_FUN (Sllf, _Sat long long _Fract, 0.2llr))
 FOO_FUN (Susf, _Sat unsigned short _Fract, 0.2uhr)
 FOO_FUN (Suf, _Sat unsigned _Fract, 0.2ur)
 FOO_FUN (Sulf, _Sat unsigned long _Fract, 0.2ulr)
-FOO_FUN (Sullf, _Sat unsigned long long _Fract, 0.2ullr)
+ULLFRACT_TEST (FOO_FUN (Sullf, _Sat unsigned long long _Fract, 0.2ullr))
 FOO_FUN (sa, short _Accum, 0.2hk)
 FOO_FUN (a, _Accum, 0.2k)
 FOO_FUN (la, long _Accum, 0.2lk)
-FOO_FUN (lla, long long _Accum, 0.2llk)
+LLACCUM_TEST (FOO_FUN (lla, long long _Accum, 0.2llk))
 FOO_FUN (usa, unsigned short _Accum, 0.2uhk)
 FOO_FUN (ua, unsigned _Accum, 0.2uk)
 FOO_FUN (ula, unsigned long _Accum, 0.2ulk)
-FOO_FUN (ulla, unsigned long long _Accum, 0.2ullk)
+ULLACCUM_TEST (FOO_FUN (ulla, unsigned long long _Accum, 0.2ullk))
 FOO_FUN (Ssa, _Sat short _Accum, 0.2hk)
 FOO_FUN (Sa, _Sat _Accum, 0.2k)
 FOO_FUN (Sla, _Sat long _Accum, 0.2lk)
-FOO_FUN (Slla, _Sat long long _Accum, 0.2llk)
+LLACCUM_TEST (FOO_FUN (Slla, _Sat long long _Accum, 0.2llk))
 FOO_FUN (Susa, _Sat unsigned short _Accum, 0.2uhk)
 FOO_FUN (Sua, _Sat unsigned _Accum, 0.2uk)
 FOO_FUN (Sula, _Sat unsigned long _Accum, 0.2ulk)
-FOO_FUN (Sulla, _Sat unsigned long long _Accum, 0.2ullk)
+ULLACCUM_TEST (FOO_FUN (Sulla, _Sat unsigned long long _Accum, 0.2ullk))
 
 int
 main ()
@@ -63,35 +65,35 @@  main ()
   FOO_TEST (sf, short _Fract, 0.2hr)
   FOO_TEST (f, _Fract, 0.2r)
   FOO_TEST (lf, long _Fract, 0.2lr)
-  FOO_TEST (llf, long long _Fract, 0.2llr)
+  LLFRACT_TEST (FOO_TEST (llf, long long _Fract, 0.2llr))
   FOO_TEST (usf, unsigned short _Fract, 0.2uhr)
   FOO_TEST (uf, unsigned _Fract, 0.2ur)
   FOO_TEST (ulf, unsigned long _Fract, 0.2ulr)
-  FOO_TEST (ullf, unsigned long long _Fract, 0.2ullr)
+  ULLFRACT_TEST (FOO_TEST (ullf, unsigned long long _Fract, 0.2ullr))
   FOO_TEST (Ssf, _Sat short _Fract, 0.2hr)
   FOO_TEST (Sf, _Sat _Fract, 0.2r)
   FOO_TEST (Slf, _Sat long _Fract, 0.2lr)
-  FOO_TEST (Sllf, _Sat long long _Fract, 0.2llr)
+  LLFRACT_TEST (FOO_TEST (Sllf, _Sat long long _Fract, 0.2llr))
   FOO_TEST (Susf, _Sat unsigned short _Fract, 0.2uhr)
   FOO_TEST (Suf, _Sat unsigned _Fract, 0.2ur)
   FOO_TEST (Sulf, _Sat unsigned long _Fract, 0.2ulr)
-  FOO_TEST (Sullf, _Sat unsigned long long _Fract, 0.2ullr)
+  ULLFRACT_TEST (FOO_TEST (Sullf, _Sat unsigned long long _Fract, 0.2ullr))
   FOO_TEST (sa, short _Accum, 0.2hk)
   FOO_TEST (a, _Accum, 0.2k)
   FOO_TEST (la, long _Accum, 0.2lk)
-  FOO_TEST (lla, long long _Accum, 0.2llk)
+  LLACCUM_TEST (FOO_TEST (lla, long long _Accum, 0.2llk))
   FOO_TEST (usa, unsigned short _Accum, 0.2uhk)
   FOO_TEST (ua, unsigned _Accum, 0.2uk)
   FOO_TEST (ula, unsigned long _Accum, 0.2ulk)
-  FOO_TEST (ulla, unsigned long long _Accum, 0.2ullk)
+  ULLACCUM_TEST (FOO_TEST (ulla, unsigned long long _Accum, 0.2ullk))
   FOO_TEST (Ssa, _Sat short _Accum, 0.2hk)
   FOO_TEST (Sa, _Sat _Accum, 0.2k)
   FOO_TEST (Sla, _Sat long _Accum, 0.2lk)
-  FOO_TEST (Slla, _Sat long long _Accum, 0.2llk)
+  LLACCUM_TEST (FOO_TEST (Slla, _Sat long long _Accum, 0.2llk))
   FOO_TEST (Susa, _Sat unsigned short _Accum, 0.2uhk)
   FOO_TEST (Sua, _Sat unsigned _Accum, 0.2uk)
   FOO_TEST (Sula, _Sat unsigned long _Accum, 0.2ulk)
-  FOO_TEST (Sulla, _Sat unsigned long long _Accum, 0.2ullk)
+  ULLACCUM_TEST (FOO_TEST (Sulla, _Sat unsigned long long _Accum, 0.2ullk))
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/fixed-point/convert.c b/gcc/testsuite/gcc.dg/fixed-point/convert.c
index f4e373f..16f5ab0 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/convert.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/convert.c
@@ -5,6 +5,8 @@ 
 
    Check conversions involving fixed-point.  */
 
+#include "longlong-support.h"
+
 extern void abort (void);
 
 /* Fixed-point to fixed-point.  */
@@ -102,51 +104,51 @@  extern void abort (void);
   CONV(TYPE, POSTFIX, short _Fract, hr) \
   CONV(TYPE, POSTFIX, _Fract, r) \
   CONV(TYPE, POSTFIX, long _Fract, lr) \
-  CONV(TYPE, POSTFIX, long long _Fract, llr) \
+  LLFRACT_TEST (CONV(TYPE, POSTFIX, long long _Fract, llr)) \
   CONV(TYPE, POSTFIX, unsigned short _Fract, uhr) \
   CONV(TYPE, POSTFIX, unsigned _Fract, ur) \
   CONV(TYPE, POSTFIX, unsigned long _Fract, ulr) \
-  CONV(TYPE, POSTFIX, unsigned long long _Fract, ullr) \
+  ULLFRACT_TEST (CONV(TYPE, POSTFIX, unsigned long long _Fract, ullr)) \
   CONV(TYPE, POSTFIX, short _Accum, hk) \
   CONV(TYPE, POSTFIX, _Accum, k) \
   CONV(TYPE, POSTFIX, long _Accum, lk) \
-  CONV(TYPE, POSTFIX, long long _Accum, llk) \
+  LLACCUM_TEST (CONV(TYPE, POSTFIX, long long _Accum, llk)) \
   CONV(TYPE, POSTFIX, unsigned short _Accum, uhk) \
   CONV(TYPE, POSTFIX, unsigned _Accum, uk) \
   CONV(TYPE, POSTFIX, unsigned long _Accum, ulk) \
-  CONV(TYPE, POSTFIX, unsigned long long _Accum, ullk) \
+  ULLACCUM_TEST (CONV(TYPE, POSTFIX, unsigned long long _Accum, ullk)) \
   CONV(_Sat TYPE, POSTFIX, short _Fract, hr) \
   CONV(_Sat TYPE, POSTFIX, _Fract, r) \
   CONV(_Sat TYPE, POSTFIX, long _Fract, lr) \
-  CONV(_Sat TYPE, POSTFIX, long long _Fract, llr) \
+  LLFRACT_TEST (CONV(_Sat TYPE, POSTFIX, long long _Fract, llr)) \
   CONV(_Sat TYPE, POSTFIX, unsigned short _Fract, uhr) \
   CONV(_Sat TYPE, POSTFIX, unsigned _Fract, ur) \
   CONV(_Sat TYPE, POSTFIX, unsigned long _Fract, ulr) \
-  CONV(_Sat TYPE, POSTFIX, unsigned long long _Fract, ullr) \
+  ULLFRACT_TEST (CONV(_Sat TYPE, POSTFIX, unsigned long long _Fract, ullr)) \
   CONV(_Sat TYPE, POSTFIX, short _Accum, hk) \
   CONV(_Sat TYPE, POSTFIX, _Accum, k) \
   CONV(_Sat TYPE, POSTFIX, long _Accum, lk) \
-  CONV(_Sat TYPE, POSTFIX, long long _Accum, llk) \
+  LLACCUM_TEST (CONV(_Sat TYPE, POSTFIX, long long _Accum, llk)) \
   CONV(_Sat TYPE, POSTFIX, unsigned short _Accum, uhk) \
   CONV(_Sat TYPE, POSTFIX, unsigned _Accum, uk) \
   CONV(_Sat TYPE, POSTFIX, unsigned long _Accum, ulk) \
-  CONV(_Sat TYPE, POSTFIX, unsigned long long _Accum, ullk) \
+  ULLACCUM_TEST (CONV(_Sat TYPE, POSTFIX, unsigned long long _Accum, ullk)) \
   CONV(TYPE, POSTFIX, _Sat short _Fract, hr) \
   CONV(TYPE, POSTFIX, _Sat _Fract, r) \
   CONV(TYPE, POSTFIX, _Sat long _Fract, lr) \
-  CONV(TYPE, POSTFIX, _Sat long long _Fract, llr) \
+  LLFRACT_TEST (CONV(TYPE, POSTFIX, _Sat long long _Fract, llr)) \
   CONV(TYPE, POSTFIX, _Sat unsigned short _Fract, uhr) \
   CONV(TYPE, POSTFIX, _Sat unsigned _Fract, ur) \
   CONV(TYPE, POSTFIX, _Sat unsigned long _Fract, ulr) \
-  CONV(TYPE, POSTFIX, _Sat unsigned long long _Fract, ullr) \
+  ULLFRACT_TEST (CONV(TYPE, POSTFIX, _Sat unsigned long long _Fract, ullr)) \
   CONV(TYPE, POSTFIX, _Sat short _Accum, hk) \
   CONV(TYPE, POSTFIX, _Sat _Accum, k) \
   CONV(TYPE, POSTFIX, _Sat long _Accum, lk) \
-  CONV(TYPE, POSTFIX, _Sat long long _Accum, llk) \
+  LLACCUM_TEST (CONV(TYPE, POSTFIX, _Sat long long _Accum, llk)) \
   CONV(TYPE, POSTFIX, _Sat unsigned short _Accum, uhk) \
   CONV(TYPE, POSTFIX, _Sat unsigned _Accum, uk) \
   CONV(TYPE, POSTFIX, _Sat unsigned long _Accum, ulk) \
-  CONV(TYPE, POSTFIX, _Sat unsigned long long _Accum, ullk) \
+  ULLACCUM_TEST (CONV(TYPE, POSTFIX, _Sat unsigned long long _Accum, ullk)) \
   CONV_INT(TYPE, POSTFIX, signed char) \
   CONV_INT(TYPE, POSTFIX, short) \
   CONV_INT(TYPE, POSTFIX, int) \
@@ -219,58 +221,58 @@  extern void abort (void);
   CONV2(TYPE, -3.2 ## POSTFIX, _Sat _Fract, -0.5r - 0.5r) \
   CONV2(TYPE, 3.2 ## POSTFIX, _Sat long _Fract, 1.0lr) \
   CONV2(TYPE, -3.2 ## POSTFIX, _Sat long _Fract, -0.5lr - 0.5lr) \
-  CONV2(TYPE, 3.2 ## POSTFIX, _Sat long long _Fract, 1.0llr) \
-  CONV2(TYPE, -3.2 ## POSTFIX, _Sat long long _Fract, -0.5llr - 0.5llr) \
+  LLFRACT_TEST (CONV2(TYPE, 3.2 ## POSTFIX, _Sat long long _Fract, 1.0llr)) \
+  LLFRACT_TEST (CONV2(TYPE, -3.2 ## POSTFIX, _Sat long long _Fract, -0.5llr - 0.5llr)) \
   CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned short _Fract, 1.0uhr) \
   CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned short _Fract, 0.0uhr) \
   CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned _Fract, 1.0ur) \
   CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned _Fract, 0.0ur) \
   CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long _Fract, 1.0ulr) \
   CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned long _Fract, 0.0ulr) \
-  CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr) \
-  CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned long long _Fract, 0.0ullr) \
+  ULLFRACT_TEST (CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr)) \
+  ULLFRACT_TEST (CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned long long _Fract, 0.0ullr)) \
   CONV2(TYPE, 1.0 ## POSTFIX, _Sat short _Fract, 1.0hr) \
   CONV2(TYPE, -1.0 ## POSTFIX, _Sat short _Fract, -0.5hr - 0.5hr) \
   CONV2(TYPE, 1.0 ## POSTFIX, _Sat _Fract, 1.0r) \
   CONV2(TYPE, -1.0 ## POSTFIX, _Sat _Fract, -0.5r - 0.5r) \
   CONV2(TYPE, 1.0 ## POSTFIX, _Sat long _Fract, 1.0lr) \
   CONV2(TYPE, -1.0 ## POSTFIX, _Sat long _Fract, -0.5lr - 0.5lr) \
-  CONV2(TYPE, 1.0 ## POSTFIX, _Sat long long _Fract, 1.0llr) \
-  CONV2(TYPE, -1.0 ## POSTFIX, _Sat long long _Fract, -0.5llr - 0.5llr) \
+  LLFRACT_TEST (CONV2(TYPE, 1.0 ## POSTFIX, _Sat long long _Fract, 1.0llr)) \
+  LLFRACT_TEST (CONV2(TYPE, -1.0 ## POSTFIX, _Sat long long _Fract, -0.5llr - 0.5llr)) \
   CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned short _Fract, 1.0uhr) \
   CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned short _Fract, 0.0uhr) \
   CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned _Fract, 1.0ur) \
   CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned _Fract, 0.0ur) \
   CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long _Fract, 1.0ulr) \
   CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned long _Fract, 0.0ulr) \
-  CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr) \
-  CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned long long _Fract, 0.0ullr)
+  ULLFRACT_TEST (CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr)) \
+  ULLFRACT_TEST (CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned long long _Fract, 0.0ullr))
 
 /* Unsigned accum to _Sat unsigned/signed fract.  */
 #define SAT_CONV2(TYPE, POSTFIX) \
   CONV2(TYPE, 3.2 ## POSTFIX, _Sat short _Fract, 1.0hr) \
   CONV2(TYPE, 3.2 ## POSTFIX, _Sat _Fract, 1.0r) \
   CONV2(TYPE, 3.2 ## POSTFIX, _Sat long _Fract, 1.0lr) \
-  CONV2(TYPE, 3.2 ## POSTFIX, _Sat long long _Fract, 1.0llr) \
+  LLFRACT_TEST (CONV2(TYPE, 3.2 ## POSTFIX, _Sat long long _Fract, 1.0llr)) \
   CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned short _Fract, 1.0uhr) \
   CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned _Fract, 1.0ur) \
   CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long _Fract, 1.0ulr) \
-  CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr) \
+  ULLFRACT_TEST (CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr)) \
   CONV2(TYPE, 1.0 ## POSTFIX, _Sat short _Fract, 1.0hr) \
   CONV2(TYPE, 1.0 ## POSTFIX, _Sat _Fract, 1.0r) \
   CONV2(TYPE, 1.0 ## POSTFIX, _Sat long _Fract, 1.0lr) \
-  CONV2(TYPE, 1.0 ## POSTFIX, _Sat long long _Fract, 1.0llr) \
+  LLFRACT_TEST (CONV2(TYPE, 1.0 ## POSTFIX, _Sat long long _Fract, 1.0llr)) \
   CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned short _Fract, 1.0uhr) \
   CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned _Fract, 1.0ur) \
   CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long _Fract, 1.0ulr) \
-  CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr)
+  ULLFRACT_TEST (CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr))
 
 /* Signed fract to _Sat unsigned fract.  */
 #define SAT_CONV3(TYPE, POSTFIX) \
   CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned short _Fract, 0.0uhr) \
   CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned  _Fract, 0.0ur) \
   CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned long _Fract, 0.0ulr) \
-  CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned long long _Fract, 0.0ullr)
+  ULLFRACT_TEST (CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned long long _Fract, 0.0ullr))
 
 /* Signed integer to _Sat signed/unsigned fract.  */
 #define SAT_CONV4(TYPE) \
@@ -280,51 +282,51 @@  extern void abort (void);
   CONV2(TYPE, -100, _Sat _Fract, -0.5r - 0.5r) \
   CONV2(TYPE, 100, _Sat long _Fract, 1.0lr) \
   CONV2(TYPE, -100, _Sat long _Fract, -0.5lr - 0.5lr) \
-  CONV2(TYPE, 100, _Sat long long _Fract, 1.0llr) \
-  CONV2(TYPE, -100, _Sat long long _Fract, -0.5llr - 0.5llr) \
+  LLFRACT_TEST (CONV2(TYPE, 100, _Sat long long _Fract, 1.0llr)) \
+  LLFRACT_TEST (CONV2(TYPE, -100, _Sat long long _Fract, -0.5llr - 0.5llr)) \
   CONV2(TYPE, 100, _Sat unsigned short _Fract, 1.0uhr) \
   CONV2(TYPE, -100, _Sat unsigned short _Fract, 0.0uhr) \
   CONV2(TYPE, 100, _Sat unsigned _Fract, 1.0ur) \
   CONV2(TYPE, -100, _Sat unsigned _Fract, 0.0ur) \
   CONV2(TYPE, 100, _Sat unsigned long _Fract, 1.0ulr) \
   CONV2(TYPE, -100, _Sat unsigned long _Fract, 0.0ulr) \
-  CONV2(TYPE, 100, _Sat unsigned long long _Fract, 1.0ullr) \
-  CONV2(TYPE, -100, _Sat unsigned long long _Fract, 0.0ullr) \
+  ULLFRACT_TEST (CONV2(TYPE, 100, _Sat unsigned long long _Fract, 1.0ullr)) \
+  ULLFRACT_TEST (CONV2(TYPE, -100, _Sat unsigned long long _Fract, 0.0ullr)) \
   CONV2(TYPE, 1, _Sat short _Fract, 1.0hr) \
   CONV2(TYPE, -1, _Sat short _Fract, -0.5hr - 0.5hr) \
   CONV2(TYPE, 1, _Sat _Fract, 1.0r) \
   CONV2(TYPE, -1, _Sat _Fract, -0.5r - 0.5r) \
   CONV2(TYPE, 1, _Sat long _Fract, 1.0lr) \
   CONV2(TYPE, -1, _Sat long _Fract, -0.5lr - 0.5lr) \
-  CONV2(TYPE, 1, _Sat long long _Fract, 1.0llr) \
-  CONV2(TYPE, -1, _Sat long long _Fract, -0.5llr - 0.5llr) \
+  LLFRACT_TEST (CONV2(TYPE, 1, _Sat long long _Fract, 1.0llr)) \
+  LLFRACT_TEST (CONV2(TYPE, -1, _Sat long long _Fract, -0.5llr - 0.5llr)) \
   CONV2(TYPE, 1, _Sat unsigned short _Fract, 1.0uhr) \
   CONV2(TYPE, -1, _Sat unsigned short _Fract, 0.0uhr) \
   CONV2(TYPE, 1, _Sat unsigned _Fract, 1.0ur) \
   CONV2(TYPE, -1, _Sat unsigned _Fract, 0.0ur) \
   CONV2(TYPE, 1, _Sat unsigned long _Fract, 1.0ulr) \
   CONV2(TYPE, -1, _Sat unsigned long _Fract, 0.0ulr) \
-  CONV2(TYPE, 1, _Sat unsigned long long _Fract, 1.0ullr) \
-  CONV2(TYPE, -1, _Sat unsigned long long _Fract, 0.0ullr)
+  ULLFRACT_TEST (CONV2(TYPE, 1, _Sat unsigned long long _Fract, 1.0ullr)) \
+  ULLFRACT_TEST (CONV2(TYPE, -1, _Sat unsigned long long _Fract, 0.0ullr))
 
 /* Unsigned integer to _Sat signed/unsigned fract.  */
 #define SAT_CONV5(TYPE) \
   CONV2(TYPE, 100, _Sat short _Fract, 1.0hr) \
   CONV2(TYPE, 100, _Sat _Fract, 1.0r) \
   CONV2(TYPE, 100, _Sat long _Fract, 1.0lr) \
-  CONV2(TYPE, 100, _Sat long long _Fract, 1.0llr) \
+  LLFRACT_TEST (CONV2(TYPE, 100, _Sat long long _Fract, 1.0llr)) \
   CONV2(TYPE, 100, _Sat unsigned short _Fract, 1.0uhr) \
   CONV2(TYPE, 100, _Sat unsigned _Fract, 1.0ur) \
   CONV2(TYPE, 100, _Sat unsigned long _Fract, 1.0ulr) \
-  CONV2(TYPE, 100, _Sat unsigned long long _Fract, 1.0ullr) \
+  ULLFRACT_TEST (CONV2(TYPE, 100, _Sat unsigned long long _Fract, 1.0ullr)) \
   CONV2(TYPE, 1, _Sat short _Fract, 1.0hr) \
   CONV2(TYPE, 1, _Sat _Fract, 1.0r) \
   CONV2(TYPE, 1, _Sat long _Fract, 1.0lr) \
-  CONV2(TYPE, 1, _Sat long long _Fract, 1.0llr) \
+  LLFRACT_TEST (CONV2(TYPE, 1, _Sat long long _Fract, 1.0llr)) \
   CONV2(TYPE, 1, _Sat unsigned short _Fract, 1.0uhr) \
   CONV2(TYPE, 1, _Sat unsigned _Fract, 1.0ur) \
   CONV2(TYPE, 1, _Sat unsigned long _Fract, 1.0ulr) \
-  CONV2(TYPE, 1, _Sat unsigned long long _Fract, 1.0ullr)
+  ULLFRACT_TEST (CONV2(TYPE, 1, _Sat unsigned long long _Fract, 1.0ullr))
 
 /* Floating-point to _Sat signed/unsigned fract.  */
 #define SAT_CONV6(TYPE) \
@@ -334,84 +336,84 @@  extern void abort (void);
   CONV2(TYPE, -100.0, _Sat _Fract, -0.5r - 0.5r) \
   CONV2(TYPE, 100.0, _Sat long _Fract, 1.0lr) \
   CONV2(TYPE, -100.0, _Sat long _Fract, -0.5lr - 0.5lr) \
-  CONV2(TYPE, 100.0, _Sat long long _Fract, 1.0llr) \
-  CONV2(TYPE, -100.0, _Sat long long _Fract, -0.5llr - 0.5llr) \
+  LLFRACT_TEST (CONV2(TYPE, 100.0, _Sat long long _Fract, 1.0llr)) \
+  LLFRACT_TEST (CONV2(TYPE, -100.0, _Sat long long _Fract, -0.5llr - 0.5llr)) \
   CONV2(TYPE, 100.0, _Sat unsigned short _Fract, 1.0uhr) \
   CONV2(TYPE, -100.0, _Sat unsigned short _Fract, 0.0uhr) \
   CONV2(TYPE, 100.0, _Sat unsigned _Fract, 1.0ur) \
   CONV2(TYPE, -100.0, _Sat unsigned _Fract, 0.0ur) \
   CONV2(TYPE, 100.0, _Sat unsigned long _Fract, 1.0ulr) \
   CONV2(TYPE, -100.0, _Sat unsigned long _Fract, 0.0ulr) \
-  CONV2(TYPE, 100.0, _Sat unsigned long long _Fract, 1.0ullr) \
-  CONV2(TYPE, -100.0, _Sat unsigned long long _Fract, 0.0ullr) \
+  ULLFRACT_TEST (CONV2(TYPE, 100.0, _Sat unsigned long long _Fract, 1.0ullr)) \
+  ULLFRACT_TEST (CONV2(TYPE, -100.0, _Sat unsigned long long _Fract, 0.0ullr)) \
   CONV2(TYPE, 1.0, _Sat short _Fract, 1.0hr) \
   CONV2(TYPE, -1.0, _Sat short _Fract, -0.5hr - 0.5hr) \
   CONV2(TYPE, 1.0, _Sat _Fract, 1.0r) \
   CONV2(TYPE, -1.0, _Sat _Fract, -0.5r - 0.5r) \
   CONV2(TYPE, 1.0, _Sat long _Fract, 1.0lr) \
   CONV2(TYPE, -1.0, _Sat long _Fract, -0.5lr - 0.5lr) \
-  CONV2(TYPE, 1.0, _Sat long long _Fract, 1.0llr) \
-  CONV2(TYPE, -1.0, _Sat long long _Fract, -0.5llr - 0.5llr) \
+  LLFRACT_TEST (CONV2(TYPE, 1.0, _Sat long long _Fract, 1.0llr)) \
+  LLFRACT_TEST (CONV2(TYPE, -1.0, _Sat long long _Fract, -0.5llr - 0.5llr)) \
   CONV2(TYPE, 1.0, _Sat unsigned short _Fract, 1.0uhr) \
   CONV2(TYPE, -1.0, _Sat unsigned short _Fract, 0.0uhr) \
   CONV2(TYPE, 1.0, _Sat unsigned _Fract, 1.0ur) \
   CONV2(TYPE, -1.0, _Sat unsigned _Fract, 0.0ur) \
   CONV2(TYPE, 1.0, _Sat unsigned long _Fract, 1.0ulr) \
   CONV2(TYPE, -1.0, _Sat unsigned long _Fract, 0.0ulr) \
-  CONV2(TYPE, 1.0, _Sat unsigned long long _Fract, 1.0ullr) \
-  CONV2(TYPE, -1.0, _Sat unsigned long long _Fract, 0.0ullr)
+  ULLFRACT_TEST (CONV2(TYPE, 1.0, _Sat unsigned long long _Fract, 1.0ullr)) \
+  ULLFRACT_TEST (CONV2(TYPE, -1.0, _Sat unsigned long long _Fract, 0.0ullr))
 
 int main ()
 {
   ALL_CONV (short _Fract, hr);
   ALL_CONV (_Fract, r);
   ALL_CONV (long _Fract, lr);
-  ALL_CONV (long long _Fract, llr);
+  LLFRACT_TEST (ALL_CONV (long long _Fract, llr));
   ALL_CONV (unsigned short _Fract, uhr);
   ALL_CONV (unsigned _Fract, ur);
   ALL_CONV (unsigned long _Fract, ulr);
-  ALL_CONV (unsigned long long _Fract, ullr);
+  ULLFRACT_TEST (ALL_CONV (unsigned long long _Fract, ullr));
   ALL_CONV (short _Accum, hk);
   ALL_CONV (_Accum, k);
   ALL_CONV (long _Accum, lk);
-  ALL_CONV (long long _Accum, llk);
+  LLACCUM_TEST (ALL_CONV (long long _Accum, llk));
   ALL_CONV (unsigned short _Accum, uhk);
   ALL_CONV (unsigned _Accum, uk);
   ALL_CONV (unsigned long _Accum, ulk);
-  ALL_CONV (unsigned long long _Accum, ullk);
+  ULLACCUM_TEST (ALL_CONV (unsigned long long _Accum, ullk));
 
   ALL_ACCUM_CONV (short _Accum, hk);
   ALL_ACCUM_CONV (_Accum, k);
   ALL_ACCUM_CONV (long _Accum, lk);
-  ALL_ACCUM_CONV (long long _Accum, llk);
+  LLACCUM_TEST (ALL_ACCUM_CONV (long long _Accum, llk));
   ALL_ACCUM_CONV (unsigned short _Accum, uhk);
   ALL_ACCUM_CONV (unsigned _Accum, uk);
   ALL_ACCUM_CONV (unsigned long _Accum, ulk);
-  ALL_ACCUM_CONV (unsigned long long _Accum, ullk);
+  ULLACCUM_TEST (ALL_ACCUM_CONV (unsigned long long _Accum, ullk));
 
   NEG_CONV (short _Fract, hr);
   NEG_CONV (_Fract, r);
   NEG_CONV (long _Fract, lr);
-  NEG_CONV (long long _Fract, llr);
+  LLFRACT_TEST (NEG_CONV (long long _Fract, llr));
   NEG_CONV (short _Accum, hk);
   NEG_CONV (_Accum, k);
   NEG_CONV (long _Accum, lk);
-  NEG_CONV (long long _Accum, llk);
+  LLACCUM_TEST (NEG_CONV (long long _Accum, llk));
 
   SAT_CONV1 (short _Accum, hk);
   SAT_CONV1 (_Accum, k);
   SAT_CONV1 (long _Accum, lk);
-  SAT_CONV1 (long long _Accum, llk);
+  LLACCUM_TEST (SAT_CONV1 (long long _Accum, llk));
 
   SAT_CONV2 (unsigned short _Accum, uhk);
   SAT_CONV2 (unsigned _Accum, uk);
   SAT_CONV2 (unsigned long _Accum, ulk);
-  SAT_CONV2 (unsigned long long _Accum, ullk);
+  LLACCUM_TEST (SAT_CONV2 (unsigned long long _Accum, ullk));
 
   SAT_CONV3 (short _Fract, hr);
   SAT_CONV3 (_Fract, r);
   SAT_CONV3 (long _Fract, lr);
-  SAT_CONV3 (long long _Fract, llr);
+  LLFRACT_TEST (SAT_CONV3 (long long _Fract, llr));
 
   SAT_CONV4 (signed char);
   SAT_CONV4 (short);
diff --git a/gcc/testsuite/gcc.dg/fixed-point/func-array.c b/gcc/testsuite/gcc.dg/fixed-point/func-array.c
index 0d0e8c1..21d61b4 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/func-array.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/func-array.c
@@ -5,6 +5,8 @@ 
    Test passing array elements involving fixed-point types.
    Based on the test from ../dfp/.  */
 
+#include "longlong-support.h"
+
 extern void abort (void);
 
 /* A handful of functions that return the Nth argument of
@@ -21,35 +23,35 @@  TYPE NAME ## 5 (TYPE args[]) { return args[5]; }
 FUNC (short _Fract, sf)
 FUNC (_Fract, f)
 FUNC (long _Fract, lf)
-FUNC (long long _Fract, llf)
+LLFRACT_TEST (FUNC (long long _Fract, llf))
 FUNC (unsigned short _Fract, usf)
 FUNC (unsigned _Fract, uf)
 FUNC (unsigned long _Fract, ulf)
-FUNC (unsigned long long _Fract, ullf)
+ULLFRACT_TEST (FUNC (unsigned long long _Fract, ullf))
 FUNC (_Sat short _Fract, Ssf)
 FUNC (_Sat _Fract, Sf)
 FUNC (_Sat long _Fract, Slf)
-FUNC (_Sat long long _Fract, Sllf)
+LLFRACT_TEST (FUNC (_Sat long long _Fract, Sllf))
 FUNC (_Sat unsigned short _Fract, Susf)
 FUNC (_Sat unsigned _Fract, Suf)
 FUNC (_Sat unsigned long _Fract, Sulf)
-FUNC (_Sat unsigned long long _Fract, Sullf)
+ULLFRACT_TEST (FUNC (_Sat unsigned long long _Fract, Sullf))
 FUNC (short _Accum, sa)
 FUNC (_Accum, a)
 FUNC (long _Accum, la)
-FUNC (long long _Accum, lla)
+LLACCUM_TEST (FUNC (long long _Accum, lla))
 FUNC (unsigned short _Accum, usa)
 FUNC (unsigned _Accum, ua)
 FUNC (unsigned long _Accum, ula)
-FUNC (unsigned long long _Accum, ulla)
+ULLACCUM_TEST (FUNC (unsigned long long _Accum, ulla))
 FUNC (_Sat short _Accum, Ssa)
 FUNC (_Sat _Accum, Sa)
 FUNC (_Sat long _Accum, Sla)
-FUNC (_Sat long long _Accum, Slla)
+LLACCUM_TEST (FUNC (_Sat long long _Accum, Slla))
 FUNC (_Sat unsigned short _Accum, Susa)
 FUNC (_Sat unsigned _Accum, Sua)
 FUNC (_Sat unsigned long _Accum, Sula)
-FUNC (_Sat unsigned long long _Accum, Sulla)
+ULLACCUM_TEST (FUNC (_Sat unsigned long long _Accum, Sulla))
 
 int main()
 {
@@ -68,35 +70,35 @@  int main()
   TEST (short _Fract, sf, hr)
   TEST (_Fract, f, r)
   TEST (long _Fract, lf, lr)
-  TEST (long long _Fract, llf, llr)
+  LLFRACT_TEST (TEST (long long _Fract, llf, llr))
   TEST (unsigned short _Fract, usf, uhr)
   TEST (unsigned _Fract, uf, ur)
   TEST (unsigned long _Fract, ulf, ulr)
-  TEST (unsigned long long _Fract, ullf, ullr)
+  ULLFRACT_TEST (TEST (unsigned long long _Fract, ullf, ullr))
   TEST (_Sat short _Fract, Ssf, hr)
   TEST (_Sat _Fract, Sf, r)
   TEST (_Sat long _Fract, Slf, lr)
-  TEST (_Sat long long _Fract, Sllf, llr)
+  LLFRACT_TEST (TEST (_Sat long long _Fract, Sllf, llr))
   TEST (_Sat unsigned short _Fract, Susf, uhr)
   TEST (_Sat unsigned _Fract, Suf, ur)
   TEST (_Sat unsigned long _Fract, Sulf, ulr)
-  TEST (_Sat unsigned long long _Fract, Sullf, ullr)
+  ULLFRACT_TEST (TEST (_Sat unsigned long long _Fract, Sullf, ullr))
   TEST (short _Accum, sa, hk)
   TEST (_Accum, a, k)
   TEST (long _Accum, la, lk)
-  TEST (long long _Accum, lla, llk)
+  LLACCUM_TEST (TEST (long long _Accum, lla, llk))
   TEST (unsigned short _Accum, usa, uhk)
   TEST (unsigned _Accum, ua, uk)
   TEST (unsigned long _Accum, ula, ulk)
-  TEST (unsigned long long _Accum, ulla, ullk)
+  ULLACCUM_TEST (TEST (unsigned long long _Accum, ulla, ullk))
   TEST (_Sat short _Accum, Ssa, hk)
   TEST (_Sat _Accum, Sa, k)
   TEST (_Sat long _Accum, Sla, lk)
-  TEST (_Sat long long _Accum, Slla, llk)
+  LLACCUM_TEST (TEST (_Sat long long _Accum, Slla, llk))
   TEST (_Sat unsigned short _Accum, Susa, uhk)
   TEST (_Sat unsigned _Accum, Sua, uk)
   TEST (_Sat unsigned long _Accum, Sula, ulk)
-  TEST (_Sat unsigned long long _Accum, Sulla, ullk)
+  ULLACCUM_TEST (TEST (_Sat unsigned long long _Accum, Sulla, ullk))
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/fixed-point/func-mixed.c b/gcc/testsuite/gcc.dg/fixed-point/func-mixed.c
index 01930e4..0d25ab8 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/func-mixed.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/func-mixed.c
@@ -5,6 +5,8 @@ 
    Test scalar passing and return values involving fixed-point types.
    Based on the test from ../dfp/.  */
 
+#include "longlong-support.h"
+
 extern void abort (void);
 
 /* A handful of functions that return the Nth argument of
@@ -25,35 +27,35 @@  TYPE NAME ## 4 (int arg0, unsigned arg1, float arg2, double arg3, TYPE arg4) \
 FUNC (short _Fract, sf)
 FUNC (_Fract, f)
 FUNC (long _Fract, lf)
-FUNC (long long _Fract, llf)
+LLFRACT_TEST (FUNC (long long _Fract, llf))
 FUNC (unsigned short _Fract, usf)
 FUNC (unsigned _Fract, uf)
 FUNC (unsigned long _Fract, ulf)
-FUNC (unsigned long long _Fract, ullf)
+ULLFRACT_TEST (FUNC (unsigned long long _Fract, ullf))
 FUNC (_Sat short _Fract, Ssf)
 FUNC (_Sat _Fract, Sf)
 FUNC (_Sat long _Fract, Slf)
-FUNC (_Sat long long _Fract, Sllf)
+LLFRACT_TEST (FUNC (_Sat long long _Fract, Sllf))
 FUNC (_Sat unsigned short _Fract, Susf)
 FUNC (_Sat unsigned _Fract, Suf)
 FUNC (_Sat unsigned long _Fract, Sulf)
-FUNC (_Sat unsigned long long _Fract, Sullf)
+ULLFRACT_TEST (FUNC (_Sat unsigned long long _Fract, Sullf))
 FUNC (short _Accum, sa)
 FUNC (_Accum, a)
 FUNC (long _Accum, la)
-FUNC (long long _Accum, lla)
+LLACCUM_TEST (FUNC (long long _Accum, lla))
 FUNC (unsigned short _Accum, usa)
 FUNC (unsigned _Accum, ua)
 FUNC (unsigned long _Accum, ula)
-FUNC (unsigned long long _Accum, ulla)
+ULLACCUM_TEST (FUNC (unsigned long long _Accum, ulla))
 FUNC (_Sat short _Accum, Ssa)
 FUNC (_Sat _Accum, Sa)
 FUNC (_Sat long _Accum, Sla)
-FUNC (_Sat long long _Accum, Slla)
+LLACCUM_TEST (FUNC (_Sat long long _Accum, Slla))
 FUNC (_Sat unsigned short _Accum, Susa)
 FUNC (_Sat unsigned _Accum, Sua)
 FUNC (_Sat unsigned long _Accum, Sula)
-FUNC (_Sat unsigned long long _Accum, Sulla)
+ULLACCUM_TEST (FUNC (_Sat unsigned long long _Accum, Sulla))
 
 int main()
 {
@@ -69,35 +71,35 @@  int main()
   TEST (short _Fract, sf, hr)
   TEST (_Fract, f, r)
   TEST (long _Fract, lf, lr)
-  TEST (long long _Fract, llf, llr)
+  LLFRACT_TEST (TEST (long long _Fract, llf, llr))
   TEST (unsigned short _Fract, usf, uhr)
   TEST (unsigned _Fract, uf, ur)
   TEST (unsigned long _Fract, ulf, ulr)
-  TEST (unsigned long long _Fract, ullf, ullr)
+  ULLFRACT_TEST (TEST (unsigned long long _Fract, ullf, ullr))
   TEST (_Sat short _Fract, Ssf, hr)
   TEST (_Sat _Fract, Sf, r)
   TEST (_Sat long _Fract, Slf, lr)
-  TEST (_Sat long long _Fract, Sllf, llr)
+  LLFRACT_TEST (TEST (_Sat long long _Fract, Sllf, llr))
   TEST (_Sat unsigned short _Fract, Susf, uhr)
   TEST (_Sat unsigned _Fract, Suf, ur)
   TEST (_Sat unsigned long _Fract, Sulf, ulr)
-  TEST (_Sat unsigned long long _Fract, Sullf, ullr)
+  ULLFRACT_TEST (TEST (_Sat unsigned long long _Fract, Sullf, ullr))
   TEST (short _Accum, sa, hk)
   TEST (_Accum, a, k)
   TEST (long _Accum, la, lk)
-  TEST (long long _Accum, lla, llk)
+  LLACCUM_TEST (TEST (long long _Accum, lla, llk))
   TEST (unsigned short _Accum, usa, uhk)
   TEST (unsigned _Accum, ua, uk)
   TEST (unsigned long _Accum, ula, ulk)
-  TEST (unsigned long long _Accum, ulla, ullk)
+  ULLACCUM_TEST (TEST (unsigned long long _Accum, ulla, ullk))
   TEST (_Sat short _Accum, Ssa, hk)
   TEST (_Sat _Accum, Sa, k)
   TEST (_Sat long _Accum, Sla, lk)
-  TEST (_Sat long long _Accum, Slla, llk)
+  LLACCUM_TEST (TEST (_Sat long long _Accum, Slla, llk))
   TEST (_Sat unsigned short _Accum, Susa, uhk)
   TEST (_Sat unsigned _Accum, Sua, uk)
   TEST (_Sat unsigned long _Accum, Sula, ulk)
-  TEST (_Sat unsigned long long _Accum, Sulla, ullk)
+  ULLACCUM_TEST (TEST (_Sat unsigned long long _Accum, Sulla, ullk))
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/fixed-point/func-scalar.c b/gcc/testsuite/gcc.dg/fixed-point/func-scalar.c
index 957b562..dacf64c 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/func-scalar.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/func-scalar.c
@@ -5,6 +5,8 @@ 
    Test scalar passing and return values involving fixed-point types.
    Based on the test from ../dfp/.  */
 
+#include "longlong-support.h"
+
 extern void abort (void);
 
 /* A handful of functions that return the Nth argument of
@@ -25,35 +27,35 @@  TYPE NAME ## 4 (TYPE arg0, TYPE arg1, TYPE arg2, TYPE arg3, TYPE arg4) \
 FUNC (short _Fract, sf)
 FUNC (_Fract, f)
 FUNC (long _Fract, lf)
-FUNC (long long _Fract, llf)
+LLFRACT_TEST (FUNC (long long _Fract, llf))
 FUNC (unsigned short _Fract, usf)
 FUNC (unsigned _Fract, uf)
 FUNC (unsigned long _Fract, ulf)
-FUNC (unsigned long long _Fract, ullf)
+ULLFRACT_TEST (FUNC (unsigned long long _Fract, ullf))
 FUNC (_Sat short _Fract, Ssf)
 FUNC (_Sat _Fract, Sf)
 FUNC (_Sat long _Fract, Slf)
-FUNC (_Sat long long _Fract, Sllf)
+LLFRACT_TEST (FUNC (_Sat long long _Fract, Sllf))
 FUNC (_Sat unsigned short _Fract, Susf)
 FUNC (_Sat unsigned _Fract, Suf)
 FUNC (_Sat unsigned long _Fract, Sulf)
-FUNC (_Sat unsigned long long _Fract, Sullf)
+ULLFRACT_TEST (FUNC (_Sat unsigned long long _Fract, Sullf))
 FUNC (short _Accum, sa)
 FUNC (_Accum, a)
 FUNC (long _Accum, la)
-FUNC (long long _Accum, lla)
+LLACCUM_TEST (FUNC (long long _Accum, lla))
 FUNC (unsigned short _Accum, usa)
 FUNC (unsigned _Accum, ua)
 FUNC (unsigned long _Accum, ula)
-FUNC (unsigned long long _Accum, ulla)
+ULLACCUM_TEST (FUNC (unsigned long long _Accum, ulla))
 FUNC (_Sat short _Accum, Ssa)
 FUNC (_Sat _Accum, Sa)
 FUNC (_Sat long _Accum, Sla)
-FUNC (_Sat long long _Accum, Slla)
+LLACCUM_TEST (FUNC (_Sat long long _Accum, Slla))
 FUNC (_Sat unsigned short _Accum, Susa)
 FUNC (_Sat unsigned _Accum, Sua)
 FUNC (_Sat unsigned long _Accum, Sula)
-FUNC (_Sat unsigned long long _Accum, Sulla)
+ULLACCUM_TEST (FUNC (_Sat unsigned long long _Accum, Sulla))
 
 int main()
 {
@@ -74,35 +76,35 @@  int main()
   TEST (short _Fract, sf, hr)
   TEST (_Fract, f, r)
   TEST (long _Fract, lf, lr)
-  TEST (long long _Fract, llf, llr)
+  LLFRACT_TEST (TEST (long long _Fract, llf, llr))
   TEST (unsigned short _Fract, usf, uhr)
   TEST (unsigned _Fract, uf, ur)
   TEST (unsigned long _Fract, ulf, ulr)
-  TEST (unsigned long long _Fract, ullf, ullr)
+  ULLFRACT_TEST (TEST (unsigned long long _Fract, ullf, ullr))
   TEST (_Sat short _Fract, Ssf, hr)
   TEST (_Sat _Fract, Sf, r)
   TEST (_Sat long _Fract, Slf, lr)
-  TEST (_Sat long long _Fract, Sllf, llr)
+  LLFRACT_TEST (TEST (_Sat long long _Fract, Sllf, llr))
   TEST (_Sat unsigned short _Fract, Susf, uhr)
   TEST (_Sat unsigned _Fract, Suf, ur)
   TEST (_Sat unsigned long _Fract, Sulf, ulr)
-  TEST (_Sat unsigned long long _Fract, Sullf, ullr)
+  ULLFRACT_TEST (TEST (_Sat unsigned long long _Fract, Sullf, ullr))
   TEST (short _Accum, sa, hk)
   TEST (_Accum, a, k)
   TEST (long _Accum, la, lk)
-  TEST (long long _Accum, lla, llk)
+  LLACCUM_TEST (TEST (long long _Accum, lla, llk))
   TEST (unsigned short _Accum, usa, uhk)
   TEST (unsigned _Accum, ua, uk)
   TEST (unsigned long _Accum, ula, ulk)
-  TEST (unsigned long long _Accum, ulla, ullk)
+  ULLACCUM_TEST (TEST (unsigned long long _Accum, ulla, ullk))
   TEST (_Sat short _Accum, Ssa, hk)
   TEST (_Sat _Accum, Sa, k)
   TEST (_Sat long _Accum, Sla, lk)
-  TEST (_Sat long long _Accum, Slla, llk)
+  LLACCUM_TEST (TEST (_Sat long long _Accum, Slla, llk))
   TEST (_Sat unsigned short _Accum, Susa, uhk)
   TEST (_Sat unsigned _Accum, Sua, uk)
   TEST (_Sat unsigned long _Accum, Sula, ulk)
-  TEST (_Sat unsigned long long _Accum, Sulla, ullk)
+  ULLACCUM_TEST (TEST (_Sat unsigned long long _Accum, Sulla, ullk))
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/fixed-point/func-struct.c b/gcc/testsuite/gcc.dg/fixed-point/func-struct.c
index c753888..0ba04bc 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/func-struct.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/func-struct.c
@@ -5,6 +5,8 @@ 
    Test structure passing and return values involving fixed-point types.
    Based on the test from ../dfp/.  */
 
+#include "longlong-support.h"
+
 extern void abort (void);
 
 struct example
@@ -15,96 +17,128 @@  struct example
   char dummy2;
   long _Fract lf;
   char dummy3;
+#if DO_LLFRACT_TESTS
   long long _Fract llf;
   char dummy4;
+#endif
   unsigned short _Fract usf;
   char dummy5;
   unsigned _Fract uf;
   char dummy6;
   unsigned long _Fract ulf;
   char dummy7;
+#if DO_ULLFRACT_TESTS
   unsigned long long _Fract ullf;
   char dummy8;
+#endif
   _Sat short _Fract Ssf;
   char dummy9;
   _Sat _Fract Sf;
   char dummy10;
   _Sat long _Fract Slf;
   char dummy11;
+#if DO_LLFRACT_TESTS
   _Sat long long _Fract Sllf;
   char dummy12;
+#endif
   _Sat unsigned short _Fract Susf;
   char dummy13;
   _Sat unsigned _Fract Suf;
   char dummy14;
   _Sat unsigned long _Fract Sulf;
   char dummy15;
+#if DO_ULLFRACT_TESTS
   _Sat unsigned long long _Fract Sullf;
   char dummy16;
+#endif
   short _Accum sa;
   char dummya1;
   _Accum a;
   char dummya2;
   long _Accum la;
   char dummya3;
+#if DO_LLACCUM_TESTS
   long long _Accum lla;
   char dummya4;
+#endif
   unsigned short _Accum usa;
   char dummya5;
   unsigned _Accum ua;
   char dummya6;
   unsigned long _Accum ula;
   char dummya7;
+#if DO_ULLACCUM_TESTS
   unsigned long long _Accum ulla;
   char dummya8;
+#endif
   _Sat short _Accum Ssa;
   char dummya9;
   _Sat _Accum Sa;
   char dummya10;
   _Sat long _Accum Sla;
   char dummya11;
+#if DO_LLACCUM_TESTS
   _Sat long long _Accum Slla;
   char dummya12;
+#endif
   _Sat unsigned short _Accum Susa;
   char dummya13;
   _Sat unsigned _Accum Sua;
   char dummya14;
   _Sat unsigned long _Accum Sula;
   char dummya15;
+#if DO_ULLACCUM_TESTS
   _Sat unsigned long long _Accum Sulla;
   char dummya16;
+#endif
 } nums = { 0.1hr, 'a',
 	   0.2r, 'b',
 	   0.3lr, 'c',
+#if DO_LLFRACT_TESTS
 	   0.4llr, 'd',
+#endif
 	   0.5uhr, 'e',
 	   0.6ur, 'f',
 	   0.7ulr, 'g',
+#if DO_ULLFRACT_TESTS
 	   0.8ullr, 'h',
+#endif
 	   0.11r, 'i',
 	   0.22r, 'j',
 	   0.33lr, 'k',
+#if DO_LLFRACT_TESTS
 	   0.44llr, 'l',
+#endif
 	   0.55uhr, 'm',
 	   0.66ur, 'n',
 	   0.77ulr, 'o',
+#if DO_ULLFRACT_TESTS
 	   0.88ullr, 'p',
+#endif
 	   0.1hk, 'q',
 	   0.2k, 'r',
 	   0.3lk, 's',
+#if DO_LLACCUM_TESTS
 	   0.4llk, 't',
+#endif
 	   0.5uhk, 'u',
 	   0.6uk, 'v',
 	   0.7ulk, 'w',
+#if DO_ULLACCUM_TESTS
 	   0.8ullk, 'x',
+#endif
 	   0.11k, 'y',
 	   0.22k, 'z',
 	   0.33lk, '0',
+#if DO_LLACCUM_TESTS
 	   0.44llk, '1',
+#endif
 	   0.55uhk, '2',
 	   0.66uk, '3',
 	   0.77ulk, '4',
+#if DO_ULLACCUM_TESTS
 	   0.88ullk, '5'
+#endif
 	 };
 
 /* A handful of functions that return the Nth argument of
@@ -117,35 +151,35 @@  TYPE NAME ## _func (struct example s) \
 FUNC (short _Fract, sf)
 FUNC (_Fract, f)
 FUNC (long _Fract, lf)
-FUNC (long long _Fract, llf)
+LLFRACT_TEST (FUNC (long long _Fract, llf))
 FUNC (unsigned short _Fract, usf)
 FUNC (unsigned _Fract, uf)
 FUNC (unsigned long _Fract, ulf)
-FUNC (unsigned long long _Fract, ullf)
+ULLFRACT_TEST (FUNC (unsigned long long _Fract, ullf))
 FUNC (_Sat short _Fract, Ssf)
 FUNC (_Sat _Fract, Sf)
 FUNC (_Sat long _Fract, Slf)
-FUNC (_Sat long long _Fract, Sllf)
+LLFRACT_TEST (FUNC (_Sat long long _Fract, Sllf))
 FUNC (_Sat unsigned short _Fract, Susf)
 FUNC (_Sat unsigned _Fract, Suf)
 FUNC (_Sat unsigned long _Fract, Sulf)
-FUNC (_Sat unsigned long long _Fract, Sullf)
+ULLFRACT_TEST (FUNC (_Sat unsigned long long _Fract, Sullf))
 FUNC (short _Accum, sa)
 FUNC (_Accum, a)
 FUNC (long _Accum, la)
-FUNC (long long _Accum, lla)
+LLACCUM_TEST (FUNC (long long _Accum, lla))
 FUNC (unsigned short _Accum, usa)
 FUNC (unsigned _Accum, ua)
 FUNC (unsigned long _Accum, ula)
-FUNC (unsigned long long _Accum, ulla)
+ULLACCUM_TEST (FUNC (unsigned long long _Accum, ulla))
 FUNC (_Sat short _Accum, Ssa)
 FUNC (_Sat _Accum, Sa)
 FUNC (_Sat long _Accum, Sla)
-FUNC (_Sat long long _Accum, Slla)
+LLACCUM_TEST (FUNC (_Sat long long _Accum, Slla))
 FUNC (_Sat unsigned short _Accum, Susa)
 FUNC (_Sat unsigned _Accum, Sua)
 FUNC (_Sat unsigned long _Accum, Sula)
-FUNC (_Sat unsigned long long _Accum, Sulla)
+ULLACCUM_TEST (FUNC (_Sat unsigned long long _Accum, Sulla))
 
 int main()
 {
@@ -157,35 +191,35 @@  int main()
   TEST (short _Fract, sf, 0.1hr)
   TEST (_Fract, f, 0.2r)
   TEST (long _Fract, lf, 0.3lr)
-  TEST (long long _Fract, llf, 0.4llr)
+  LLFRACT_TEST (TEST (long long _Fract, llf, 0.4llr))
   TEST (unsigned short _Fract, usf, 0.5uhr)
   TEST (unsigned _Fract, uf, 0.6ur)
   TEST (unsigned long _Fract, ulf, 0.7ulr)
-  TEST (unsigned long long _Fract, ullf, 0.8ullr)
+  ULLFRACT_TEST (TEST (unsigned long long _Fract, ullf, 0.8ullr))
   TEST (_Sat short _Fract, Ssf, 0.11hr)
   TEST (_Sat _Fract, Sf, 0.22r)
   TEST (_Sat long _Fract, Slf, 0.33lr)
-  TEST (_Sat long long _Fract, Sllf, 0.44llr)
+  LLFRACT_TEST (TEST (_Sat long long _Fract, Sllf, 0.44llr))
   TEST (_Sat unsigned short _Fract, Susf, 0.55uhr)
   TEST (_Sat unsigned _Fract, Suf, 0.66ur)
   TEST (_Sat unsigned long _Fract, Sulf, 0.77ulr)
-  TEST (_Sat unsigned long long _Fract, Sullf, 0.88ullr)
+  ULLFRACT_TEST (TEST (_Sat unsigned long long _Fract, Sullf, 0.88ullr))
   TEST (short _Accum, sa, 0.1hk)
   TEST (_Accum, a, 0.2k)
   TEST (long _Accum, la, 0.3lk)
-  TEST (long long _Accum, lla, 0.4llk)
+  LLACCUM_TEST (TEST (long long _Accum, lla, 0.4llk))
   TEST (unsigned short _Accum, usa, 0.5uhk)
   TEST (unsigned _Accum, ua, 0.6uk)
   TEST (unsigned long _Accum, ula, 0.7ulk)
-  TEST (unsigned long long _Accum, ulla, 0.8ullk)
+  ULLACCUM_TEST (TEST (unsigned long long _Accum, ulla, 0.8ullk))
   TEST (_Sat short _Accum, Ssa, 0.11hk)
   TEST (_Sat _Accum, Sa, 0.22k)
   TEST (_Sat long _Accum, Sla, 0.33lk)
-  TEST (_Sat long long _Accum, Slla, 0.44llk)
+  LLACCUM_TEST (TEST (_Sat long long _Accum, Slla, 0.44llk))
   TEST (_Sat unsigned short _Accum, Susa, 0.55uhk)
   TEST (_Sat unsigned _Accum, Sua, 0.66uk)
   TEST (_Sat unsigned long _Accum, Sula, 0.77ulk)
-  TEST (_Sat unsigned long long _Accum, Sulla, 0.88ullk)
+  ULLACCUM_TEST (TEST (_Sat unsigned long long _Accum, Sulla, 0.88ullk))
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/fixed-point/func-vararg-mixed.c b/gcc/testsuite/gcc.dg/fixed-point/func-vararg-mixed.c
index 61a30e7..6887521 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/func-vararg-mixed.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/func-vararg-mixed.c
@@ -5,6 +5,8 @@ 
    Test passing varargs of fixed-point types.
    Based on the test from ../dfp/.  */
 
+#include "longlong-support.h"
+
 #include <stdarg.h>
 
 extern void abort (void);
@@ -66,35 +68,35 @@  vararg_ ## NAME (unsigned arg, ...) \
 FUNC (short _Fract, sf)
 FUNC (_Fract, f)
 FUNC (long _Fract, lf)
-FUNC (long long _Fract, llf)
+LLFRACT_TEST (FUNC (long long _Fract, llf))
 FUNC (unsigned short _Fract, usf)
 FUNC (unsigned _Fract, uf)
 FUNC (unsigned long _Fract, ulf)
-FUNC (unsigned long long _Fract, ullf)
+ULLFRACT_TEST (FUNC (unsigned long long _Fract, ullf))
 FUNC (_Sat short _Fract, Ssf)
 FUNC (_Sat _Fract, Sf)
 FUNC (_Sat long _Fract, Slf)
-FUNC (_Sat long long _Fract, Sllf)
+LLFRACT_TEST (FUNC (_Sat long long _Fract, Sllf))
 FUNC (_Sat unsigned short _Fract, Susf)
 FUNC (_Sat unsigned _Fract, Suf)
 FUNC (_Sat unsigned long _Fract, Sulf)
-FUNC (_Sat unsigned long long _Fract, Sullf)
+ULLFRACT_TEST (FUNC (_Sat unsigned long long _Fract, Sullf))
 FUNC (short _Accum, sa)
 FUNC (_Accum, a)
 FUNC (long _Accum, la)
-FUNC (long long _Accum, lla)
+LLACCUM_TEST (FUNC (long long _Accum, lla))
 FUNC (unsigned short _Accum, usa)
 FUNC (unsigned _Accum, ua)
 FUNC (unsigned long _Accum, ula)
-FUNC (unsigned long long _Accum, ulla)
+ULLACCUM_TEST (FUNC (unsigned long long _Accum, ulla))
 FUNC (_Sat short _Accum, Ssa)
 FUNC (_Sat _Accum, Sa)
 FUNC (_Sat long _Accum, Sla)
-FUNC (_Sat long long _Accum, Slla)
+LLACCUM_TEST (FUNC (_Sat long long _Accum, Slla))
 FUNC (_Sat unsigned short _Accum, Susa)
 FUNC (_Sat unsigned _Accum, Sua)
 FUNC (_Sat unsigned long _Accum, Sula)
-FUNC (_Sat unsigned long long _Accum, Sulla)
+ULLACCUM_TEST (FUNC (_Sat unsigned long long _Accum, Sulla))
 
 int main()
 {
@@ -111,35 +113,35 @@  int main()
   TEST(sf, hr)
   TEST(f, r)
   TEST(lf, lr)
-  TEST(llf, llr)
+  LLFRACT_TEST (TEST(llf, llr))
   TEST(usf, uhr)
   TEST(uf, ur)
   TEST(ulf, ulr)
-  TEST(ullf, ullr)
+  ULLFRACT_TEST (TEST(ullf, ullr))
   TEST(Ssf, hr)
   TEST(Sf, r)
   TEST(Slf, lr)
-  TEST(Sllf, llr)
+  LLFRACT_TEST (TEST(Sllf, llr))
   TEST(Susf, uhr)
   TEST(Suf, ur)
   TEST(Sulf, ulr)
-  TEST(Sullf, ullr)
+  ULLFRACT_TEST (TEST(Sullf, ullr))
   TEST(sa, hk)
   TEST(a, k)
   TEST(la, lk)
-  TEST(lla, llk)
+  LLACCUM_TEST (TEST(lla, llk))
   TEST(usa, uhk)
   TEST(ua, uk)
   TEST(ula, ulk)
-  TEST(ulla, ullk)
+  ULLACCUM_TEST (TEST(ulla, ullk))
   TEST(Ssa, hk)
   TEST(Sa, k)
   TEST(Sla, lk)
-  TEST(Slla, llk)
+  LLACCUM_TEST (TEST(Slla, llk))
   TEST(Susa, uhk)
   TEST(Sua, uk)
   TEST(Sula, ulk)
-  TEST(Sulla, ullk)
+  ULLACCUM_TEST (TEST(Sulla, ullk))
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/fixed-point/func-vararg.c b/gcc/testsuite/gcc.dg/fixed-point/func-vararg.c
index 9f517ae..84dadff 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/func-vararg.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/func-vararg.c
@@ -6,6 +6,7 @@ 
    Based on the test from ../dfp/.  */
 
 #include <stdarg.h>
+#include "longlong-support.h"
 
 extern void abort (void);
 
@@ -26,35 +27,35 @@  vararg_ ## NAME (unsigned arg, ...) \
 FUNC (short _Fract, sf)
 FUNC (_Fract, f)
 FUNC (long _Fract, lf)
-FUNC (long long _Fract, llf)
+LLFRACT_TEST (FUNC (long long _Fract, llf))
 FUNC (unsigned short _Fract, usf)
 FUNC (unsigned _Fract, uf)
 FUNC (unsigned long _Fract, ulf)
-FUNC (unsigned long long _Fract, ullf)
+ULLFRACT_TEST (FUNC (unsigned long long _Fract, ullf))
 FUNC (_Sat short _Fract, Ssf)
 FUNC (_Sat _Fract, Sf)
 FUNC (_Sat long _Fract, Slf)
-FUNC (_Sat long long _Fract, Sllf)
+LLFRACT_TEST (FUNC (_Sat long long _Fract, Sllf))
 FUNC (_Sat unsigned short _Fract, Susf)
 FUNC (_Sat unsigned _Fract, Suf)
 FUNC (_Sat unsigned long _Fract, Sulf)
-FUNC (_Sat unsigned long long _Fract, Sullf)
+ULLFRACT_TEST (FUNC (_Sat unsigned long long _Fract, Sullf))
 FUNC (short _Accum, sa)
 FUNC (_Accum, a)
 FUNC (long _Accum, la)
-FUNC (long long _Accum, lla)
+LLACCUM_TEST (FUNC (long long _Accum, lla))
 FUNC (unsigned short _Accum, usa)
 FUNC (unsigned _Accum, ua)
 FUNC (unsigned long _Accum, ula)
-FUNC (unsigned long long _Accum, ulla)
+ULLACCUM_TEST (FUNC (unsigned long long _Accum, ulla))
 FUNC (_Sat short _Accum, Ssa)
 FUNC (_Sat _Accum, Sa)
 FUNC (_Sat long _Accum, Sla)
-FUNC (_Sat long long _Accum, Slla)
+LLACCUM_TEST (FUNC (_Sat long long _Accum, Slla))
 FUNC (_Sat unsigned short _Accum, Susa)
 FUNC (_Sat unsigned _Accum, Sua)
 FUNC (_Sat unsigned long _Accum, Sula)
-FUNC (_Sat unsigned long long _Accum, Sulla)
+ULLACCUM_TEST (FUNC (_Sat unsigned long long _Accum, Sulla))
 
 int main()
 {
@@ -81,35 +82,35 @@  int main()
   TEST(sf, hr)
   TEST(f, r)
   TEST(lf, lr)
-  TEST(llf, llr)
+  LLFRACT_TEST (TEST(llf, llr))
   TEST(usf, uhr)
   TEST(uf, ur)
   TEST(ulf, ulr)
-  TEST(ullf, ullr)
+  ULLFRACT_TEST (TEST(ullf, ullr))
   TEST(Ssf, hr)
   TEST(Sf, r)
   TEST(Slf, lr)
-  TEST(Sllf, llr)
+  LLFRACT_TEST (TEST(Sllf, llr))
   TEST(Susf, uhr)
   TEST(Suf, ur)
   TEST(Sulf, ulr)
-  TEST(Sullf, ullr)
+  ULLFRACT_TEST (TEST(Sullf, ullr))
   TEST(sa, hk)
   TEST(a, k)
   TEST(la, lk)
-  TEST(lla, llk)
+  LLACCUM_TEST (TEST(lla, llk))
   TEST(usa, uhk)
   TEST(ua, uk)
   TEST(ula, ulk)
-  TEST(ulla, ullk)
+  ULLACCUM_TEST (TEST(ulla, ullk))
   TEST(Ssa, hk)
   TEST(Sa, k)
   TEST(Sla, lk)
-  TEST(Slla, llk)
+  LLACCUM_TEST (TEST(Slla, llk))
   TEST(Susa, uhk)
   TEST(Sua, uk)
   TEST(Sula, ulk)
-  TEST(Sulla, ullk)
+  ULLACCUM_TEST (TEST(Sulla, ullk))
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/fixed-point/longlong-support.h b/gcc/testsuite/gcc.dg/fixed-point/longlong-support.h
new file mode 100644
index 0000000..a811d17
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/fixed-point/longlong-support.h
@@ -0,0 +1,31 @@ 
+#if __LLFRACT_FBIT__ <= (__SIZEOF_LONG_LONG__ * 8)
+#define LLFRACT_TEST(X) X
+#define DO_LLFRACT_TESTS 1
+#else
+#define LLFRACT_TEST(X)
+#define DO_LLFRACT_TESTS 0
+#endif
+
+#if __ULLFRACT_FBIT__ <= (__SIZEOF_LONG_LONG__ * 8)
+#define ULLFRACT_TEST(X) X
+#define DO_ULLFRACT_TESTS 1
+#else
+#define ULLFRACT_TEST(X)
+#define DO_ULLFRACT_TESTS 0
+#endif
+
+#if (__LLACCUM_IBIT__ + __LLACCUM_FBIT__) <= (__SIZEOF_LONG_LONG__ * 8)
+#define LLACCUM_TEST(X) X
+#define DO_LLACCUM_TESTS 1
+#else
+#define LLACCUM_TEST(X)
+#define DO_LLACCUM_TESTS 0
+#endif
+
+#if (__ULLACCUM_IBIT__ + __ULLACCUM_FBIT__) <= (__SIZEOF_LONG_LONG__ * 8)
+#define ULLACCUM_TEST(X) X
+#define DO_ULLACCUM_TESTS 1
+#else
+#define ULLACCUM_TEST(X)
+#define DO_ULLACCUM_TESTS 0
+#endif
diff --git a/gcc/testsuite/gcc.dg/fixed-point/loop-index.c b/gcc/testsuite/gcc.dg/fixed-point/loop-index.c
index d7ed911..a3271a0 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/loop-index.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/loop-index.c
@@ -4,6 +4,8 @@ 
 /* C99 6.8.5.2: The for statement.
    Based on the test from ../dfp/.  */
 
+#include "longlong-support.h"
+
 extern void abort (void);
 
 #define FUNC(TYPE,NAME,PF) \
@@ -21,35 +23,35 @@  NAME (void) \
 FUNC (short _Fract, sf, hr)
 FUNC (_Fract, f, r)
 FUNC (long _Fract, lf, lr)
-FUNC (long long _Fract, llf, llr)
+LLFRACT_TEST (FUNC (long long _Fract, llf, llr))
 FUNC (unsigned short _Fract, usf, uhr)
 FUNC (unsigned _Fract, uf, ur)
 FUNC (unsigned long _Fract, ulf, ulr)
-FUNC (unsigned long long _Fract, ullf, ullr)
+ULLFRACT_TEST (FUNC (unsigned long long _Fract, ullf, ullr))
 FUNC (_Sat short _Fract, Ssf, hr)
 FUNC (_Sat _Fract, Sf, r)
 FUNC (_Sat long _Fract, Slf, lr)
-FUNC (_Sat long long _Fract, Sllf, llr)
+LLFRACT_TEST (FUNC (_Sat long long _Fract, Sllf, llr))
 FUNC (_Sat unsigned short _Fract, Susf, uhr)
 FUNC (_Sat unsigned _Fract, Suf, ur)
 FUNC (_Sat unsigned long _Fract, Sulf, ulr)
-FUNC (_Sat unsigned long long _Fract, Sullf, ullr)
+ULLFRACT_TEST (FUNC (_Sat unsigned long long _Fract, Sullf, ullr))
 FUNC (short _Accum, sa, hk)
 FUNC (_Accum, a, k)
 FUNC (long _Accum, la, lk)
-FUNC (long long _Accum, lla, llk)
+LLACCUM_TEST (FUNC (long long _Accum, lla, llk))
 FUNC (unsigned short _Accum, usa, uhk)
 FUNC (unsigned _Accum, ua, uk)
 FUNC (unsigned long _Accum, ula, ulk)
-FUNC (unsigned long long _Accum, ulla, ullk)
+ULLACCUM_TEST (FUNC (unsigned long long _Accum, ulla, ullk))
 FUNC (_Sat short _Accum, Ssa, hk)
 FUNC (_Sat _Accum, Sa, k)
 FUNC (_Sat long _Accum, Sla, lk)
-FUNC (_Sat long long _Accum, Slla, llk)
+LLACCUM_TEST (FUNC (_Sat long long _Accum, Slla, llk))
 FUNC (_Sat unsigned short _Accum, Susa, uhk)
 FUNC (_Sat unsigned _Accum, Sua, uk)
 FUNC (_Sat unsigned long _Accum, Sula, ulk)
-FUNC (_Sat unsigned long long _Accum, Sulla, ullk)
+ULLACCUM_TEST (FUNC (_Sat unsigned long long _Accum, Sulla, ullk))
 
 int
 main ()
@@ -57,35 +59,35 @@  main ()
   sf ();
   f ();
   lf ();
-  llf ();
+  LLFRACT_TEST (llf ());
   usf ();
   uf ();
   ulf ();
-  ullf ();
+  ULLFRACT_TEST (ullf ());
   Ssf ();
   Sf ();
   Slf ();
-  Sllf ();
+  LLFRACT_TEST (Sllf ());
   Susf ();
   Suf ();
   Sulf ();
-  Sullf ();
+  ULLFRACT_TEST (Sullf ());
   sa ();
   a ();
   la ();
-  lla ();
+  LLACCUM_TEST (lla ());
   usa ();
   ua ();
   ula ();
-  ulla ();
+  ULLACCUM_TEST (ulla ());
   Ssa ();
   Sa ();
   Sla ();
-  Slla ();
+  LLACCUM_TEST (Slla ());
   Susa ();
   Sua ();
   Sula ();
-  Sulla ();
+  ULLACCUM_TEST (Sulla ());
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/fixed-point/muldiv-warning.c b/gcc/testsuite/gcc.dg/fixed-point/muldiv-warning.c
index 4ac5531..17781f8 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/muldiv-warning.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/muldiv-warning.c
@@ -1,72 +1,74 @@ 
 /* { dg-do compile } */
 /* { dg-options "-std=gnu99" } */
 
+#include "longlong-support.h"
+
 /* Check if GCC generates warnings when overflows for mul and div.  */
 
 short _Fract sf0 = __SFRACT_MIN__ * __SFRACT_MIN__; /* { dg-warning "overflow" } */
 _Fract f0 = __FRACT_MIN__ * __FRACT_MIN__; /* { dg-warning "overflow" } */
 long _Fract lf0 = __LFRACT_MIN__ * __LFRACT_MIN__; /* { dg-warning "overflow" } */
-long long _Fract llf0 = __LLFRACT_MIN__ * __LLFRACT_MIN__; /* { dg-warning "overflow" } */
+LLFRACT_TEST (long long _Fract llf0 = __LLFRACT_MIN__ * __LLFRACT_MIN__); /* { dg-warning "overflow" } */
 short _Fract sf1 = __SFRACT_MAX__ * __SFRACT_MIN__;
 _Fract f1 = __FRACT_MAX__ * __FRACT_MIN__;
 long _Fract lf1 = __LFRACT_MAX__ * __LFRACT_MIN__;
-long long _Fract llf1 = __LLFRACT_MAX__ * __LLFRACT_MIN__;
+LLFRACT_TEST (long long _Fract llf1 = __LLFRACT_MAX__ * __LLFRACT_MIN__);
 short _Fract sf2 = __SFRACT_MIN__ / __SFRACT_MIN__; /* { dg-warning "overflow" } */
 _Fract f2 = __FRACT_MIN__ / __FRACT_MIN__; /* { dg-warning "overflow" } */
 long _Fract lf2 = __LFRACT_MIN__ / __LFRACT_MIN__; /* { dg-warning "overflow" } */
-long long _Fract llf2 = __LLFRACT_MIN__ / __LLFRACT_MIN__; /* { dg-warning "overflow" } */
+LLFRACT_TEST (long long _Fract llf2 = __LLFRACT_MIN__ / __LLFRACT_MIN__); /* { dg-warning "overflow" } */
 short _Fract sf3 = __SFRACT_MAX__ / __SFRACT_MIN__;
 _Fract f3 = __FRACT_MAX__ / __FRACT_MIN__;
 long _Fract lf3 = __LFRACT_MAX__ / __LFRACT_MIN__;
-long long _Fract llf3 = __LLFRACT_MAX__ / __LLFRACT_MIN__;
+LLFRACT_TEST (long long _Fract llf3 = __LLFRACT_MAX__ / __LLFRACT_MIN__);
 
 unsigned short _Fract usf0 = __USFRACT_MIN__ * __USFRACT_MIN__;
 unsigned _Fract uf0 = __UFRACT_MIN__ * __UFRACT_MIN__;
 unsigned long _Fract ulf0 = __ULFRACT_MIN__ * __ULFRACT_MIN__;
-unsigned long long _Fract ullf0 = __ULLFRACT_MIN__ * __ULLFRACT_MIN__;
+ULLFRACT_TEST (unsigned long long _Fract ullf0 = __ULLFRACT_MIN__ * __ULLFRACT_MIN__);
 unsigned short _Fract usf1 = __USFRACT_MAX__ * __USFRACT_MIN__;
 unsigned _Fract uf1 = __UFRACT_MAX__ * __UFRACT_MIN__;
 unsigned long _Fract ulf1 = __ULFRACT_MAX__ * __ULFRACT_MIN__;
-unsigned long long _Fract ullf1 = __ULLFRACT_MAX__ * __ULLFRACT_MIN__;
+ULLFRACT_TEST (unsigned long long _Fract ullf1 = __ULLFRACT_MAX__ * __ULLFRACT_MIN__);
 unsigned short _Fract usf2 = __USFRACT_MAX__ / __USFRACT_MAX__; /* { dg-warning "overflow" } */
 unsigned _Fract uf2 = __UFRACT_MAX__ / __UFRACT_MAX__; /* { dg-warning "overflow" } */
 unsigned long _Fract ulf2 = __ULFRACT_MAX__ / __ULFRACT_MAX__; /* { dg-warning "overflow" } */
-unsigned long long _Fract ullf2 = __ULLFRACT_MAX__ / __ULLFRACT_MAX__; /* { dg-warning "overflow" } */
+ULLFRACT_TEST (unsigned long long _Fract ullf2 = __ULLFRACT_MAX__ / __ULLFRACT_MAX__); /* { dg-warning "overflow" } */
 unsigned short _Fract usf3 = __USFRACT_MIN__ / __USFRACT_MAX__;
 unsigned _Fract uf3 = __UFRACT_MIN__ / __UFRACT_MAX__;
 unsigned long _Fract ulf3 = __ULFRACT_MIN__ / __ULFRACT_MAX__;
-unsigned long long _Fract ullf3 = __ULLFRACT_MIN__ / __ULLFRACT_MAX__;
+ULLFRACT_TEST (unsigned long long _Fract ullf3 = __ULLFRACT_MIN__ / __ULLFRACT_MAX__);
 
 short _Accum sa0 = __SACCUM_MIN__ * __SACCUM_MIN__; /* { dg-warning "overflow" } */
 _Accum a0 = __ACCUM_MIN__ * __ACCUM_MIN__; /* { dg-warning "overflow" } */
 long _Accum la0 = __LACCUM_MIN__ * __LACCUM_MIN__; /* { dg-warning "overflow" } */
-long long _Accum lla0 = __LLACCUM_MIN__ * __LLACCUM_MIN__; /* { dg-warning "overflow" } */
+LLACCUM_TEST (long long _Accum lla0 = __LLACCUM_MIN__ * __LLACCUM_MIN__); /* { dg-warning "overflow" "" { xfail "arm*-*-*" } } */
 short _Accum sa1 = __SACCUM_MAX__ * 0.1hk;
 _Accum a1 = __ACCUM_MAX__ * 0.1k;
 long _Accum la1 = __LACCUM_MAX__ * 0.1lk;
-long long _Accum lla1 = __LLACCUM_MAX__ * 0.1llk;
+LLACCUM_TEST (long long _Accum lla1 = __LLACCUM_MAX__ * 0.1llk);
 short _Accum sa2 = __SACCUM_MIN__ / 0.1hk; /* { dg-warning "overflow" } */
 _Accum a2 = __ACCUM_MIN__ / 0.1k; /* { dg-warning "overflow" } */
 long _Accum la2 = __LACCUM_MIN__ / 0.1lk; /* { dg-warning "overflow" } */
-long long _Accum lla2 = __LLACCUM_MIN__ / 0.1llk; /* { dg-warning "overflow" } */
+LLACCUM_TEST (long long _Accum lla2 = __LLACCUM_MIN__ / 0.1llk); /* { dg-warning "overflow" "" { xfail "arm*-*-*" } } */
 short _Accum sa3 = __SACCUM_MAX__ / __SACCUM_MIN__;
 _Accum a3 = __ACCUM_MAX__ / __ACCUM_MIN__;
 long _Accum la3 = __LACCUM_MAX__ / __LACCUM_MIN__;
-long long _Accum lla3 = __LLACCUM_MAX__ / __LLACCUM_MIN__;
+LLACCUM_TEST (long long _Accum lla3 = __LLACCUM_MAX__ / __LLACCUM_MIN__);
 
 unsigned short _Accum usa0 = __USACCUM_MIN__ * __USACCUM_MIN__;
 unsigned _Accum ua0 = __UACCUM_MIN__ * __UACCUM_MIN__;
 unsigned long _Accum ula0 = __ULACCUM_MIN__ * __ULACCUM_MIN__;
-unsigned long long _Accum ulla0 = __ULLACCUM_MIN__ * __ULLACCUM_MIN__;
+ULLACCUM_TEST (unsigned long long _Accum ulla0 = __ULLACCUM_MIN__ * __ULLACCUM_MIN__);
 unsigned short _Accum usa1 = __USACCUM_MAX__ * __USACCUM_MAX__; /* { dg-warning "overflow" } */
 unsigned _Accum ua1 = __UACCUM_MAX__ * __UACCUM_MAX__; /* { dg-warning "overflow" } */
 unsigned long _Accum ula1 = __ULACCUM_MAX__ * __ULACCUM_MAX__; /* { dg-warning "overflow" } */
-unsigned long long _Accum ulla1 = __ULLACCUM_MAX__ * __ULLACCUM_MAX__; /* { dg-warning "overflow" } */
+ULLACCUM_TEST (unsigned long long _Accum ulla1 = __ULLACCUM_MAX__ * __ULLACCUM_MAX__); /* { dg-warning "overflow" "" { xfail "arm*-*-*" } } */
 unsigned short _Accum usa2 = __USACCUM_MAX__ / 0.5hk; /* { dg-warning "overflow" } */
 unsigned _Accum ua2 = __UACCUM_MAX__ / 0.5k; /* { dg-warning "overflow" } */
 unsigned long _Accum ula2 = __ULACCUM_MAX__ / 0.5lk; /* { dg-warning "overflow" } */
-unsigned long long _Accum ulla2 = __ULLACCUM_MAX__ / 0.5llk; /* { dg-warning "overflow" } */
+ULLACCUM_TEST (unsigned long long _Accum ulla2 = __ULLACCUM_MAX__ / 0.5llk); /* { dg-warning "overflow" "" { xfail "arm*-*-*" } } */
 unsigned short _Accum usa3 = __USACCUM_MIN__ / __USACCUM_MAX__;
 unsigned _Accum ua3 = __UACCUM_MIN__ / __UACCUM_MAX__;
 unsigned long _Accum ula3 = __ULACCUM_MIN__ / __ULACCUM_MAX__;
-unsigned long long _Accum ulla3 = __ULLACCUM_MIN__ / __ULLACCUM_MAX__;
+ULLACCUM_TEST (unsigned long long _Accum ulla3 = __ULLACCUM_MIN__ / __ULLACCUM_MAX__);
diff --git a/gcc/testsuite/gcc.dg/fixed-point/operator-comma.c b/gcc/testsuite/gcc.dg/fixed-point/operator-comma.c
index 2f1316c..2d38cf0 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/operator-comma.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/operator-comma.c
@@ -5,6 +5,8 @@ 
    Test with fixed-point operands.
    Based on the test from ../dfp/.  */
 
+#include "longlong-support.h"
+
 extern void abort (void);
 
 #define FUNC(TYPE,NAME,PF) \
@@ -19,35 +21,35 @@  init_ ## NAME () \
 FUNC (short _Fract, sf, hr)
 FUNC (_Fract, f, r)
 FUNC (long _Fract, lf, lr)
-FUNC (long long _Fract, llf, llr)
+LLFRACT_TEST (FUNC (long long _Fract, llf, llr))
 FUNC (unsigned short _Fract, usf, uhr)
 FUNC (unsigned _Fract, uf, ur)
 FUNC (unsigned long _Fract, ulf, ulr)
-FUNC (long long _Fract, ullf, ullr)
+LLFRACT_TEST (FUNC (long long _Fract, ullf, ullr))
 FUNC (_Sat short _Fract, Ssf, hr)
 FUNC (_Sat _Fract, Sf, r)
 FUNC (_Sat long _Fract, Slf, lr)
-FUNC (_Sat long long _Fract, Sllf, llr)
+LLFRACT_TEST (FUNC (_Sat long long _Fract, Sllf, llr))
 FUNC (_Sat unsigned short _Fract, Susf, uhr)
 FUNC (_Sat unsigned _Fract, Suf, ur)
 FUNC (_Sat unsigned long _Fract, Sulf, ulr)
-FUNC (_Sat long long _Fract, Sullf, ullr)
+LLFRACT_TEST (FUNC (_Sat long long _Fract, Sullf, ullr))
 FUNC (short _Accum, sa, hk)
 FUNC (_Accum, a, k)
 FUNC (long _Accum, la, lk)
-FUNC (long long _Accum, lla, llk)
+LLACCUM_TEST (FUNC (long long _Accum, lla, llk))
 FUNC (unsigned short _Accum, usa, uhk)
 FUNC (unsigned _Accum, ua, uk)
 FUNC (unsigned long _Accum, ula, ulk)
-FUNC (long long _Accum, ulla, ullk)
+LLACCUM_TEST (FUNC (long long _Accum, ulla, ullk))
 FUNC (_Sat short _Accum, Ssa, hk)
 FUNC (_Sat _Accum, Sa, k)
 FUNC (_Sat long _Accum, Sla, lk)
-FUNC (_Sat long long _Accum, Slla, llk)
+LLACCUM_TEST (FUNC (_Sat long long _Accum, Slla, llk))
 FUNC (_Sat unsigned short _Accum, Susa, uhk)
 FUNC (_Sat unsigned _Accum, Sua, uk)
 FUNC (_Sat unsigned long _Accum, Sula, ulk)
-FUNC (_Sat long long _Accum, Sulla, ullk)
+LLACCUM_TEST (FUNC (_Sat long long _Accum, Sulla, ullk))
 
 int
 main ()
@@ -64,35 +66,35 @@  main ()
   TEST(sf)
   TEST(f)
   TEST(lf)
-  TEST(llf)
+  LLFRACT_TEST (TEST(llf))
   TEST(usf)
   TEST(uf)
   TEST(ulf)
-  TEST(ullf)
+  ULLFRACT_TEST (TEST(ullf))
   TEST(Ssf)
   TEST(Sf)
   TEST(Slf)
-  TEST(Sllf)
+  LLFRACT_TEST (TEST(Sllf))
   TEST(Susf)
   TEST(Suf)
   TEST(Sulf)
-  TEST(Sullf)
+  ULLFRACT_TEST (TEST(Sullf))
   TEST(sa)
   TEST(a)
   TEST(la)
-  TEST(lla)
+  LLACCUM_TEST (TEST(lla))
   TEST(usa)
   TEST(ua)
   TEST(ula)
-  TEST(ulla)
+  ULLACCUM_TEST (TEST(ulla))
   TEST(Ssa)
   TEST(Sa)
   TEST(Sla)
-  TEST(Slla)
+  LLACCUM_TEST (TEST(Slla))
   TEST(Susa)
   TEST(Sua)
   TEST(Sula)
-  TEST(Sulla)
+  ULLACCUM_TEST (TEST(Sulla))
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/fixed-point/operator-cond.c b/gcc/testsuite/gcc.dg/fixed-point/operator-cond.c
index 94b0de0..3629b0a 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/operator-cond.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/operator-cond.c
@@ -5,6 +5,8 @@ 
    Test with fixed-point operands.
    Based on the test from ../dfp/.  */
 
+#include "longlong-support.h"
+
 extern void abort (void);
 volatile int yes, no;
 
@@ -22,35 +24,35 @@  init_ ## NAME () \
 FUNC (short _Fract, sf, hr)
 FUNC (_Fract, f, r)
 FUNC (long _Fract, lf, lr)
-FUNC (long long _Fract, llf, llr)
+LLFRACT_TEST (FUNC (long long _Fract, llf, llr))
 FUNC (unsigned short _Fract, usf, uhr)
 FUNC (unsigned _Fract, uf, ur)
 FUNC (unsigned long _Fract, ulf, ulr)
-FUNC (long long _Fract, ullf, ullr)
+LLFRACT_TEST (FUNC (long long _Fract, ullf, ullr))
 FUNC (_Sat short _Fract, Ssf, hr)
 FUNC (_Sat _Fract, Sf, r)
 FUNC (_Sat long _Fract, Slf, lr)
-FUNC (_Sat long long _Fract, Sllf, llr)
+LLFRACT_TEST (FUNC (_Sat long long _Fract, Sllf, llr))
 FUNC (_Sat unsigned short _Fract, Susf, uhr)
 FUNC (_Sat unsigned _Fract, Suf, ur)
 FUNC (_Sat unsigned long _Fract, Sulf, ulr)
-FUNC (_Sat long long _Fract, Sullf, ullr)
+LLFRACT_TEST (FUNC (_Sat long long _Fract, Sullf, ullr))
 FUNC (short _Accum, sa, hk)
 FUNC (_Accum, a, k)
 FUNC (long _Accum, la, lk)
-FUNC (long long _Accum, lla, llk)
+LLACCUM_TEST (FUNC (long long _Accum, lla, llk))
 FUNC (unsigned short _Accum, usa, uhk)
 FUNC (unsigned _Accum, ua, uk)
 FUNC (unsigned long _Accum, ula, ulk)
-FUNC (long long _Accum, ulla, ullk)
+LLACCUM_TEST (FUNC (long long _Accum, ulla, ullk))
 FUNC (_Sat short _Accum, Ssa, hk)
 FUNC (_Sat _Accum, Sa, k)
 FUNC (_Sat long _Accum, Sla, lk)
-FUNC (_Sat long long _Accum, Slla, llk)
+LLACCUM_TEST (FUNC (_Sat long long _Accum, Slla, llk))
 FUNC (_Sat unsigned short _Accum, Susa, uhk)
 FUNC (_Sat unsigned _Accum, Sua, uk)
 FUNC (_Sat unsigned long _Accum, Sula, ulk)
-FUNC (_Sat long long _Accum, Sulla, ullk)
+LLACCUM_TEST (FUNC (_Sat long long _Accum, Sulla, ullk))
 
 int
 main ()
@@ -67,35 +69,35 @@  main ()
   TEST(sf)
   TEST(f)
   TEST(lf)
-  TEST(llf)
+  LLFRACT_TEST (TEST(llf))
   TEST(usf)
   TEST(uf)
   TEST(ulf)
-  TEST(ullf)
+  ULLFRACT_TEST (TEST(ullf))
   TEST(Ssf)
   TEST(Sf)
   TEST(Slf)
-  TEST(Sllf)
+  LLFRACT_TEST (TEST(Sllf))
   TEST(Susf)
   TEST(Suf)
   TEST(Sulf)
-  TEST(Sullf)
+  ULLFRACT_TEST (TEST(Sullf))
   TEST(sa)
   TEST(a)
   TEST(la)
-  TEST(lla)
+  LLACCUM_TEST (TEST(lla))
   TEST(usa)
   TEST(ua)
   TEST(ula)
-  TEST(ulla)
+  ULLACCUM_TEST (TEST(ulla))
   TEST(Ssa)
   TEST(Sa)
   TEST(Sla)
-  TEST(Slla)
+  LLACCUM_TEST (TEST(Slla))
   TEST(Susa)
   TEST(Sua)
   TEST(Sula)
-  TEST(Sulla)
+  ULLACCUM_TEST (TEST(Sulla))
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/fixed-point/operator-logical.c b/gcc/testsuite/gcc.dg/fixed-point/operator-logical.c
index 3873b25..4734403 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/operator-logical.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/operator-logical.c
@@ -6,6 +6,8 @@ 
    Test with fixed-point operands.
    Based on the test from ../dfp/.  */
 
+#include "longlong-support.h"
+
 extern void abort (void);
 
 #define OPERATE(OPRD1,OPRT,OPRD2,RLT)	\
@@ -46,70 +48,70 @@  main ()
   short _Fract sf;
   _Fract f;
   long _Fract lf;
-  long long _Fract llf;
+  LLFRACT_TEST (long long _Fract llf);
   unsigned short _Fract usf;
   unsigned _Fract uf;
   unsigned long _Fract ulf;
-  unsigned long long _Fract ullf;
+  ULLFRACT_TEST (unsigned long long _Fract ullf);
   _Sat short _Fract Ssf;
   _Sat _Fract Sf;
   _Sat long _Fract Slf;
-  _Sat long long _Fract Sllf;
+  LLFRACT_TEST (_Sat long long _Fract Sllf);
   _Sat unsigned short _Fract Susf;
   _Sat unsigned _Fract Suf;
   _Sat unsigned long _Fract Sulf;
-  _Sat unsigned long long _Fract Sullf;
+  ULLFRACT_TEST (_Sat unsigned long long _Fract Sullf);
   short _Accum sa;
   _Accum a;
   long _Accum la;
-  long long _Accum lla;
+  LLACCUM_TEST (long long _Accum lla);
   unsigned short _Accum usa;
   unsigned _Accum ua;
   unsigned long _Accum ula;
-  unsigned long long _Accum ulla;
+  ULLACCUM_TEST (unsigned long long _Accum ulla);
   _Sat short _Accum Ssa;
   _Sat _Accum Sa;
   _Sat long _Accum Sla;
-  _Sat long long _Accum Slla;
+  LLACCUM_TEST (_Sat long long _Accum Slla);
   _Sat unsigned short _Accum Susa;
   _Sat unsigned _Accum Sua;
   _Sat unsigned long _Accum Sula;
-  _Sat unsigned long long _Accum Sulla;
+  ULLACCUM_TEST (_Sat unsigned long long _Accum Sulla);
 
   /* C99 Section 6.5.{13,14} Logical operator.  Constraints Each of the
      operands shall have scalar type.  Fixed-point types would obey this.  */
   FIXED_POINT_LOGICAL (sf);
   FIXED_POINT_LOGICAL (f);
   FIXED_POINT_LOGICAL (lf);
-  FIXED_POINT_LOGICAL (llf);
+  LLFRACT_TEST (FIXED_POINT_LOGICAL (llf));
   FIXED_POINT_LOGICAL (usf);
   FIXED_POINT_LOGICAL (uf);
   FIXED_POINT_LOGICAL (ulf);
-  FIXED_POINT_LOGICAL (ullf);
+  ULLFRACT_TEST (FIXED_POINT_LOGICAL (ullf));
   FIXED_POINT_LOGICAL (Ssf);
   FIXED_POINT_LOGICAL (Sf);
   FIXED_POINT_LOGICAL (Slf);
-  FIXED_POINT_LOGICAL (Sllf);
+  LLFRACT_TEST (FIXED_POINT_LOGICAL (Sllf));
   FIXED_POINT_LOGICAL (Susf);
   FIXED_POINT_LOGICAL (Suf);
   FIXED_POINT_LOGICAL (Sulf);
-  FIXED_POINT_LOGICAL (Sullf);
+  ULLFRACT_TEST (FIXED_POINT_LOGICAL (Sullf));
   FIXED_POINT_LOGICAL (sa);
   FIXED_POINT_LOGICAL (a);
   FIXED_POINT_LOGICAL (la);
-  FIXED_POINT_LOGICAL (lla);
+  LLACCUM_TEST (FIXED_POINT_LOGICAL (lla));
   FIXED_POINT_LOGICAL (usa);
   FIXED_POINT_LOGICAL (ua);
   FIXED_POINT_LOGICAL (ula);
-  FIXED_POINT_LOGICAL (ulla);
+  ULLACCUM_TEST (FIXED_POINT_LOGICAL (ulla));
   FIXED_POINT_LOGICAL (Ssa);
   FIXED_POINT_LOGICAL (Sa);
   FIXED_POINT_LOGICAL (Sla);
-  FIXED_POINT_LOGICAL (Slla);
+  LLACCUM_TEST (FIXED_POINT_LOGICAL (Slla));
   FIXED_POINT_LOGICAL (Susa);
   FIXED_POINT_LOGICAL (Sua);
   FIXED_POINT_LOGICAL (Sula);
-  FIXED_POINT_LOGICAL (Sulla);
+  ULLACCUM_TEST (FIXED_POINT_LOGICAL (Sulla));
 
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/fixed-point/unary.c b/gcc/testsuite/gcc.dg/fixed-point/unary.c
index 4e09549..558be97 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/unary.c
+++ b/gcc/testsuite/gcc.dg/fixed-point/unary.c
@@ -5,6 +5,8 @@ 
 
    Check unary operators ++ -- + - !.  */
 
+#include "longlong-support.h"
+
 extern void abort (void);
 
 #define INCDEC(TYPE,POSTFIX) \
@@ -109,148 +111,148 @@  int main ()
   FRACT_INCDEC(short _Fract, hr);
   FRACT_INCDEC(_Fract, r);
   FRACT_INCDEC(long _Fract, lr);
-  FRACT_INCDEC(long long _Fract, llr);
+  LLFRACT_TEST (FRACT_INCDEC(long long _Fract, llr));
   FRACT_INCDEC(_Sat short _Fract, hr);
   FRACT_INCDEC(_Sat _Fract, r);
   FRACT_INCDEC(_Sat long _Fract, lr);
-  FRACT_INCDEC(_Sat long long _Fract, llr);
+  LLFRACT_TEST (FRACT_INCDEC(_Sat long long _Fract, llr));
 
   INCDEC(short _Accum, hk);
   INCDEC(_Accum, k);
   INCDEC(long _Accum, lk);
-  INCDEC(long long _Accum, llk);
+  LLACCUM_TEST (INCDEC(long long _Accum, llk));
   INCDEC(unsigned short _Accum, uhk);
   INCDEC(unsigned _Accum, uk);
   INCDEC(unsigned long _Accum, ulk);
-  INCDEC(unsigned long long _Accum, ullk);
+  ULLACCUM_TEST (INCDEC(unsigned long long _Accum, ullk));
   INCDEC(_Sat short _Accum, hk);
   INCDEC(_Sat _Accum, k);
   INCDEC(_Sat long _Accum, lk);
-  INCDEC(_Sat long long _Accum, llk);
+  LLACCUM_TEST (INCDEC(_Sat long long _Accum, llk));
   INCDEC(_Sat unsigned short _Accum, uhk);
   INCDEC(_Sat unsigned _Accum, uk);
   INCDEC(_Sat unsigned long _Accum, ulk);
-  INCDEC(_Sat unsigned long long _Accum, ullk);
+  ULLACCUM_TEST (INCDEC(_Sat unsigned long long _Accum, ullk));
 
   FRACT_SAT_INCDEC(_Sat short _Fract, hr);
   FRACT_SAT_INCDEC(_Sat _Fract, r);
   FRACT_SAT_INCDEC(_Sat long _Fract, lr);
-  FRACT_SAT_INCDEC(_Sat long long _Fract, llr);
+  LLFRACT_TEST (FRACT_SAT_INCDEC(_Sat long long _Fract, llr));
 
   FRACT_SAT_UNS_INCDEC(_Sat unsigned short _Fract, uhr);
   FRACT_SAT_UNS_INCDEC(_Sat unsigned _Fract, ur);
   FRACT_SAT_UNS_INCDEC(_Sat unsigned long _Fract, ulr);
-  FRACT_SAT_UNS_INCDEC(_Sat unsigned long long _Fract, ullr);
+  ULLFRACT_TEST (FRACT_SAT_UNS_INCDEC(_Sat unsigned long long _Fract, ullr));
 
   PLUS(short _Fract, hr);
   PLUS(_Fract, r);
   PLUS(long _Fract, lr);
-  PLUS(long long _Fract, llr);
+  LLFRACT_TEST (PLUS(long long _Fract, llr));
   PLUS(unsigned short _Fract, uhr);
   PLUS(unsigned _Fract, ur);
   PLUS(unsigned long _Fract, ulr);
-  PLUS(unsigned long long _Fract, ullr);
+  ULLFRACT_TEST (PLUS(unsigned long long _Fract, ullr));
   PLUS(_Sat short _Fract, hr);
   PLUS(_Sat _Fract, r);
   PLUS(_Sat long _Fract, lr);
-  PLUS(_Sat long long _Fract, llr);
+  LLFRACT_TEST (PLUS(_Sat long long _Fract, llr));
   PLUS(_Sat unsigned short _Fract, uhr);
   PLUS(_Sat unsigned _Fract, ur);
   PLUS(_Sat unsigned long _Fract, ulr);
-  PLUS(_Sat unsigned long long _Fract, ullr);
+  ULLFRACT_TEST (PLUS(_Sat unsigned long long _Fract, ullr));
   PLUS(short _Accum, hk);
   PLUS(_Accum, k);
   PLUS(long _Accum, lk);
-  PLUS(long long _Accum, llk);
+  LLACCUM_TEST (PLUS(long long _Accum, llk));
   PLUS(unsigned short _Accum, uhk);
   PLUS(unsigned _Accum, uk);
   PLUS(unsigned long _Accum, ulk);
-  PLUS(unsigned long long _Accum, ullk);
+  ULLACCUM_TEST (PLUS(unsigned long long _Accum, ullk));
   PLUS(_Sat short _Accum, hk);
   PLUS(_Sat _Accum, k);
   PLUS(_Sat long _Accum, lk);
-  PLUS(_Sat long long _Accum, llk);
+  LLACCUM_TEST (PLUS(_Sat long long _Accum, llk));
   PLUS(_Sat unsigned short _Accum, uhk);
   PLUS(_Sat unsigned _Accum, uk);
   PLUS(_Sat unsigned long _Accum, ulk);
-  PLUS(_Sat unsigned long long _Accum, ullk);
+  ULLACCUM_TEST (PLUS(_Sat unsigned long long _Accum, ullk));
 
   NEG(short _Fract, hr);
   NEG(_Fract, r);
   NEG(long _Fract, lr);
-  NEG(long long _Fract, llr);
+  LLFRACT_TEST (NEG(long long _Fract, llr));
   NEG(_Sat short _Fract, hr);
   NEG(_Sat _Fract, r);
   NEG(_Sat long _Fract, lr);
-  NEG(_Sat long long _Fract, llr);
+  LLFRACT_TEST (NEG(_Sat long long _Fract, llr));
   NEG(short _Accum, hk);
   NEG(_Accum, k);
   NEG(long _Accum, lk);
-  NEG(long long _Accum, llk);
+  LLACCUM_TEST (NEG(long long _Accum, llk));
   NEG(_Sat short _Accum, hk);
   NEG(_Sat _Accum, k);
   NEG(_Sat long _Accum, lk);
-  NEG(_Sat long long _Accum, llk);
+  LLACCUM_TEST (NEG(_Sat long long _Accum, llk));
 
   FRACT_SAT_NEG(_Sat short _Fract, hr);
   FRACT_SAT_NEG(_Sat _Fract, r);
   FRACT_SAT_NEG(_Sat long _Fract, lr);
-  FRACT_SAT_NEG(_Sat long long _Fract, llr);
+  LLFRACT_TEST (FRACT_SAT_NEG(_Sat long long _Fract, llr));
 
   UNS_NEG(short _Fract, hr);
   UNS_NEG(_Fract, r);
   UNS_NEG(long _Fract, lr);
-  UNS_NEG(long long _Fract, llr);
+  LLFRACT_TEST (UNS_NEG(long long _Fract, llr));
   UNS_NEG(_Sat short _Fract, hr);
   UNS_NEG(_Sat _Fract, r);
   UNS_NEG(_Sat long _Fract, lr);
-  UNS_NEG(_Sat long long _Fract, llr);
+  LLFRACT_TEST (UNS_NEG(_Sat long long _Fract, llr));
   UNS_NEG(short _Accum, hk);
   UNS_NEG(_Accum, k);
   UNS_NEG(long _Accum, lk);
-  UNS_NEG(long long _Accum, llk);
+  LLACCUM_TEST (UNS_NEG(long long _Accum, llk));
   UNS_NEG(_Sat short _Accum, hk);
   UNS_NEG(_Sat _Accum, k);
   UNS_NEG(_Sat long _Accum, lk);
-  UNS_NEG(_Sat long long _Accum, llk);
+  LLACCUM_TEST (UNS_NEG(_Sat long long _Accum, llk));
 
   FRACT_SAT_UNS_NEG(_Sat unsigned short _Fract, uhr);
   FRACT_SAT_UNS_NEG(_Sat unsigned _Fract, ur);
   FRACT_SAT_UNS_NEG(_Sat unsigned long _Fract, ulr);
-  FRACT_SAT_UNS_NEG(_Sat unsigned long long _Fract, ullr);
+  ULLFRACT_TEST (FRACT_SAT_UNS_NEG(_Sat unsigned long long _Fract, ullr));
 
   LOGNEG(short _Fract, hr);
   LOGNEG(_Fract, r);
   LOGNEG(long _Fract, lr);
-  LOGNEG(long long _Fract, llr);
+  LLFRACT_TEST (LOGNEG(long long _Fract, llr));
   LOGNEG(unsigned short _Fract, uhr);
   LOGNEG(unsigned _Fract, ur);
   LOGNEG(unsigned long _Fract, ulr);
-  LOGNEG(unsigned long long _Fract, ullr);
+  ULLFRACT_TEST (LOGNEG(unsigned long long _Fract, ullr));
   LOGNEG(_Sat short _Fract, hr);
   LOGNEG(_Sat _Fract, r);
   LOGNEG(_Sat long _Fract, lr);
-  LOGNEG(_Sat long long _Fract, llr);
+  LLFRACT_TEST (LOGNEG(_Sat long long _Fract, llr));
   LOGNEG(_Sat unsigned short _Fract, uhr);
   LOGNEG(_Sat unsigned _Fract, ur);
   LOGNEG(_Sat unsigned long _Fract, ulr);
-  LOGNEG(_Sat unsigned long long _Fract, ullr);
+  ULLFRACT_TEST (LOGNEG(_Sat unsigned long long _Fract, ullr));
   LOGNEG(short _Accum, hk);
   LOGNEG(_Accum, k);
   LOGNEG(long _Accum, lk);
-  LOGNEG(long long _Accum, llk);
+  LLACCUM_TEST (LOGNEG(long long _Accum, llk));
   LOGNEG(unsigned short _Accum, uhk);
   LOGNEG(unsigned _Accum, uk);
   LOGNEG(unsigned long _Accum, ulk);
-  LOGNEG(unsigned long long _Accum, ullk);
+  ULLACCUM_TEST (LOGNEG(unsigned long long _Accum, ullk));
   LOGNEG(_Sat short _Accum, hk);
   LOGNEG(_Sat _Accum, k);
   LOGNEG(_Sat long _Accum, lk);
-  LOGNEG(_Sat long long _Accum, llk);
+  LLACCUM_TEST (LOGNEG(_Sat long long _Accum, llk));
   LOGNEG(_Sat unsigned short _Accum, uhk);
   LOGNEG(_Sat unsigned _Accum, uk);
   LOGNEG(_Sat unsigned long _Accum, ulk);
-  LOGNEG(_Sat unsigned long long _Accum, ullk);
+  ULLACCUM_TEST (LOGNEG(_Sat unsigned long long _Accum, ullk));
 
   return 0;
 }