diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg')
42 files changed, 581 insertions, 25 deletions
diff --git a/gcc/testsuite/gcc.dg/20030711-1.c b/gcc/testsuite/gcc.dg/20030711-1.c index 7649059c6cf..e8691961f47 100644 --- a/gcc/testsuite/gcc.dg/20030711-1.c +++ b/gcc/testsuite/gcc.dg/20030711-1.c @@ -11,6 +11,9 @@ #ifndef MAP_ANON #define MAP_ANON 0 #endif +#ifndef MAP_FAILED +#define MAP_FAILED ((void *)-1) +#endif #include <stdlib.h> void __attribute__((noinline)) test (const char *p) diff --git a/gcc/testsuite/gcc.dg/20050826-1.c b/gcc/testsuite/gcc.dg/20050826-1.c index e622505e7da..9595236cf90 100644 --- a/gcc/testsuite/gcc.dg/20050826-1.c +++ b/gcc/testsuite/gcc.dg/20050826-1.c @@ -12,6 +12,9 @@ #ifndef MAP_ANON #define MAP_ANON 0 #endif +#ifndef MAP_FAILED +#define MAP_FAILED ((void *)-1) +#endif #include <stdlib.h> struct Flags { diff --git a/gcc/testsuite/gcc.dg/54455.c b/gcc/testsuite/gcc.dg/54455.c new file mode 100644 index 00000000000..de68a53e233 --- /dev/null +++ b/gcc/testsuite/gcc.dg/54455.c @@ -0,0 +1,25 @@ +/* PR rtl-optimization/54455 */ +/* { dg-do compile } */ +/* { dg-options "-O1 -fschedule-insns -fselective-scheduling --param max-sched-extend-regions-iters=2" } */ + +extern void fn1 (void), fn2 (void); + +static inline __attribute__((always_inline)) int +foo (int *x, long y) +{ + asm goto ("" : : "r" (x), "r" (y) : "memory" : lab); + return 0; +lab: + return 1; +} + +void +bar (int *x) +{ + if (foo (x, 23)) + fn1 (); + else + fn2 (); + + foo (x, 2); +} diff --git a/gcc/testsuite/gcc.dg/c90-const-expr-8.c b/gcc/testsuite/gcc.dg/c90-const-expr-8.c index b00bb9718f8..4923bc68046 100644 --- a/gcc/testsuite/gcc.dg/c90-const-expr-8.c +++ b/gcc/testsuite/gcc.dg/c90-const-expr-8.c @@ -22,6 +22,6 @@ enum e { E5 = 0 * -INT_MIN, /* { dg-warning "12:integer overflow in expression" } */ /* { dg-error "3:overflow in constant expression" "constant" { target *-*-* } 22 } */ E6 = 0 * !-INT_MIN, /* { dg-warning "13:integer overflow in expression" } */ - /* { dg-error "3:not an integer constant" "constant" { target *-*-* } 24 } */ + /* { dg-error "8:not an integer constant" "constant" { target *-*-* } 24 } */ E7 = INT_MIN % -1 /* Not an overflow. */ }; diff --git a/gcc/testsuite/gcc.dg/pr44194-1.c b/gcc/testsuite/gcc.dg/pr44194-1.c index d251bf1b941..d993a42a02b 100644 --- a/gcc/testsuite/gcc.dg/pr44194-1.c +++ b/gcc/testsuite/gcc.dg/pr44194-1.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { { { { i?86-*-* x86_64-*-* } && x32 } || lp64 } && { ! s390*-*-* } } } } */ +/* { dg-do compile { target { { { { { i?86-*-* x86_64-*-* } && x32 } || lp64 } && { ! s390*-*-* } } && { ! alpha*-*-* } } } } */ /* { dg-options "-O2 -fdump-rtl-dse1" } */ /* Restricting to 64-bit targets since 32-bit targets return structures in memory. */ @@ -10,5 +10,5 @@ void func() { struct ints s = foo(); bar(s.a, s.b); } -/* { dg-final { scan-rtl-dump "global deletions = 2" "dse1" } } */ +/* { dg-final { scan-rtl-dump "global deletions = (2|3)" "dse1" } } */ /* { dg-final { cleanup-rtl-dump "dse1" } } */ diff --git a/gcc/testsuite/gcc.dg/pr45259.c b/gcc/testsuite/gcc.dg/pr45259.c index b8dc36503f8..3b8d6bd176d 100644 --- a/gcc/testsuite/gcc.dg/pr45259.c +++ b/gcc/testsuite/gcc.dg/pr45259.c @@ -1,6 +1,7 @@ /* PR debug/45259 */ /* { dg-do compile } */ -/* { dg-options "-g -O2 -fpic -w" { target fpic } } */ +/* { dg-options "-g -O2 -w -fpic" { target fpic } } */ +/* { dg-options "-g -O2 -w" { target { ! fpic } } } */ struct S { void (*bar) (long); }; struct T { struct S *t; }; diff --git a/gcc/testsuite/gcc.dg/pr53701.c b/gcc/testsuite/gcc.dg/pr53701.c new file mode 100644 index 00000000000..2c852238110 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr53701.c @@ -0,0 +1,59 @@ +/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O3 -fselective-scheduling2 -fsel-sched-pipelining" } */ +typedef unsigned short int uint16_t; +typedef unsigned long int uintptr_t; +typedef struct GFX_VTABLE +{ + int color_depth; + unsigned char *line[]; +} +BITMAP; +extern int _drawing_mode; +extern BITMAP *_drawing_pattern; +extern int _drawing_y_anchor; +extern unsigned int _drawing_x_mask; +extern unsigned int _drawing_y_mask; +extern uintptr_t bmp_write_line (BITMAP *, int); + void +_linear_hline15 (BITMAP * dst, int dx1, int dy, int dx2, int color) +{ + int w; + if (_drawing_mode == 0) + { + int x, curw; + unsigned short *sline = + (unsigned short *) (_drawing_pattern-> + line[((dy) - + _drawing_y_anchor) & _drawing_y_mask]); + unsigned short *s; + unsigned short *d = + ((unsigned short *) (bmp_write_line (dst, dy)) + (dx1)); + s = ((unsigned short *) (sline) + (x)); + if (_drawing_mode == 2) + { + } + else if (_drawing_mode == 3) + { + do + { + w -= curw; + do + { + unsigned long c = (*(s)); + if (!((unsigned long) (c) == 0x7C1F)) + { + (*((uint16_t *) ((uintptr_t) (d))) = ((color))); + } + ((s)++); + } + while (--curw > 0); + s = sline; + curw = + (((w) < + ((int) _drawing_x_mask + + 1)) ? (w) : ((int) _drawing_x_mask + 1)); + } + while (curw > 0); + } + } +} diff --git a/gcc/testsuite/gcc.dg/pr54121.c b/gcc/testsuite/gcc.dg/pr54121.c new file mode 100644 index 00000000000..b9a208ea84e --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr54121.c @@ -0,0 +1,94 @@ +/* PR target/54121 */ +/* Reported by Jan Engelhardt <jengelh@inai.de> */ + +/* { dg-do compile { target fpic } } */ +/* { dg-options "-std=gnu99 -O -fPIC -fprofile-generate" } */ + +typedef __SIZE_TYPE__ size_t; +typedef unsigned char uint8_t; + +extern void *memcpy (void *__restrict __dest, + __const void *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +typedef enum { + LZMA_OK = 0, + LZMA_STREAM_END = 1, + LZMA_NO_CHECK = 2, + LZMA_UNSUPPORTED_CHECK = 3, + LZMA_GET_CHECK = 4, + LZMA_MEM_ERROR = 5, + LZMA_MEMLIMIT_ERROR = 6, + LZMA_FORMAT_ERROR = 7, + LZMA_OPTIONS_ERROR = 8, + LZMA_DATA_ERROR = 9, + LZMA_BUF_ERROR = 10, + LZMA_PROG_ERROR = 11, +} lzma_ret; + +typedef enum { + LZMA_RUN = 0, + LZMA_SYNC_FLUSH = 1, + LZMA_FULL_FLUSH = 2, + LZMA_FINISH = 3 +} lzma_action; + +typedef struct { + void *( *alloc)(void *opaque, size_t nmemb, size_t size); + void ( *free)(void *opaque, void *ptr); + void *opaque; +} lzma_allocator; + +typedef struct lzma_coder_s lzma_coder; + +typedef struct lzma_next_coder_s lzma_next_coder; + +typedef struct lzma_filter_info_s lzma_filter_info; + +typedef lzma_ret (*lzma_init_function)( + lzma_next_coder *next, lzma_allocator *allocator, + const lzma_filter_info *filters); + +typedef lzma_ret (*lzma_code_function)( + lzma_coder *coder, lzma_allocator *allocator, + const uint8_t *restrict in, size_t *restrict in_pos, + size_t in_size, uint8_t *restrict out, + size_t *restrict out_pos, size_t out_size, + lzma_action action); + +typedef void (*lzma_end_function)( + lzma_coder *coder, lzma_allocator *allocator); + +typedef struct { + uint8_t *buf; + size_t pos; + size_t size; +} lzma_dict; + +typedef struct { + lzma_coder *coder; + lzma_ret (*code)(lzma_coder *restrict coder, + lzma_dict *restrict dict, const uint8_t *restrict in, + size_t *restrict in_pos, size_t in_size); +} lzma_lz_decoder; + +struct lzma_coder_s { + lzma_dict dict; + lzma_lz_decoder lz; +}; + +lzma_ret +decode_buffer(lzma_coder *coder, + const uint8_t *restrict in, size_t *restrict in_pos, + size_t in_size, uint8_t *restrict out, size_t *restrict out_pos) +{ + while (1) { + const size_t dict_start = coder->dict.pos; + const lzma_ret ret + = coder->lz.code( coder->lz.coder, &coder->dict, in, in_pos, in_size); + const size_t copy_size = coder->dict.pos - dict_start; + memcpy(out + *out_pos, coder->dict.buf + dict_start, copy_size); + if (ret != LZMA_OK || coder->dict.pos < coder->dict.size) + return ret; + } +} diff --git a/gcc/testsuite/gcc.dg/pr54363.c b/gcc/testsuite/gcc.dg/pr54363.c new file mode 100644 index 00000000000..aea0f9057b0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr54363.c @@ -0,0 +1,12 @@ +/* PR c/54363 */ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99" } */ + +struct S { char **a; }; + +void +test (void) +{ + struct S b = { .a = (char **) { "a", "b" } }; /* { dg-warning "(initialization|excess elements)" } */ + struct S c = { .a = (char *[]) { "a", "b" } }; +} diff --git a/gcc/testsuite/gcc.dg/pr55019.c b/gcc/testsuite/gcc.dg/pr55019.c new file mode 100644 index 00000000000..1548fb258c0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr55019.c @@ -0,0 +1,41 @@ +/* { dg-do run } */ +/* { dg-options "-O1 -funroll-loops" } */ +/* { dg-add-options ieee } */ + +extern void exit (int); +extern void abort (void); + +void +compare (double a, double b) +{ + do + { + double s1 = __builtin_copysign ((double) 1.0, a); + double s2 = __builtin_copysign ((double) 1.0, b); + + if (s1 != s2) + abort (); + + if ((__builtin_isnan (a) != 0) != (__builtin_isnan (b) != 0)) + abort (); + + if ((a != b) != (__builtin_isnan (a) != 0)) + abort (); + } while (0); +} + +int +main () +{ + double a = 0.0; + double b = 0.0; + _Complex double cr = __builtin_complex (a, b); + static _Complex double cs = __builtin_complex (0.0, 0.0); + + compare (__real__ cr, 0.0); + compare (__imag__ cr, 0.0); + compare (__real__ cs, 0.0); + compare (__imag__ cs, 0.0); + + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/pr55570.c b/gcc/testsuite/gcc.dg/pr55570.c new file mode 100644 index 00000000000..903bb033df9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr55570.c @@ -0,0 +1,4 @@ +/* PR c/55570 */ +/* { dg-do compile } */ + +char array[16] __attribute__((aligned (SOME_NOT_DEFINED_MACRO))); /* { dg-error "requested alignment is not an integer constant" } */ diff --git a/gcc/testsuite/gcc.dg/torture/pr47917.c b/gcc/testsuite/gcc.dg/torture/pr47917.c index d3649fb7409..a46485f3075 100644 --- a/gcc/testsuite/gcc.dg/torture/pr47917.c +++ b/gcc/testsuite/gcc.dg/torture/pr47917.c @@ -4,7 +4,7 @@ /* { dg-options "-std=c99 -D_XOPEN_SOURCE=500" { target mips-sgi-irix6.5 *-*-solaris2.[89] } } */ /* { dg-options "-std=gnu99" { target *-*-hpux* } } */ /* { dg-additional-options "-D__USE_MINGW_ANSI_STDIO=1" { target *-*-mingw* } } */ -/* { dg-xfail-if "no C99 snprintf function" { *-*-hpux10* } } */ +/* { dg-xfail-run-if "no C99 snprintf function" { *-*-hpux10* } } */ /* { dg-xfail-run-if "non-conforming C99 snprintf" { *-*-hpux11.[012]* } } */ /* PR middle-end/47917 */ diff --git a/gcc/testsuite/gcc.dg/torture/pr53663-1.c b/gcc/testsuite/gcc.dg/torture/pr53663-1.c new file mode 100644 index 00000000000..3392ddecb51 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr53663-1.c @@ -0,0 +1,30 @@ +/* { dg-do run } */ + +extern void abort (void); + +union u +{ + int i; + _Bool b; +}; + +void f(union u * vp, union u v) +{ + *vp = v; +} + +int main() +{ + union u v; + union u v1; + union u v2; + + v.i = 10; + f(&v1, v); + + v.b = 0; + f(&v2, v); + if (v2.b != 0) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr53663-2.c b/gcc/testsuite/gcc.dg/torture/pr53663-2.c new file mode 100644 index 00000000000..9589a9e2054 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr53663-2.c @@ -0,0 +1,24 @@ +/* { dg-do run } */ + +extern void abort (void); + +union u +{ + int i; + short f; +} v; + +short foo (short *f) +{ + *f = 1; + v.i = 0; + v.f = 0; + return *f; +} + +int main() +{ + if (foo (&v.f) != 0) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr53663-3.c b/gcc/testsuite/gcc.dg/torture/pr53663-3.c new file mode 100644 index 00000000000..96af5db10ac --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr53663-3.c @@ -0,0 +1,24 @@ +/* { dg-do run } */ + +extern void abort (void); + +union u +{ + int i; + float f; +} v; + +float foo (float *f) +{ + *f = 1; + v.i = 0; + v.f = 0.; + return *f; +} + +int main() +{ + if (foo (&v.f) != 0.) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr53922.c b/gcc/testsuite/gcc.dg/torture/pr53922.c new file mode 100644 index 00000000000..57011e46cb5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr53922.c @@ -0,0 +1,23 @@ +/* { dg-do run } */ +/* { dg-require-weak "" } */ +/* { dg-skip-if "No undefined weak" { hppa*-*-hpux* && { ! lp64 } } { "*" } { "" } } */ + +int x(int a) +{ + return a; +} +int y(int a) __attribute__ ((weak)); +int g = 0; +int main() +{ + int (*scan_func)(int); + if (g) + scan_func = x; + else + scan_func = y; + + if (scan_func) + g = scan_func(10); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr54436.c b/gcc/testsuite/gcc.dg/torture/pr54436.c new file mode 100644 index 00000000000..4bce3240906 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr54436.c @@ -0,0 +1,38 @@ +/* PR target/54436 */ +/* { dg-do assemble } */ + +#if __SIZEOF_SHORT__ == 2 && __SIZEOF_LONG_LONG__ == 8 +static inline unsigned short +baz (unsigned short *x) +{ + union U { unsigned short a; unsigned char b[2]; } u = { *x }; + u.b[0] = ((u.b[0] * 0x0802ULL & 0x22110ULL) + | (u.b[0] * 0x8020ULL & 0x88440ULL)) * 0x10101ULL >> 16; + u.b[1] = ((u.b[1] * 0x0802ULL & 0x22110ULL) + | (u.b[1] * 0x8020ULL & 0x88440ULL)) * 0x10101ULL >> 16; + unsigned char t = u.b[0]; + u.b[0] = u.b[1]; + u.b[1] = t; + return u.a; +} + +static inline unsigned long long +bar (unsigned long long *x) +{ + union U { unsigned long long a; unsigned short b[4]; } u = { *x }; + u.b[0] = baz (&u.b[0]); + return u.a; +} + +void +foo (void) +{ + unsigned long long l = -1ULL; + __asm volatile ("" : : "r" (bar (&l))); +} +#else +void +foo (void) +{ +} +#endif diff --git a/gcc/testsuite/gcc.dg/torture/pr54877.c b/gcc/testsuite/gcc.dg/torture/pr54877.c new file mode 100644 index 00000000000..cee406e50d3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr54877.c @@ -0,0 +1,23 @@ +/* PR tree-optimization/54877 */ +/* { dg-do run } */ +/* { dg-options "-ffast-math" } */ + +extern void abort (void); + +int +foo (void) +{ + double d; + int i; + for (i = 0, d = 0; i < 64; i++) + d--; + return (int) d; +} + +int +main () +{ + if (foo () != -64) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr54894.c b/gcc/testsuite/gcc.dg/torture/pr54894.c new file mode 100644 index 00000000000..277e371de62 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr54894.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ + +typedef unsigned long long uint64_t; + +#define n 4096 +double A[n][n] __attribute__((aligned(16))); +double B[n][n] __attribute__((aligned(16))); +double C[n][n] __attribute__((aligned(16))); + +#define tilesize 128 + +typedef double adouble __attribute__((__aligned__(16))); + +void foo () +{ + int ih, jh, kh, il, kl, jl; + for (ih = 0; ih < n; ih += tilesize) + for (jh = 0; jh < n; jh += tilesize) + for (kh = 0; kh < n; kh += tilesize) + for (il = 0; il < tilesize; ++il) + { + adouble *Ap = (adouble *)&A[ih+il][kh]; + for (kl = 0; kl < tilesize; ++kl) + for (jl = 0; jl < tilesize; ++jl) + C[ih+il][jh+jl] += Ap[kl] * B[kh+kl][jh+jl]; + } +} diff --git a/gcc/testsuite/gcc.dg/torture/pr54920.c b/gcc/testsuite/gcc.dg/torture/pr54920.c new file mode 100644 index 00000000000..6b99e9ed2eb --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr54920.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-fno-common" { target { hppa*-*-hpux* } } } */ + +typedef short __v8hi __attribute__ ((__vector_size__ (16))); +typedef long long __m128i __attribute__ ((__vector_size__ (16))); +int a; +__m128i b; + +void +fn1 () +{ + while (1) + b = (__m128i) (__v8hi) { a, 0, 0, 0, 0, 0 }; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr55882.c b/gcc/testsuite/gcc.dg/torture/pr55882.c new file mode 100644 index 00000000000..fd2276e7f53 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr55882.c @@ -0,0 +1,94 @@ +/* { dg-do run } */ + +typedef enum +{ + PVT_A = 0, + PVT_B = 1, + PVT_CONFIG = 2, + PVT_RESERVED3 = 3, +} T_CR_SELECT; + +typedef enum +{ + STD_ULOGIC_0 = 0, + STD_ULOGIC_1 = 1, +} STD_ULOGIC; + +typedef struct +{ + unsigned char rtp : 3; + unsigned char rtn : 3; +} C; + +typedef struct +{ + unsigned char nd; + unsigned char pd; + unsigned char rtn; + unsigned char rtp; +} A; + +typedef struct +{ + unsigned short reserved : 14; + unsigned char Z_rx_enable : 2; + A pvt; +} B; + +typedef struct +{ + B cr_dsclk_q3; + B cr_data_q3; + B cr_addr_q3; + B cr_cmd_q3; + B cr_pres_q3; + C cr_vref_q3[6]; + unsigned char pres_disable; + unsigned char pres_drive_high; + unsigned char c_enab_120; + STD_ULOGIC clk_tximp; + STD_ULOGIC dqs_tximp; + STD_ULOGIC cmd_tximp; + STD_ULOGIC data_tximp; + STD_ULOGIC dqs_rxterm; + STD_ULOGIC data_rxterm; + T_CR_SELECT cr_clk_sel; + unsigned char cr_clk : 5; + T_CR_SELECT cr_dsclk_odd_sel; + unsigned char cr_dsclk_odd : 5; + T_CR_SELECT cr_dsclk_even_sel; + unsigned char cr_dsclk_even : 5; + T_CR_SELECT cr_data_sel; + unsigned char cr_data : 5; + T_CR_SELECT cr_vref_sel; + unsigned char cr_vref : 5; + T_CR_SELECT cr_others_sel; + unsigned char cr_others : 5; +} CONFIG; + +typedef struct +{ + unsigned char enable_monitor; + unsigned short step_out_pointer : 12; + unsigned short hold_out_pointer : 12; + unsigned short enable_wr_dqs : 12; + unsigned short use_alt_rd_dqs : 12; + CONFIG io_buf; +} mystruct; + +unsigned short __attribute__((noinline,noclone)) +testfunction(unsigned i) +{ + mystruct dmfe[8]; + dmfe[0].use_alt_rd_dqs = 1; + dmfe[i].use_alt_rd_dqs = 0; + return dmfe[0].use_alt_rd_dqs; +} + +extern void abort (void); +int main () +{ + if (testfunction(0) != 0) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c index d851bf23fe8..d67f8692862 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-3.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -fdump-tree-dom1-details" } */ +/* { dg-options "-O2 -fdump-tree-dom1-details -fno-short-enums" } */ + extern void abort (void) __attribute__ ((__noreturn__)); union tree_node; typedef union tree_node *tree; diff --git a/gcc/testsuite/gcc.dg/tree-ssa/strlen-1.c b/gcc/testsuite/gcc.dg/tree-ssa/strlen-1.c new file mode 100644 index 00000000000..f6ff3e1570f --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/strlen-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-optimized" } */ +extern const unsigned long base; +static inline void wreg(unsigned char val, unsigned long addr) __attribute__((always_inline)); +static inline void wreg(unsigned char val, unsigned long addr) +{ + *((volatile unsigned char *) (__SIZE_TYPE__) (base + addr)) = val; +} +void wreg_twice(void) +{ + wreg(0, 42); + wreg(0, 42); +} + +/* We should not remove the second null character store to (base+42) address. */ +/* { dg-final { scan-tree-dump-times " ={v} 0;" 2 "optimized" } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c b/gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c index 1da8e7b2cd5..5b834568a78 100644 --- a/gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c +++ b/gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c @@ -21,5 +21,5 @@ float method2_int16 (struct mem *mem) } /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_extract_even_odd || vect_strided2 } } } } */ -/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_extract_even_odd || vect_strided2 } } } } */ +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_extract_even_odd || vect_strided2 } } } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-101.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-101.c index 3a54a753065..6372aabd63c 100644 --- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-101.c +++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-101.c @@ -45,7 +45,7 @@ int main (void) } /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */ -/* { dg-final { scan-tree-dump-times "can't determine dependence" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "can't determine dependence" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c index a8d3b042dc6..2221049d7d8 100644 --- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c +++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c @@ -53,7 +53,7 @@ int main (void) } /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */ -/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102a.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102a.c index 41bbbc15cb2..d7b68e53a36 100644 --- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102a.c +++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102a.c @@ -53,7 +53,7 @@ int main (void) } /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */ -/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c index c8cf2cafb90..dff14ff5a9e 100644 --- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c +++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c @@ -58,6 +58,6 @@ int main (void) If/when the aliasing problems are resolved, unalignment may prevent vectorization on some targets. */ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "can't determine dependence" 4 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c index 3c5ce4be847..1653f3d6c08 100644 --- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c +++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c @@ -46,6 +46,6 @@ int main (void) If/when the aliasing problems are resolved, unalignment may prevent vectorization on some targets. */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "can't determine dependence" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "can't determine dependence" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/pr52298.c b/gcc/testsuite/gcc.dg/vect/pr52298.c index c2401607c45..453d7c8aa14 100644 --- a/gcc/testsuite/gcc.dg/vect/pr52298.c +++ b/gcc/testsuite/gcc.dg/vect/pr52298.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-O1 -ftree-vectorize -fno-tree-pre -fno-tree-loop-im" } */ extern void abort (void); diff --git a/gcc/testsuite/gcc.dg/vect/vect-104.c b/gcc/testsuite/gcc.dg/vect/vect-104.c index 2b56ddfb3c7..107f5a770a4 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-104.c +++ b/gcc/testsuite/gcc.dg/vect/vect-104.c @@ -64,7 +64,7 @@ int main (void) } /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */ -/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-1-big-array.c b/gcc/testsuite/gcc.dg/vect/vect-outer-1-big-array.c index 804c3867bd0..e277ab2ca33 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-1-big-array.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-1-big-array.c @@ -22,6 +22,6 @@ foo (){ } /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-1.c b/gcc/testsuite/gcc.dg/vect/vect-outer-1.c index 2ce8f8ebac8..cc22fa45aa4 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-1.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-1.c @@ -22,6 +22,6 @@ foo (){ } /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-1a-big-array.c b/gcc/testsuite/gcc.dg/vect/vect-outer-1a-big-array.c index 9b418fabaa9..c4150eece87 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-1a-big-array.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-1a-big-array.c @@ -20,6 +20,6 @@ foo (){ } /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c b/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c index a9b786e235c..fdf8e1ad88a 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c @@ -20,6 +20,6 @@ foo (){ } /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-1b-big-array.c b/gcc/testsuite/gcc.dg/vect/vect-outer-1b-big-array.c index 48b7180784e..82579b7df42 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-1b-big-array.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-1b-big-array.c @@ -22,6 +22,6 @@ foo (){ } /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-1b.c b/gcc/testsuite/gcc.dg/vect/vect-outer-1b.c index 815758c766f..7efc4facbc3 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-1b.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-1b.c @@ -22,6 +22,6 @@ foo (){ } /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c b/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c index cb62881f004..12f44ba125c 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c @@ -37,6 +37,6 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c b/gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c index 9768a1ed577..c6486db691b 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c @@ -49,6 +49,6 @@ int main (void) } /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_align } } } */ -/* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 2 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 2 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 3 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c b/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c index 1759ee38db7..3d6e1076e79 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c @@ -49,6 +49,6 @@ int main (void) } /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_align } } } */ -/* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 2 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 2 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 3 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c b/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c index fda8727bf68..1c20f200e79 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c @@ -49,6 +49,6 @@ int main (void) } /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "strided access in outer loop" 4 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c index dc9eb61580d..2ecb225a81a 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c @@ -58,7 +58,7 @@ int main (void) } /* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected" 1 "vect" { xfail *-*-* } } } */ -/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { xfail vect_multiple_sizes } } } */ +/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { target { ! vect_multiple_sizes } } } } */ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 2 "vect" { target vect_multiple_sizes } } } */ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */ |