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:
Alexandre Oliva 2001-10-18 18:29:25 +00:00 committed by Alexandre Oliva
parent 9162542e3d
commit c8202d4cbe
4 changed files with 140 additions and 0 deletions

View file

@ -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.

View 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" "" } */
}

View 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" } } */

View 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" } } */