* 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.
From-SVN: r217297
2014-11-10 Bernd Schmidt <bernds@codesourcery.com>
+ * 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.
+
* lib/target-supports.exp (check_effective_target_alloca): New function.
* gcc.c-torture/execute/20010209-1.c: Require alloca.
* gcc.c-torture/execute/20020314-1.c: Likewise.
+/* { dg-require-effective-target untyped_assembly } */
static int kind_varread(char *str)
{
if (0 == memcmp("%_#", str, 3)) return 2;
/* PR target/8232. */
+/* { dg-require-effective-target untyped_assembly } */
int f (char *p, char *q, int i)
{
+/* Declaration of the frame size doesn't work on ptx. */
+/* { dg-require-effective-target untyped_assembly } */
#ifndef ASIZE
# define ASIZE 0x10000000000UL
#endif
+/* Declaration of the frame size doesn't work on ptx. */
+/* { dg-require-effective-target untyped_assembly } */
#define ASIZE 0x1000000000UL
#include "20031023-1.c"
+/* Declaration of the frame size doesn't work on ptx. */
+/* { dg-require-effective-target untyped_assembly } */
#define ASIZE 0x100000000UL
#include "20031023-1.c"
+/* { dg-require-effective-target untyped_assembly } */
+
void bar ();
void
+/* { dg-require-effective-target untyped_assembly } */
foo (a, p)
int *p;
{
+/* { 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"));}
+/* { dg-require-effective-target untyped_assembly } */
union {
short I[2];
long int L;
+/* { dg-require-effective-target untyped_assembly } */
+
int heap;
g(){}
+/* { dg-require-effective-target untyped_assembly } */
+
struct r
{
int d1, d2;
+/* { dg-require-effective-target untyped_assembly } */
+
g (a, b) {}
f (xx)
+/* { dg-require-effective-target untyped_assembly } */
f ()
{
int i;
+/* { dg-skip-if "requires untyped assembly" { ! untyped_assembly } { "-O0" } { "" } } */
+
int foo () {}
main (a, b)
/* { dg-require-effective-target ptr32plus } */
+/* { dg-require-effective-target untyped_assembly } */
+
typedef void (*T)(void);
f1 ()
{
/* { dg-require-effective-target ptr32plus } */
+/* { dg-require-effective-target untyped_assembly } */
+
typedef void *(*T)(void);
f1 ()
{
+/* { dg-require-effective-target untyped_assembly } */
foo (a, p)
register int a;
int *p;
+/* { dg-require-effective-target untyped_assembly } */
int glob;
conseq (a, b, c, d)
+/* { dg-require-effective-target untyped_assembly } */
+
#define ID_1 2400000000.0
#define ID_2 1.7
#define ID_3 -1.7
+/* { dg-require-effective-target untyped_assembly } */
+
foo (a, b)
{
if ((a & (1 << b)) == 0)
+/* { dg-require-effective-target untyped_assembly } */
int
foo (a, b, c)
{
+/* { dg-require-effective-target untyped_assembly } */
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
+/* { dg-require-effective-target untyped_assembly } */
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
/* PR middle-end/38360 */
+/* { dg-require-effective-target untyped_assembly } */
int
main ()
+/* { dg-require-effective-target untyped_assembly } */
extern void d (void);
void (*foo (void)) (float)
/* PR tree-optimization/47428 */
+/* { dg-require-effective-target untyped_assembly } */
struct S
{
/* PR tree-optimization/47967 */
+/* { dg-require-effective-target untyped_assembly } */
extern void abort (void);
static void bar ();
+/* { dg-require-effective-target untyped_assembly } */
static int
func1 (int a, int b)
{
+/* { dg-require-effective-target untyped_assembly } */
struct S1
{
short f0;
+/* { dg-require-effective-target untyped_assembly } */
void
foo (x, fn)
void (*fn) ();
/* PR middle-end/53411 */
+/* { dg-require-effective-target untyped_assembly } */
int a, b, c, d, e, f, g, h;
void fn1 (void);
+/* { dg-require-effective-target untyped_assembly } */
int g1, g2;
void
+/* { dg-require-effective-target untyped_assembly } */
foo (a, b, c, d, e, f, g, h, i)
{
return foo () + i;
+/* { dg-require-effective-target untyped_assembly } */
extern void abort(void);
typedef struct
+/* { dg-require-effective-target untyped_assembly } */
extern void abort (void);
struct type
+/* { 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);}
+/* { dg-require-effective-target untyped_assembly } */
#ifndef STACK_SIZE
#define VLEN 2055
#else
+/* { dg-require-effective-target untyped_assembly } */
#define STACK_REQUIREMENT (100000 * 4 + 1024)
#if defined (STACK_SIZE) && STACK_SIZE < STACK_REQUIREMENT
main () { exit (0); }
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);
/* { dg-xfail-if "can cause stack underflow" { nios2-*-* } "*" "" } */
+/* { dg-require-effective-target untyped_assembly } */
#define INTEGER_ARG 5
extern void abort(void);
/* PR 11184 */
/* Origin: Dara Hazeghi <dhazeghi@yahoo.com> */
+/* { dg-require-effective-target untyped_assembly } */
void *
objc_msg_sendv (char * arg_frame, void (*foo)())
/* { 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 } { "*" } { "" } } */
to the right location by __builtin_apply after the direct call. */
/* { dg-do run } */
+/* { dg-require-effective-target untyped_assembly } */
#define INTEGER_ARG 5
/* { dg-options "-O2 -Wmissing-noreturn -fgnu89-inline" } */
/* { dg-additional-options "-mno-mmx" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* { dg-do run } */
+/* { dg-require-effective-target untyped_assembly } */
extern void abort (void);
/* PR middle-end/38338 */
/* { dg-options "-O0" } */
/* { dg-options "-O0 -fPIC" { target fpic } } */
+/* { dg-require-effective-target untyped_assembly } */
typedef void (*fnp) (void);
/* { dg-do compile } */
/* { dg-options "-mavx -mvzeroupper" { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-require-effective-target untyped_assembly } */
short retframe_short (void *rframe)
{
/* PR 11184 */
/* Origin: Dara Hazeghi <dhazeghi@yahoo.com> */
+/* { dg-require-effective-target untyped_assembly } */
void *
objc_msg_sendv (char * arg_frame, void (*foo)())
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
to the right location by __builtin_apply after the direct call. */
/* { dg-do run } */
+/* { dg-require-effective-target untyped_assembly } */
#define INTEGER_ARG 5
/* PR tree-optimization/20076 */
/* { dg-do run } */
/* { dg-additional-options "-fgnu89-inline" } */
+/* { dg-require-effective-target untyped_assembly } */
extern void abort (void);
/* 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'. */
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 {} {