gcc/testsuite/ * lib/target-supports.exp (check_effective_target_untyped_assembly): New function. * gcc.c-torture/compile/20091215-1.c: Require untyped_assembly. * gcc.c-torture/compile/920917-1.c: Likewise. * gcc.c-torture/compile/930120-1.c: Likewise. * gcc.c-torture/compile/930411-1.c: Likewise. * gcc.c-torture/compile/930529-1.c: Likewise. * gcc.c-torture/compile/930623-1.c: Likewise. * gcc.c-torture/compile/950329-1.c: Likewise. * gcc.c-torture/compile/calls.c: Likewise. * gcc.c-torture/compile/pr37258.c: Likewise. * gcc.c-torture/compile/pr37327.c: Likewise. * gcc.c-torture/compile/pr38360.c: Likewise. * gcc.c-torture/compile/pr43635.c: Likewise. * gcc.c-torture/compile/pr47428.c: Likewise. * gcc.c-torture/compile/pr47967.c: Likewise. * gcc.c-torture/compile/pr49145.c: Likewise. * gcc.c-torture/compile/pr51694.c: Likewise. * gcc.c-torture/compile/pr53411.c: Likewise. * gcc.c-torture/execute/20001101.c: Likewise. * gcc.c-torture/execute/20051012-1.c: Likewise. * gcc.c-torture/execute/920501-1.c: Likewise. * gcc.c-torture/execute/921202-1.c: Likewise. * gcc.c-torture/execute/921208-2.c: Likewise. * gcc.c-torture/execute/call-trap-1.c: Likewise. * gcc.c-torture/compile/20010525-1.c: Likewise. * gcc.c-torture/compile/20021015-2.c: Likewise. * gcc.c-torture/compile/20031023-1.c: Likewise. * gcc.c-torture/compile/20031023-2.c: Likewise. * gcc.c-torture/compile/pr49206.c: Likewise. * gcc.c-torture/execute/pr47237.c: Likewise. * gcc.dg/torture/stackalign/builtin-apply-1.c: Likewise. * gcc.dg/torture/stackalign/builtin-apply-2.c: Likewise. * gcc.dg/torture/stackalign/builtin-apply-3.c: Likewise. * gcc.dg/torture/stackalign/builtin-apply-4.c: Likewise. * gcc.dg/torture/stackalign/builtin-return-1.c: Likewise. * gcc.dg/builtin-apply1.c: Likewise. * gcc.dg/builtin-apply2.c: Likewise. * gcc.dg/builtin-apply3.c: Likewise. * gcc.dg/builtin-apply4.c: Likewise. * gcc.dg/pr38338.c: Likewise. * gcc.dg/torture/pr41993.c: Likewise. * gcc.c-torture/compile/386.c: Likewise. * gcc.c-torture/compile/cmpsi386.c: Likewise. * gcc.c-torture/compile/consec.c: Likewise. * gcc.c-torture/compile/ex.c: Likewise. * gcc.c-torture/compile/pass.c: Likewise. * gcc.c-torture/compile/scal.c: Likewise. * gcc.c-torture/compile/uuarg.c: Likewise. * gcc.c-torture/compile/conv_tst.c: Likewise. ------------------------------------------------------------------------ Index: gcc/testsuite/lib/target-supports.exp =================================================================== --- gcc/testsuite/lib/target-supports.exp.orig +++ gcc/testsuite/lib/target-supports.exp @@ -604,6 +606,17 @@ proc add_options_for_tls { flags } { return $flags } +# Return 1 if the assembler does not verify function types against +# calls, 0 otherwise. Such verification will typically show up problems +# with K&R C function declarations. + +proc check_effective_target_untyped_assembly {} { + if { [istarget nvptx-*-*] } { + return 0 + } + return 1 +} + # Return 1 if alloca is supported, 0 otherwise. proc check_effective_target_alloca {} { Index: gcc/testsuite/gcc.c-torture/compile/20091215-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/20091215-1.c.orig +++ gcc/testsuite/gcc.c-torture/compile/20091215-1.c @@ -1,3 +1,5 @@ +/* { dg-require-effective-target untyped_assembly } */ + void bar (); void Index: gcc/testsuite/gcc.c-torture/compile/920917-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/920917-1.c.orig +++ gcc/testsuite/gcc.c-torture/compile/920917-1.c @@ -1,2 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ + inline f(x){switch(x){case 6:case 4:case 3:case 1:;}return x;} g(){f(sizeof("xxxxxx"));} Index: gcc/testsuite/gcc.c-torture/compile/930120-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/930120-1.c.orig +++ gcc/testsuite/gcc.c-torture/compile/930120-1.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ union { short I[2]; long int L; Index: gcc/testsuite/gcc.c-torture/compile/930411-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/930411-1.c.orig +++ gcc/testsuite/gcc.c-torture/compile/930411-1.c @@ -1,3 +1,5 @@ +/* { dg-require-effective-target untyped_assembly } */ + int heap; g(){} Index: gcc/testsuite/gcc.c-torture/compile/930529-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/930529-1.c.orig +++ gcc/testsuite/gcc.c-torture/compile/930529-1.c @@ -1,3 +1,5 @@ +/* { dg-require-effective-target untyped_assembly } */ + struct r { int d1, d2; Index: gcc/testsuite/gcc.c-torture/compile/930623-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/930623-1.c.orig +++ gcc/testsuite/gcc.c-torture/compile/930623-1.c @@ -1,3 +1,5 @@ +/* { dg-require-effective-target untyped_assembly } */ + g (a, b) {} f (xx) Index: gcc/testsuite/gcc.c-torture/compile/950329-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/950329-1.c.orig +++ gcc/testsuite/gcc.c-torture/compile/950329-1.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ f () { int i; Index: gcc/testsuite/gcc.c-torture/compile/calls.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/calls.c.orig +++ gcc/testsuite/gcc.c-torture/compile/calls.c @@ -1,4 +1,6 @@ /* { dg-require-effective-target ptr32plus } */ +/* { dg-require-effective-target untyped_assembly } */ + typedef void *(*T)(void); f1 () { Index: gcc/testsuite/gcc.c-torture/compile/pr37258.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr37258.c.orig +++ gcc/testsuite/gcc.c-torture/compile/pr37258.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; Index: gcc/testsuite/gcc.c-torture/compile/pr37327.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr37327.c.orig +++ gcc/testsuite/gcc.c-torture/compile/pr37327.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; Index: gcc/testsuite/gcc.c-torture/compile/pr38360.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr38360.c.orig +++ gcc/testsuite/gcc.c-torture/compile/pr38360.c @@ -1,4 +1,5 @@ /* PR middle-end/38360 */ +/* { dg-require-effective-target untyped_assembly } */ int main () Index: gcc/testsuite/gcc.c-torture/compile/pr43635.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr43635.c.orig +++ gcc/testsuite/gcc.c-torture/compile/pr43635.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ extern void d (void); void (*foo (void)) (float) Index: gcc/testsuite/gcc.c-torture/compile/pr47428.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr47428.c.orig +++ gcc/testsuite/gcc.c-torture/compile/pr47428.c @@ -1,4 +1,5 @@ /* PR tree-optimization/47428 */ +/* { dg-require-effective-target untyped_assembly } */ struct S { Index: gcc/testsuite/gcc.c-torture/compile/pr47967.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr47967.c.orig +++ gcc/testsuite/gcc.c-torture/compile/pr47967.c @@ -1,4 +1,5 @@ /* PR tree-optimization/47967 */ +/* { dg-require-effective-target untyped_assembly } */ extern void abort (void); static void bar (); Index: gcc/testsuite/gcc.c-torture/compile/pr49145.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr49145.c.orig +++ gcc/testsuite/gcc.c-torture/compile/pr49145.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ static int func1 (int a, int b) { Index: gcc/testsuite/gcc.c-torture/compile/pr51694.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr51694.c.orig +++ gcc/testsuite/gcc.c-torture/compile/pr51694.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ void foo (x, fn) void (*fn) (); Index: gcc/testsuite/gcc.c-torture/compile/pr53411.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr53411.c.orig +++ gcc/testsuite/gcc.c-torture/compile/pr53411.c @@ -1,4 +1,5 @@ /* PR middle-end/53411 */ +/* { dg-require-effective-target untyped_assembly } */ int a, b, c, d, e, f, g, h; void fn1 (void); Index: gcc/testsuite/gcc.c-torture/execute/20001101.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/20001101.c.orig +++ gcc/testsuite/gcc.c-torture/execute/20001101.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ extern void abort(void); typedef struct Index: gcc/testsuite/gcc.c-torture/execute/20051012-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/20051012-1.c.orig +++ gcc/testsuite/gcc.c-torture/execute/20051012-1.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ extern void abort (void); struct type Index: gcc/testsuite/gcc.c-torture/execute/920501-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/920501-1.c.orig +++ gcc/testsuite/gcc.c-torture/execute/920501-1.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ int s[2]; x(){if(!s[0]){s[1+s[1]]=s[1];return 1;}} main(){s[0]=s[1]=0;if(x(0)!=1)abort();exit(0);} Index: gcc/testsuite/gcc.c-torture/execute/921202-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/921202-1.c.orig +++ gcc/testsuite/gcc.c-torture/execute/921202-1.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ #ifndef STACK_SIZE #define VLEN 2055 #else Index: gcc/testsuite/gcc.c-torture/execute/921208-2.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/921208-2.c.orig +++ gcc/testsuite/gcc.c-torture/execute/921208-2.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ #define STACK_REQUIREMENT (100000 * 4 + 1024) #if defined (STACK_SIZE) && STACK_SIZE < STACK_REQUIREMENT main () { exit (0); } Index: gcc/testsuite/gcc.c-torture/execute/call-trap-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/call-trap-1.c.orig +++ gcc/testsuite/gcc.c-torture/execute/call-trap-1.c @@ -2,6 +2,7 @@ type does not appear until after the function designator and arguments have been evaluated. PR 38483. */ /* Origin: Joseph Myers */ +/* { dg-require-effective-target untyped_assembly } */ extern void exit (int); extern void abort (void); Index: gcc/testsuite/gcc.c-torture/compile/20010525-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/20010525-1.c.orig +++ gcc/testsuite/gcc.c-torture/compile/20010525-1.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ static int kind_varread(char *str) { if (0 == memcmp("%_#", str, 3)) return 2; Index: gcc/testsuite/gcc.c-torture/compile/20021015-2.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/20021015-2.c.orig +++ gcc/testsuite/gcc.c-torture/compile/20021015-2.c @@ -1,4 +1,5 @@ /* PR target/8232. */ +/* { dg-require-effective-target untyped_assembly } */ int f (char *p, char *q, int i) { Index: gcc/testsuite/gcc.c-torture/compile/20031023-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/20031023-1.c.orig +++ gcc/testsuite/gcc.c-torture/compile/20031023-1.c @@ -1,3 +1,5 @@ +/* Declaration of the frame size doesn't work on ptx. */ +/* { dg-require-effective-target untyped_assembly } */ #ifndef ASIZE # define ASIZE 0x10000000000UL #endif Index: gcc/testsuite/gcc.c-torture/compile/20031023-2.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/20031023-2.c.orig +++ gcc/testsuite/gcc.c-torture/compile/20031023-2.c @@ -1,2 +1,4 @@ +/* Declaration of the frame size doesn't work on ptx. */ +/* { dg-require-effective-target untyped_assembly } */ #define ASIZE 0x1000000000UL #include "20031023-1.c" Index: gcc/testsuite/gcc.c-torture/compile/20031023-3.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/20031023-3.c.orig 7+++ gcc/testsuite/gcc.c-torture/compile/20031023-3.c @@ -1,2 +1,4 @@ +/* Declaration of the frame size doesn't work on ptx. */ +/* { dg-require-effective-target untyped_assembly } */ #define ASIZE 0x100000000UL #include "20031023-1.c" Index: gcc/testsuite/gcc.c-torture/compile/pr49206.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr49206.c.orig +++ gcc/testsuite/gcc.c-torture/compile/pr49206.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ struct S1 { short f0; Index: gcc/testsuite/gcc.c-torture/execute/pr47237.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr47237.c.orig +++ gcc/testsuite/gcc.c-torture/execute/pr47237.c @@ -1,4 +1,5 @@ /* { dg-xfail-if "can cause stack underflow" { nios2-*-* } "*" "" } */ +/* { dg-require-effective-target untyped_assembly } */ #define INTEGER_ARG 5 extern void abort(void); Index: gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-1.c =================================================================== --- gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-1.c.orig +++ gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-1.c @@ -1,5 +1,6 @@ /* PR 11184 */ /* Origin: Dara Hazeghi */ +/* { dg-require-effective-target untyped_assembly } */ void * objc_msg_sendv (char * arg_frame, void (*foo)()) Index: gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c =================================================================== --- gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c.orig +++ gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c @@ -11,6 +11,7 @@ do. */ /* { dg-skip-if "Variadic funcs use different argument passing from normal funcs" { arm_hf_eabi || { avr-*-* } } "*" "" } */ /* { dg-skip-if "Variadic funcs have all args on stack. Normal funcs have args in registers." { nds32*-*-* } "*" "" } */ +/* { dg-require-effective-target untyped_assembly } */ #define INTEGER_ARG 5 Index: gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-3.c =================================================================== --- gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-3.c.orig +++ gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-3.c @@ -5,6 +5,7 @@ to the right location by __builtin_apply after the direct call. */ /* { dg-do run } */ +/* { dg-require-effective-target untyped_assembly } */ #define INTEGER_ARG 5 Index: gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-4.c =================================================================== --- gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-4.c.orig +++ gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-4.c @@ -1,6 +1,7 @@ /* PR tree-optimization/20076 */ /* { dg-do run } */ /* { dg-additional-options "-fgnu89-inline" } */ +/* { dg-require-effective-target untyped_assembly } */ extern void abort (void); Index: gcc/testsuite/gcc.dg/builtin-apply1.c =================================================================== --- gcc/testsuite/gcc.dg/builtin-apply1.c.orig +++ gcc/testsuite/gcc.dg/builtin-apply1.c @@ -1,5 +1,6 @@ /* PR 11184 */ /* Origin: Dara Hazeghi */ +/* { dg-require-effective-target untyped_assembly } */ void * objc_msg_sendv (char * arg_frame, void (*foo)()) Index: gcc/testsuite/gcc.dg/builtin-apply2.c =================================================================== --- gcc/testsuite/gcc.dg/builtin-apply2.c.orig +++ gcc/testsuite/gcc.dg/builtin-apply2.c @@ -1,4 +1,5 @@ /* { dg-do run } */ +/* { dg-require-effective-target untyped_assembly } */ /* { dg-skip-if "Variadic funcs have all args on stack. Normal funcs have args in registers." { "aarch64*-*-* avr-*-* nds32*-*-*" } { "*" } { "" } } */ /* { dg-skip-if "Variadic funcs use Base AAPCS. Normal funcs use VFP variant." { arm*-*-* && arm_hf_eabi } { "*" } { "" } } */ Index: gcc/testsuite/gcc.dg/builtin-apply3.c =================================================================== --- gcc/testsuite/gcc.dg/builtin-apply3.c.orig +++ gcc/testsuite/gcc.dg/builtin-apply3.c @@ -5,6 +5,7 @@ to the right location by __builtin_apply after the direct call. */ /* { dg-do run } */ +/* { dg-require-effective-target untyped_assembly } */ #define INTEGER_ARG 5 Index: gcc/testsuite/gcc.dg/builtin-apply4.c =================================================================== --- gcc/testsuite/gcc.dg/builtin-apply4.c.orig +++ gcc/testsuite/gcc.dg/builtin-apply4.c @@ -2,6 +2,7 @@ /* { dg-options "-O2 -Wmissing-noreturn -fgnu89-inline" } */ /* { dg-options "-O2 -mno-mmx" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */ /* { dg-do run } */ +/* { dg-require-effective-target untyped_assembly } */ extern void abort (void); Index: gcc/testsuite/gcc.dg/pr38338.c =================================================================== --- gcc/testsuite/gcc.dg/pr38338.c.orig +++ gcc/testsuite/gcc.dg/pr38338.c @@ -1,6 +1,7 @@ /* PR middle-end/38338 */ /* { dg-options "-O0" } */ /* { dg-options "-O0 -fPIC" { target fpic } } */ +/* { dg-require-effective-target untyped_assembly } */ typedef void (*fnp) (void); Index: gcc/testsuite/gcc.dg/torture/stackalign/builtin-return-1.c =================================================================== --- gcc/testsuite/gcc.dg/torture/stackalign/builtin-return-1.c.orig +++ gcc/testsuite/gcc.dg/torture/stackalign/builtin-return-1.c @@ -1,6 +1,7 @@ /* PR middle-end/11151 */ /* Originator: Andrew Church */ /* { dg-do run } */ +/* { dg-require-effective-target untyped_assembly } */ /* This used to fail on SPARC because the (undefined) return value of 'bar' was overwriting that of 'foo'. */ Index: gcc/testsuite/gcc.dg/torture/pr41993.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr41993.c.orig +++ gcc/testsuite/gcc.dg/torture/pr41993.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mavx -mvzeroupper" { target { i?86-*-* x86_64-*-* } } } */ +/* { dg-require-effective-target untyped_assembly } */ short retframe_short (void *rframe) { Index: gcc/testsuite/gcc.c-torture/compile/386.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/386.c.orig +++ gcc/testsuite/gcc.c-torture/compile/386.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ foo (a, p) int *p; { Index: gcc/testsuite/gcc.c-torture/compile/cmpsi386.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/cmpsi386.c.orig +++ gcc/testsuite/gcc.c-torture/compile/cmpsi386.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ foo (a, p) register int a; int *p; Index: gcc/testsuite/gcc.c-torture/compile/consec.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/consec.c.orig +++ gcc/testsuite/gcc.c-torture/compile/consec.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ int glob; conseq (a, b, c, d) Index: gcc/testsuite/gcc.c-torture/compile/ex.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/ex.c.orig +++ gcc/testsuite/gcc.c-torture/compile/ex.c @@ -1,3 +1,5 @@ +/* { dg-require-effective-target untyped_assembly } */ + foo (a, b) { if ((a & (1 << b)) == 0) Index: gcc/testsuite/gcc.c-torture/compile/pass.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pass.c.orig +++ gcc/testsuite/gcc.c-torture/compile/pass.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ int foo (a, b, c) { Index: gcc/testsuite/gcc.c-torture/compile/scal.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/scal.c.orig +++ gcc/testsuite/gcc.c-torture/compile/scal.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ int g1, g2; void Index: gcc/testsuite/gcc.c-torture/compile/uuarg.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/uuarg.c.orig +++ gcc/testsuite/gcc.c-torture/compile/uuarg.c @@ -1,3 +1,4 @@ +/* { dg-require-effective-target untyped_assembly } */ foo (a, b, c, d, e, f, g, h, i) { return foo () + i; Index: gcc/testsuite/gcc.c-torture/compile/conv_tst.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/conv_tst.c.orig +++ gcc/testsuite/gcc.c-torture/compile/conv_tst.c @@ -1,3 +1,5 @@ +/* { dg-require-effective-target untyped_assembly } */ + #define ID_1 2400000000.0 #define ID_2 1.7 #define ID_3 -1.7