attr-noinline.c, [...]: New tests.
* gcc.dg/attr-noinline.c, gcc.dg/attr-used.c: New tests. * gcc.dg/attr-invalid.c: Likewise. From-SVN: r46335
This commit is contained in:
parent
9162542e3d
commit
c8202d4cbe
4 changed files with 140 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2001-10-18 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* gcc.dg/attr-noinline.c, gcc.dg/attr-used.c: New tests.
|
||||
* gcc.dg/attr-invalid.c: Likewise.
|
||||
|
||||
2001-10-18 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* testsuite/gcc.dg/20011015-1.c: New test.
|
||||
|
|
56
gcc/testsuite/gcc.dg/attr-invalid.c
Normal file
56
gcc/testsuite/gcc.dg/attr-invalid.c
Normal file
|
@ -0,0 +1,56 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "" } */
|
||||
|
||||
#define CONCAT_(A,B) A ## B
|
||||
#define CONCAT(A,B) CONCAT_(A,B)
|
||||
|
||||
#define ATTR __attribute__((AT))
|
||||
#define ATSYM(suf) CONCAT (AT, CONCAT_ (_, suf))
|
||||
|
||||
#define AT noinline
|
||||
|
||||
typedef int ATSYM(type) ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
|
||||
typedef int (*ATSYM(fntype))(void) ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
|
||||
struct ATSYM(struct) {
|
||||
char dummy ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
} ATTR; /* { dg-warning "does not apply to types" "" } */
|
||||
|
||||
int ATSYM(var) ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
|
||||
int ATSYM(fn_knrarg) (arg)
|
||||
int arg ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
{}
|
||||
|
||||
int ATSYM(fn_isoarg) (int arg ATTR) {} /* { dg-warning "attribute ignored" "" } */
|
||||
|
||||
int ATSYM(fn_vars) (void) {
|
||||
static int svar ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
auto int lvar ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
}
|
||||
|
||||
|
||||
#undef AT
|
||||
#define AT used
|
||||
|
||||
typedef int ATSYM(type) ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
|
||||
typedef int (*ATSYM(fntype))(void) ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
|
||||
struct ATSYM(struct) {
|
||||
char dummy ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
} ATTR; /* { dg-warning "does not apply to types" "" } */
|
||||
|
||||
int ATSYM(var) ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
|
||||
int ATSYM(fn_knrarg) (arg)
|
||||
int arg ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
{}
|
||||
|
||||
int ATSYM(fn_isoarg) (int arg ATTR) {} /* { dg-warning "attribute ignored" "" } */
|
||||
|
||||
int ATSYM(fn_vars) (void) {
|
||||
static int svar ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
auto int lvar ATTR; /* { dg-warning "attribute ignored" "" } */
|
||||
}
|
66
gcc/testsuite/gcc.dg/attr-noinline.c
Normal file
66
gcc/testsuite/gcc.dg/attr-noinline.c
Normal file
|
@ -0,0 +1,66 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -finline-functions" } */
|
||||
|
||||
static inline void __attribute__((__noinline__)) function_definition(void) {} /* { dg-warning "inline function \[^\n\]* given attribute noinline" "" } */
|
||||
|
||||
static inline void __attribute__((__noinline__)) function_declaration_both_before(void); /* { dg-warning "inline function \[^\n\]* given attribute noinline" "" } */
|
||||
|
||||
static void function_declaration_both_before(void) {}
|
||||
|
||||
static void function_declaration_both_after(void);
|
||||
|
||||
static inline void __attribute__((__noinline__)) function_declaration_both_after(void); /* { dg-warning "(inline function \[^\n\]* given attribute noinline|declared inline after its definition)" "" } */
|
||||
|
||||
static void function_declaration_both_after(void) {}
|
||||
|
||||
static void function_declaration_noinline_before(void) __attribute__((__noinline__)); /* { dg-warning "previous declaration \[^\n\]* with attribute noinline" "" } */
|
||||
|
||||
static inline void function_declaration_noinline_before(void) {} /* { dg-warning "function \[^\n\]* redeclared as inline" "" } */
|
||||
|
||||
static inline void function_declaration_noinline_after(void) {} /* { dg-warning "previous declaration \[^\n\]* was inline" "" } */
|
||||
|
||||
static void function_declaration_noinline_after(void) __attribute__((__noinline__)); /* { dg-warning "function \[^\n\]* redeclared with attribute noinline" "" } */
|
||||
|
||||
static inline void function_declaration_inline_before(void); /* { dg-warning "previous declaration \[^\n\]* was inline" "" } */
|
||||
|
||||
static void __attribute__((__noinline__)) function_declaration_inline_before(void) {} /* { dg-warning "function \[^\n\]* redeclared with attribute noinline" "" } */
|
||||
|
||||
static inline void function_declaration_inline_noinline_before(void); /* { dg-warning "previous declaration \[^\n\]* was inline" "" } */
|
||||
|
||||
static void function_declaration_inline_noinline_before(void) __attribute__((__noinline__)); /* { dg-warning "function \[^\n\]* redeclared with attribute noinline" "" } */
|
||||
|
||||
static void function_declaration_inline_noinline_before(void) {}
|
||||
|
||||
static inline void function_declaration_inline_noinline_after(void);
|
||||
|
||||
static void function_declaration_inline_noinline_after(void) {} /* { dg-warning "previous declaration \[^\n\]* was inline" "" } */
|
||||
|
||||
static void function_declaration_inline_noinline_after(void) __attribute__((__noinline__)); /* { dg-warning "function \[^\n\]* redeclared with attribute noinline" "" } */
|
||||
|
||||
static void function_declaration_noinline_inline_before(void) __attribute__((__noinline__)); /* { dg-warning "previous declaration\[^\n\]* with attribute noinline" "" } */
|
||||
|
||||
static inline void function_declaration_noinline_inline_before(void); /* { dg-warning "function \[^\n\]* redeclared as inline" "" } */
|
||||
|
||||
static void function_declaration_noinline_inline_before(void) {}
|
||||
|
||||
int f () {
|
||||
function_definition ();
|
||||
function_declaration_both_before ();
|
||||
function_declaration_both_after ();
|
||||
function_declaration_noinline_before ();
|
||||
function_declaration_noinline_after ();
|
||||
function_declaration_inline_before ();
|
||||
function_declaration_inline_noinline_before ();
|
||||
function_declaration_inline_noinline_after ();
|
||||
function_declaration_noinline_inline_before ();
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "function_definition" } } */
|
||||
/* { dg-final { scan-assembler "function_declaration_both_before" } } */
|
||||
/* { dg-final { scan-assembler "function_declaration_both_after" } } */
|
||||
/* { dg-final { scan-assembler "function_declaration_noinline_before" } } */
|
||||
/* { dg-final { scan-assembler "function_declaration_noinline_after" } } */
|
||||
/* { dg-final { scan-assembler "function_declaration_inline_before" } } */
|
||||
/* { dg-final { scan-assembler "function_declaration_inline_noinline_before" } } */
|
||||
/* { dg-final { scan-assembler "function_declaration_inline_noinline_after" } } */
|
||||
/* { dg-final { scan-assembler "function_declaration_noinline_inline_before" } } */
|
13
gcc/testsuite/gcc.dg/attr-used.c
Normal file
13
gcc/testsuite/gcc.dg/attr-used.c
Normal file
|
@ -0,0 +1,13 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O3" } */
|
||||
|
||||
static void function_declaration_before(void) __attribute__((__used__));
|
||||
|
||||
static void function_declaration_before(void) {}
|
||||
|
||||
static void function_declaration_after(void) {}
|
||||
|
||||
static void function_declaration_after(void) __attribute__((__used__));
|
||||
|
||||
/* { dg-final { scan-assembler "function_declaration_before" } } */
|
||||
/* { dg-final { scan-assembler "function_declaration_after" } } */
|
Loading…
Add table
Reference in a new issue