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.
------------------------------------------------------------------------
===================================================================
@@ -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 {} {
===================================================================
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target untyped_assembly } */
+
void bar ();
void
===================================================================
@@ -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"));}
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
union {
short I[2];
long int L;
===================================================================
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target untyped_assembly } */
+
int heap;
g(){}
===================================================================
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target untyped_assembly } */
+
struct r
{
int d1, d2;
===================================================================
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target untyped_assembly } */
+
g (a, b) {}
f (xx)
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
f ()
{
int i;
===================================================================
@@ -1,4 +1,6 @@
/* { dg-require-effective-target ptr32plus } */
+/* { dg-require-effective-target untyped_assembly } */
+
typedef void *(*T)(void);
f1 ()
{
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
===================================================================
@@ -1,4 +1,5 @@
/* PR middle-end/38360 */
+/* { dg-require-effective-target untyped_assembly } */
int
main ()
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
extern void d (void);
void (*foo (void)) (float)
===================================================================
@@ -1,4 +1,5 @@
/* PR tree-optimization/47428 */
+/* { dg-require-effective-target untyped_assembly } */
struct S
{
===================================================================
@@ -1,4 +1,5 @@
/* PR tree-optimization/47967 */
+/* { dg-require-effective-target untyped_assembly } */
extern void abort (void);
static void bar ();
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
static int
func1 (int a, int b)
{
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
void
foo (x, fn)
void (*fn) ();
===================================================================
@@ -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);
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
extern void abort(void);
typedef struct
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
extern void abort (void);
struct type
===================================================================
@@ -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);}
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
#ifndef STACK_SIZE
#define VLEN 2055
#else
===================================================================
@@ -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); }
===================================================================
@@ -2,6 +2,7 @@
type does not appear until after the function designator and
arguments have been evaluated. PR 38483. */
/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-require-effective-target untyped_assembly } */
extern void exit (int);
extern void abort (void);
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
static int kind_varread(char *str)
{
if (0 == memcmp("%_#", str, 3)) return 2;
===================================================================
@@ -1,4 +1,5 @@
/* PR target/8232. */
+/* { dg-require-effective-target untyped_assembly } */
int f (char *p, char *q, int i)
{
===================================================================
@@ -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
===================================================================
@@ -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"
===================================================================
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"
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
struct S1
{
short f0;
===================================================================
@@ -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);
===================================================================
@@ -1,5 +1,6 @@
/* PR 11184 */
/* Origin: Dara Hazeghi <dhazeghi@yahoo.com> */
+/* { dg-require-effective-target untyped_assembly } */
void *
objc_msg_sendv (char * arg_frame, void (*foo)())
===================================================================
@@ -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
===================================================================
@@ -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
===================================================================
@@ -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);
===================================================================
@@ -1,5 +1,6 @@
/* PR 11184 */
/* Origin: Dara Hazeghi <dhazeghi@yahoo.com> */
+/* { dg-require-effective-target untyped_assembly } */
void *
objc_msg_sendv (char * arg_frame, void (*foo)())
===================================================================
@@ -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 } { "*" } { "" } } */
===================================================================
@@ -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
===================================================================
@@ -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);
===================================================================
@@ -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);
===================================================================
@@ -1,6 +1,7 @@
/* PR middle-end/11151 */
/* Originator: Andrew Church <gcczilla@achurch.org> */
/* { 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'. */
===================================================================
@@ -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)
{
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
foo (a, p)
int *p;
{
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
foo (a, p)
register int a;
int *p;
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
int glob;
conseq (a, b, c, d)
===================================================================
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target untyped_assembly } */
+
foo (a, b)
{
if ((a & (1 << b)) == 0)
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
int
foo (a, b, c)
{
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
int g1, g2;
void
===================================================================
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
foo (a, b, c, d, e, f, g, h, i)
{
return foo () + i;
===================================================================
@@ -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