(dg-xfail-if): Likewise.
* gcc.c-torture/compile/compile.exp: Use dg rather than c-torture
driver.
* gcc.c-torture/compile/
20000804-1.c: Convert to dg format.
* gcc.c-torture/compile/
20001205-1.c: Likewise.
* gcc.c-torture/compile/
20001226-1.c: Likewise.
* gcc.c-torture/compile/
20010518-2.c: Likewise.
* gcc.c-torture/compile/
20020312-1.c: Likewise.
* gcc.c-torture/compile/
20020604-1.c: Likewise.
* gcc.c-torture/compile/920501-12.c: Likewise.
* gcc.c-torture/compile/920501-4.c: Likewise.
* gcc.c-torture/compile/920520-1.c: Likewise.
* gcc.c-torture/compile/920521-1.c: Likewise.
* gcc.c-torture/compile/920625-1.c: Likewise.
* gcc.c-torture/compile/961203-1.c: Likewise.
* gcc.c-torture/compile/980506-1.c: Likewise.
* gcc.c-torture/compile/981006-1.c: Likewise.
* gcc.c-torture/compile/981022-1.c: Likewise.
* gcc.c-torture/compile/981223-1.c: Likewise.
* gcc.c-torture/compile/990617-1.c: Likewise.
* gcc.c-torture/compile/dll.c: Likewise.
* gcc.c-torture/compile/labels-3.c: Likewise.
* gcc.c-torture/compile/mipscop-1.c: Likewise.
* gcc.c-torture/compile/mipscop-2.c: Likewise.
* gcc.c-torture/compile/mipscop-3.c: Likewise.
* gcc.c-torture/compile/mipscop-4.c: Likewise.
* gcc.c-torture/compile/simd-5.c: Likewise.
* gcc.c-torture/compile/
20000804-1.x: Remove.
* gcc.c-torture/compile/
20001205-1.x: Likewise.
* gcc.c-torture/compile/
20001226-1.x: Likewise.
* gcc.c-torture/compile/
20010518-2.x: Likewise.
* gcc.c-torture/compile/
20020312-1.x: Likewise.
* gcc.c-torture/compile/
20020604-1.x: Likewise.
* gcc.c-torture/compile/920501-12.x: Likewise.
* gcc.c-torture/compile/920501-4.x: Likewise.
* gcc.c-torture/compile/920520-1.x: Likewise.
* gcc.c-torture/compile/920521-1.x: Likewise.
* gcc.c-torture/compile/920625-1.x: Likewise.
* gcc.c-torture/compile/961203-1.x: Likewise.
* gcc.c-torture/compile/980506-1.x: Likewise.
* gcc.c-torture/compile/981006-1.x: Likewise.
* gcc.c-torture/compile/981022-1.x: Likewise.
* gcc.c-torture/compile/981223-1.x: Likewise.
* gcc.c-torture/compile/990617-1.x: Likewise.
* gcc.c-torture/compile/mipscop-1.x: Likewise.
* gcc.c-torture/compile/mipscop-2.x: Likewise.
* gcc.c-torture/compile/mipscop-3.x: Likewise.
* gcc.c-torture/compile/mipscop-4.x: Likewise.
* gcc.c-torture/compile/simd-5.x: Likewise.
* gcc.c-torture/compile/
20021205-1.c: Remove bogus dg commands.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67881
138bc75d-0d04-0410-961f-
82ee72b054a4
+2003-06-12 Mark Mitchell <mark@codesourcery.com>
+
+ * lib/gcc-dg.exp (dg-require-dll): New function.
+ (dg-xfail-if): Likewise.
+ * gcc.c-torture/compile/compile.exp: Use dg rather than c-torture
+ driver.
+
+ * gcc.c-torture/compile/20000804-1.c: Convert to dg format.
+ * gcc.c-torture/compile/20001205-1.c: Likewise.
+ * gcc.c-torture/compile/20001226-1.c: Likewise.
+ * gcc.c-torture/compile/20010518-2.c: Likewise.
+ * gcc.c-torture/compile/20020312-1.c: Likewise.
+ * gcc.c-torture/compile/20020604-1.c: Likewise.
+ * gcc.c-torture/compile/920501-12.c: Likewise.
+ * gcc.c-torture/compile/920501-4.c: Likewise.
+ * gcc.c-torture/compile/920520-1.c: Likewise.
+ * gcc.c-torture/compile/920521-1.c: Likewise.
+ * gcc.c-torture/compile/920625-1.c: Likewise.
+ * gcc.c-torture/compile/961203-1.c: Likewise.
+ * gcc.c-torture/compile/980506-1.c: Likewise.
+ * gcc.c-torture/compile/981006-1.c: Likewise.
+ * gcc.c-torture/compile/981022-1.c: Likewise.
+ * gcc.c-torture/compile/981223-1.c: Likewise.
+ * gcc.c-torture/compile/990617-1.c: Likewise.
+ * gcc.c-torture/compile/dll.c: Likewise.
+ * gcc.c-torture/compile/labels-3.c: Likewise.
+ * gcc.c-torture/compile/mipscop-1.c: Likewise.
+ * gcc.c-torture/compile/mipscop-2.c: Likewise.
+ * gcc.c-torture/compile/mipscop-3.c: Likewise.
+ * gcc.c-torture/compile/mipscop-4.c: Likewise.
+ * gcc.c-torture/compile/simd-5.c: Likewise.
+ * gcc.c-torture/compile/20000804-1.x: Remove.
+ * gcc.c-torture/compile/20001205-1.x: Likewise.
+ * gcc.c-torture/compile/20001226-1.x: Likewise.
+ * gcc.c-torture/compile/20010518-2.x: Likewise.
+ * gcc.c-torture/compile/20020312-1.x: Likewise.
+ * gcc.c-torture/compile/20020604-1.x: Likewise.
+ * gcc.c-torture/compile/920501-12.x: Likewise.
+ * gcc.c-torture/compile/920501-4.x: Likewise.
+ * gcc.c-torture/compile/920520-1.x: Likewise.
+ * gcc.c-torture/compile/920521-1.x: Likewise.
+ * gcc.c-torture/compile/920625-1.x: Likewise.
+ * gcc.c-torture/compile/961203-1.x: Likewise.
+ * gcc.c-torture/compile/980506-1.x: Likewise.
+ * gcc.c-torture/compile/981006-1.x: Likewise.
+ * gcc.c-torture/compile/981022-1.x: Likewise.
+ * gcc.c-torture/compile/981223-1.x: Likewise.
+ * gcc.c-torture/compile/990617-1.x: Likewise.
+ * gcc.c-torture/compile/mipscop-1.x: Likewise.
+ * gcc.c-torture/compile/mipscop-2.x: Likewise.
+ * gcc.c-torture/compile/mipscop-3.x: Likewise.
+ * gcc.c-torture/compile/mipscop-4.x: Likewise.
+ * gcc.c-torture/compile/simd-5.x: Likewise.
+
+ * gcc.c-torture/compile/20021205-1.c: Remove bogus dg commands.
+
2003-06-13 Eric Botcazou <ebotcazou@libertysurf.fr>
* gcc.c-torture/execute/20030611-1.c: New test.
-/* Copyright (C) 2000 Free Software Foundation */
+/* This does not work on m68hc11 or h8300 due to the use of an asm
+ statement to force a 'long long' (64-bits) to go in a register. */
+/* { dg-do assemble { xfail m6811-*-* m6812-*-* h8300-*-* } } */
+
+/* Copyright (C) 2000, 2003 Free Software Foundation */
__complex__ long long f ()
{
int i[99];
+++ /dev/null
-# This does not work on m68hc11 or h8300 due to the use of an asm statement
-# to force a 'long long' (64-bits) to go in a register.
-
-if { [istarget "m6811-*-*"]
- || [istarget "m6812-*-*"]
- || [istarget "h8300-*-*"] } {
- return 1
-}
-
-return 0
+/* This does not work on m68hc11 due to the asm statement which forces
+ two 'long' (32-bits) variables to go in registers. */
+/* { dg-do assemble { xfail m6811-*-* m6812-*-* } } */
+
static inline unsigned long rdfpcr(void)
{
unsigned long tmp, ret;
+++ /dev/null
-# This does not work on m68hc11 due to the asm statement which
-# forces two 'long' (32-bits) variables to go in registers.
-
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"] } {
- return 1
-}
-return 0
+/* This does not assemble on m68hc11 because the function is larger
+ than 64K. */
+/* { dg-do assemble { xfail m6811-*-* m6812-*-* } } */
+/* { dg-xfail-if "jump beyond 128K not supported" "xtensa-*-*" "-O0" "" } */
+
/* This testcase exposed two branch shortening bugs on powerpc. */
#define C(a,b) \
+++ /dev/null
-# This does not assemble on m68hc11 because the function is larger
-# than 64K.
-
-global target_triplet
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"] } {
- return 1
-}
-
-# It doesn't work on Xtensa with -O0 because the function is larger
-# than the range of a jump instruction (+- 128K) and the assembler
-# does not yet relax jumps to indirect jumps.
-
-set torture_eval_before_compile {
- set compiler_conditional_xfail_data {
- "jump beyond 128K not supported" \
- "xtensa-*-*" \
- { "-O0" } \
- { "" }
- }
-}
-
-return 0
+/* { dg-do compile } */
+
+/* This test fails on HC11/HC12 when it is compiled without -mshort because
+ the array is too large (INT_MAX/2 > 64K). Force to use 16-bit ints
+ for it. */
+/* { dg-options "-w -mshort" { target m6811-*-* m6812-*-* } } */
+
/* Large static storage. */
#include <limits.h>
+++ /dev/null
-# This test fails on HC11/HC12 when it is compiled without -mshort because
-# the array is too large (INT_MAX/2 > 64K). Force to use 16-bit ints for it.
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"] } {
- set options "-S -mshort"
-} else {
- set options "-S"
-}
-return 0
+/* This does not compile on HC11/HC12 due to the asm which requires
+ two 32-bit registers. */
+/* { dg-do assemble { xfail m6811-*-* m6812-*-* } } */
+
/* PR optimization/5892 */
typedef struct { unsigned long a; unsigned int b, c; } A;
typedef struct { unsigned long a; A *b; int c; } B;
+++ /dev/null
-# This does not compile on HC11/HC12 due to the asm which requires
-# two 32-bit registers.
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"] } {
- return 1
-}
-return 0
+/* The array is too big. */
+/* { dg-do assemble { xfail h8300-*-* m6811-*-* m6812-*-* } } */
+
/* PR c/6957
This testcase ICEd at -O2 on IA-32, because
(insn 141 139 142 (set (subreg:SF (reg:QI 72) 0)
+++ /dev/null
-# The array is too big.
-if { [istarget "h8300-*-*"] } {
- return 1;
-}
-
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"] } {
- return 1;
-}
-
-return 0
-/* dg-do compile */
-/* dg-options "-O3" */
typedef struct x x;
extern void *baz(char *);
struct x { char * (*bar) (int); };
+/* This test fails on HC11/HC12 when it is compiled without -mshort because
+ the stack arrays are too large. Force to use 16-bit ints for it. */
+/* { dg-do assemble { xfail m6811-*-* m6812-*-* } } */
+
x(x){ return 3 + x;}
a(x){int y[994]; return 3 + x;}
b(x){int y[999]; return 2*(x + 3);}
+++ /dev/null
-# This test fails on HC11/HC12 when it is compiled without -mshort because
-# the stack arrays are too large. Force to use 16-bit ints for it.
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"] } {
- set options "-mshort"
-}
-return 0
+/* This test fails on HC11/HC12 when it is compiled without -mshort because
+ the 'r0' array is too large. Force to use 16-bit ints for it. */
+/* { dg-do assemble { xfail m6811-*-* m6812-*-* } } */
+
foo ()
{
int r0[8186 ];
+++ /dev/null
-# This test fails on HC11/HC12 when it is compiled without -mshort because
-# the 'r0' array is too large. Force to use 16-bit ints for it.
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"] } {
- set options "-mshort"
-}
-return 0
+/* { dg-do compile { xfail m6811-*-* m6812-*-* } } */
+
f(){asm("%0"::"r"(1.5F));}g(){asm("%0"::"r"(1.5));}
+++ /dev/null
-set options "-S"
-
-# This does not work on m68hc11 due to the asm which forces a
-# float or a double to go in a register.
-
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"] } {
- return 1
-}
-return 0
+/* { dg-do compile } */
+
f(){asm("f":::"cc");}g(x,y){asm("g"::"%r"(x), "r"(y));}
+++ /dev/null
-set options "-S"
-return 0
+/* The problem on IA-64 is that if-conversion creates a sequence
+
+ (p17) cmp.geu p6, p7 = r48, r15
+ (p16) cmp.gtu p6, p7 = r48, r15
+
+ where p16 and p17 are complemenary, but the assembler DV validation
+ code doesn't recognize that p6 and p7 are complimentary, and so
+ we end up warning for a later use
+
+ (p6) addl r14 = 1, r0
+ (p7) mov r14 = r0
+
+ that appears to be a WAW violation. */
+/* { dg-xfail-if "missing .pred.rel.mutex directive" "ia64-*-*" { "-O1" "-O2" "-O3" "-Os" } { "" } } */
+
typedef unsigned long int unsigned_word;
typedef signed long int signed_word;
typedef unsigned_word word;
+++ /dev/null
-# The problem on IA-64 is that if-conversion creates a sequence
-#
-# (p17) cmp.geu p6, p7 = r48, r15
-# (p16) cmp.gtu p6, p7 = r48, r15
-#
-# where p16 and p17 are complemenary, but the assembler DV validation
-# code doesn't recognize that p6 and p7 are complimentary, and so
-# we end up warning for a later use
-#
-# (p6) addl r14 = 1, r0
-# (p7) mov r14 = r0
-#
-# that appears to be a WAW violation.
-
-set torture_eval_before_compile {
-
- set compiler_conditional_xfail_data {
- "missing .pred.rel.mutex directive" \
- "ia64-*-*" \
- { "-O1" "-O2" "-O3" "-Os" } \
- { "" }
- }
-}
-
-return 0
+/* The structure is too large for the xstormy16 - won't fit in 16
+ bits. */
+/* { dg-do assemble { xfail xstormy16-*-* h8300-*-* m6811-*-* m6812-*-* } } */
+
struct s {
char a[0x32100000];
int x:30, y:30;
+++ /dev/null
-# The structure is too large for the xstormy16 - won't fit in 16 bits.
-
-if { [istarget "xstormy16-*-*"] } {
- return 1;
-}
-
-if { [istarget "h8300-*-*"] } {
- return 1
-}
-
-# Array 'a' in this test is too large to fit in 64K.
-
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"]} {
- return 1
-}
-
-return 0
+/* The arrays are too large for the xstormy16 - won't fit in 16 bits. */
+/* { dg-do assemble { xfail xstormy16-*-* h8300-*-* m6811-*-* m6812-*-* } } */
+
unsigned char TIFFFax2DMode[20][256];
unsigned char TIFFFax2DNextState[20][256];
unsigned char TIFFFaxUncompAction[20][256];
+++ /dev/null
-# The arrays are too large for the xstormy16 - won't fit in 16 bits.
-if { [istarget "xstormy16-*-*"] } {
- return 1;
-}
-
-if { [istarget "h8300-*-*"] } {
- return 1;
-}
-
-if { [istarget "m6811-*-*"] || [istarget "m6812-*-*"] } {
- return 1
-}
-return 0
used uninitialized.
This is broken in egcs 1998/10/06 for mips in pic mode. */
-/* { dg-do compile } */
+/* { dg-do assemble } */
+/* For MIPS at least, pic is needed to trigger the problem. */
+/* { dg-options "-w -Wuninitialized -Werror -fpic" } */
+/* { dg-options "-w -Wuninitialized -Werror" { target rs6000-*-aix* powerpc*-*-aix* arm*-*-* xscale*-*-* strongarm*-*-* fr30-*-* sh-*-hms sh-*-coff h8300*-*-* mn10200*-*-* cris-*-elf* cris-*-aout* mmix-*-* } } */
int foo (int a, int b)
{
+++ /dev/null
-# For MIPS at least, pic is needed to trigger the problem.
-if { [istarget rs6000-*-aix*]
- || [istarget powerpc*-*-aix*]
- || [istarget arm*-*-*]
- || [istarget xscale-*-*]
- || [istarget strongarm*-*-*]
- || [istarget fr30-*-*]
- || [istarget sh-*-hms]
- || [istarget sh-*-coff]
- || [istarget h8300*-*-*]
- || [istarget mn10200*-*-*]
- || [istarget cris-*-elf*]
- || [istarget cris-*-aout*]
- || [istarget mmix-*-*]
-} {
- set options "-Wuninitialized -Werror"
-} else {
- set options "-Wuninitialized -Werror -fpic"
-}
-return 0
int main ()
{
- (x ?: y) = 0;
+ (x ?: y) = 0; /* { dg-bogus "lvalue" "" { xfail *-*-* } } */
return 0;
}
+++ /dev/null
-set torture_compile_xfail "*-*-*"
-return 0
+/* The problem on IA-64 is that the assembler emits
+
+ Warning: Additional NOP may be necessary to workaround Itanium
+ processor A/B step errata
+
+ This can be fixed by adding "-mb-step" to the command line, which
+ does in fact add the extra nop. */
+/* { dg-options "-w -mb-step" { target ia64-*-* } } */
+
__complex__ float
func (__complex__ float x)
{
+++ /dev/null
-# The problem on IA-64 is that the assembler emits
-#
-# Warning: Additional NOP may be necessary to workaround Itanium
-# processor A/B step errata
-#
-# This can be fixed by adding "-mb-step" to the command line, which
-# does in fact add the extra nop, if someone can tell me how to do
-# that for a c-torture compile test.
-
-set torture_eval_before_compile {
-
- set compiler_conditional_xfail_data {
- "need -mb-step" \
- "ia64-*-*" \
- { "-O2" "-O3" "-Os" } \
- { "" }
- }
-}
-
-return 0
+/* 0x70000000 is too large a constant to become a pointer on
+ xstormy16. */
+/* { dg-do assemble { xfail xstormy16-*-* } } */
int main()
{
+++ /dev/null
-# 0x70000000 is too large a constant to become a pointer on xstormy16.
-
-if { [istarget "xstormy16-*-*"] } {
- return 1;
-}
-
-return 0
# Expect driver script for GCC Regression Tests
-# Copyright (C) 1993, 1995, 1997 Free Software Foundation
+# Copyright (C) 1993, 1995, 1997, 2003 Free Software Foundation
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# These tests come from Torbjorn Granlund's (tege@cygnus.com)
# C torture test suite, and other contributors.
-if $tracelevel then {
- strace $tracelevel
-}
+# Load support procs.
+load_lib gcc-dg.exp
-# load support procs
-load_lib c-torture.exp
+# Initialize `dg'.
+dg-init
-foreach testcase [glob -nocomplain $srcdir/$subdir/*.c] {
- # If we're only testing specific files and this isn't one of them, skip it.
- if ![runtest_file_p $runtests $testcase] then {
- continue
- }
+# Main loop.
+set saved-dg-do-what-default ${dg-do-what-default}
+set dg-do-what-default "assemble"
+gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-w"
+set dg-do-what-default ${saved-dg-do-what-default}
- c-torture $testcase
-}
+# All done.
+dg-finish
+/* { dg-require-dll "" } */
+
__declspec (dllimport) int foo;
extern int (* import) (void) __attribute__((dllimport));
int func2 (void) __attribute__((dllexport));
+/* This test does not compile on mips-irix6 using the native assembler,
+ though it does work with gas. See PR6200. Since we cannot (???)
+ distinguish which assembler is being used, always pass -S for
+ irix. */
+/* { dg-options "-w -S" { target mips*-*-irix* } } */
+
/* Verify that we can narrow the storage associated with label diffs. */
int foo (int a)
+++ /dev/null
-# This test does not compile on mips-irix6 using the native assembler,
-# though it does work with gas. See PR6200. Since we cannot (???)
-# distinguish which assembler is being used, always pass -S for irix.
-
-if { [istarget "mips*-*-irix*"] } { set options "-S" }
-
-return 0
+/* { dg-do assemble {target *mips*-*-* } } */
+
register unsigned int cp0count asm ("$c0r1");
int
+++ /dev/null
-global target_triplet
-
-if { ![istarget "*mips*"] } {
- return 1
-} else {
- set torture_compile_xfail "$target_triplet"
-}
-
-return 0
-
+/* { dg-do assemble {target *mips*-*-* } } */
+
register unsigned int c3r1 asm ("$c3r1");
extern unsigned int b, c;
+++ /dev/null
-global target_triplet
-
-if { ![istarget "*mips*"] } {
- return 1
-} else {
- set torture_compile_xfail "$target_triplet"
-}
-
-return 0
-
+/* { dg-do assemble {target *mips*-*-* } } */
+
register unsigned int c3r1 asm ("$c3r1"), c3r2 asm ("$c3r2");
extern unsigned int b, c;
+++ /dev/null
-global target_triplet
-
-if { ![istarget "*mips*"] } {
- return 1
-} else {
- set torture_compile_xfail "$target_triplet"
-}
-
-return 0
-
+/* { dg-do assemble {target *mips*-*-* } } */
+
register unsigned long c3r1 asm ("$c3r1"), c3r2 asm ("$c3r2");
extern unsigned long b, c;
+++ /dev/null
-global target_triplet
-
-if { ![istarget "*mips*"] } {
- return 1
-} else {
- set torture_compile_xfail "$target_triplet"
-}
-
-return 0
-
+/* h8300 does not have long long */
+/* PowerPC-64 doesn't handle this; see PR target/9680 */
+/* { dg-do assemble { xfail h8300-*-* powerpc64-*-* } } */
+/* On SPARC64/SPARC-V9 it fails, except with -m32. */
+/* { dg-xfail-if "PR target/9200" { "sparc64-*-*" "sparcv9-*-*" } { "*" } { "-m32" } } */
+/* On regular SPARC it doesn't fail, except with -m64. */
+/* { dg-xfail-if "PR target/9200" { "sparc*-*-*" } { "-m64" } { "" } } */
+
#define vector64 __attribute__((vector_size(8)))
main(){
+++ /dev/null
-# h8300 does not have long long
-if { [istarget "h8300-*-*"] } {
- return 1;
-}
-
-if { [istarget "sparc64-*-*"] || [istarget "sparcv9-*-*"] } {
- # On SPARC64/SPARC-V9 it fails, except with -m32.
- set torture_eval_before_compile {
- global compiler_conditional_xfail_data
- set compiler_conditional_xfail_data {
- "PR target/9200" \
- { "*-*-*" } \
- { "*" } \
- { "-m32" }
- }
- }
-} elseif { [istarget "sparc-*-*"] } {
- # On regular SPARC it doesn't fail, except with -m64.
- set torture_eval_before_compile {
- global compiler_conditional_xfail_data
- set compiler_conditional_xfail_data {
- "PR target/9200" \
- { "*-*-*" } \
- { "-m64" } \
- { "" }
- }
- }
-}
-
-return 0
}
}
+# If this target does not support DLL attributes skip this test.
+
+proc dg-require-dll { args } {
+ global target_triplet
+ # As a special case, the mcore-*-elf supports dllimport/dllexport.
+ if { [string match "mcore-*-elf" $target_triplet] } {
+ return
+ }
+ # PE/COFF targets support dllimport/dllexport.
+ if { [gcc_target_object_format] == "pe" } {
+ return
+ }
+
+ upvar dg-do-what dg-do-what
+ set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
+}
+
+# Like check_conditional_xfail, but callable from a dg test.
+
+proc dg-xfail-if { args } {
+ eval check_conditional_xfail $args
+}
+
+
# We need to make sure that additional_files and additional_sources
# are both cleared out after every test. It is not enough to clear
# them out *before* the next test run because gcc-target-compile gets