diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture')
40 files changed, 292 insertions, 6 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr40556.c b/gcc/testsuite/gcc.c-torture/compile/pr40556.c new file mode 100644 index 00000000000..625175d7788 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr40556.c @@ -0,0 +1,11 @@ +struct A {}; + +struct A foo() +{ + return foo(); +} + +void bar() +{ + foo(); +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr41182-1.c b/gcc/testsuite/gcc.c-torture/compile/pr41182-1.c new file mode 100644 index 00000000000..017174938b3 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr41182-1.c @@ -0,0 +1,6 @@ +typedef long unsigned int size_t; +int _lae_process_opts(char *pr, char *pe) +{ + return (strlen ("on") < ((size_t) ((pe-&pr[2])>(strlen("on")) + ? (pe-&pr[2]) : (strlen("on"))))); +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr41634.c b/gcc/testsuite/gcc.c-torture/compile/pr41634.c new file mode 100644 index 00000000000..976e463e2ba --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr41634.c @@ -0,0 +1,19 @@ +extern int _xgetw(); +extern int foo(char*); + +void test_readmode( int ascii_mode ) +{ + static const char outbuffer[] + = "0,1,2,3,4,5,6,7,8,9\r\n\r\nA,B,C,D,E\r\nX,Y,Z"; + char buffer[2*512 +256]; + int i, j, ao; + unsigned int fp; + + foo(buffer); + + for (i=0, j=0; i<6; i++) { + if (ao==0 || outbuffer[fp-3+i] != '\r') + buffer[j++] = outbuffer[fp-3+i]; + } + _xgetw(); +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr41646.c b/gcc/testsuite/gcc.c-torture/compile/pr41646.c new file mode 100644 index 00000000000..f07b6ba19f4 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr41646.c @@ -0,0 +1,28 @@ +/* PR rtl-optimization/41646 */ + +struct A { unsigned long a; }; +struct B { unsigned short b, c, d; }; +struct B bar (unsigned long); + +char * +foo (char *a, struct A *x) +{ + struct B b = bar (x->a); + unsigned char c; + unsigned short d; + a[3] = ((unsigned char) (b.b % 10) + 48); + d = b.b / 10; + a[2] = ((unsigned char) (d % 10) + 48); + d = d / 10; + a[1] = ((unsigned char) (d % 10) + 48); + a[0] = ((unsigned char) ((d / 10) % 10) + 48); + a[4] = 46; + c = (unsigned char) b.c; + a[6] = (c % 10 + 48); + a[5] = ((c / 10) % 10 + 48); + a[7] = 46; + c = b.d; + a[9] = (c % 10 + 48); + a[8] = ((c / 10) % 10 + 48); + return a + 10; +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr41661.c b/gcc/testsuite/gcc.c-torture/compile/pr41661.c new file mode 100644 index 00000000000..658e4288b8d --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr41661.c @@ -0,0 +1,20 @@ +/* PR tree-optimization/41661 */ +/* { dg-do compile } */ +/* { dg-options "-fno-early-inlining" } */ + +int g; + +void foo (int x) +{ + g = x; +} + +void bar (double d) +{ + foo (d == 1); +} + +void baz (int a) +{ + bar (1); +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr41728.c b/gcc/testsuite/gcc.c-torture/compile/pr41728.c new file mode 100644 index 00000000000..df379d93010 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr41728.c @@ -0,0 +1,12 @@ +int a[8]; +int s244(void) +{ + int lrc, j; + lrc = 0; + for (j=0; j<7; j++) + if(a[j] != a[j+1]) + lrc = 1; + if (lrc != 0) + return 0; + return 1; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp b/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp index 573be92673d..a54f3c1b53e 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp @@ -35,7 +35,7 @@ load_lib torture-options.exp load_lib c-torture.exp torture-init -set-torture-options $C_TORTURE_OPTIONS +set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS set additional_flags "" if [istarget "powerpc-*-darwin*"] { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/abs.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/abs.c index 590ded7892b..1e0857f734d 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/abs.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/abs.c @@ -8,6 +8,7 @@ extern void abort (void); typedef __INTMAX_TYPE__ intmax_t; +__attribute__ ((__noinline__)) int abs (int x) { @@ -15,6 +16,7 @@ abs (int x) return x < 0 ? -x : x; } +__attribute__ ((__noinline__)) long labs (long x) { @@ -22,6 +24,7 @@ labs (long x) return x < 0 ? -x : x; } +__attribute__ ((__noinline__)) long long llabs (long long x) { @@ -29,6 +32,7 @@ llabs (long long x) return x < 0 ? -x : x; } +__attribute__ ((__noinline__)) intmax_t imaxabs (intmax_t x) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/bfill.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/bfill.c index c5e9629bd9b..deb6cf5228e 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/bfill.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/bfill.c @@ -1,5 +1,6 @@ extern int inside_main; +__attribute__ ((__noinline__)) void bfill (void *s, __SIZE_TYPE__ n, int ch) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/bzero.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/bzero.c index bcbe3a4383a..a02b5358b37 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/bzero.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/bzero.c @@ -1,5 +1,6 @@ extern int inside_main; +__attribute__ ((__noinline__)) void bzero (void *s, __SIZE_TYPE__ n) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/fprintf.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/fprintf.c index a22db41d800..853a705e86d 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/fprintf.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/fprintf.c @@ -3,6 +3,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) int fprintf (FILE *fp, const char *string, ...) { @@ -19,6 +20,7 @@ fprintf (FILE *fp, const char *string, ...) } /* Locking stdio doesn't matter for the purposes of this test. */ +__attribute__ ((__noinline__)) int fprintf_unlocked (FILE *fp, const char *string, ...) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memchr.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memchr.c index ddab08bcf8d..2f15c57a770 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memchr.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memchr.c @@ -1,6 +1,7 @@ extern void abort(void); extern int inside_main; +__attribute__ ((__noinline__)) void * memchr (const void *s, int c, __SIZE_TYPE__ n) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memcmp.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memcmp.c index 94c0a576634..fd6556d227b 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memcmp.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memcmp.c @@ -1,6 +1,7 @@ extern void abort(void); extern int inside_main; +__attribute__ ((__noinline__)) int memcmp (const void *s1, const void *s2, __SIZE_TYPE__ len) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memmove.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memmove.c index 03faf5e6262..08fcd080148 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memmove.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memmove.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) void * memmove (void *dst, const void *src, __SIZE_TYPE__ n) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/mempcpy.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/mempcpy.c index 67ee3cbe413..bc16da536ff 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/mempcpy.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/mempcpy.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) void * mempcpy (void *dst, const void *src, __SIZE_TYPE__ n) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memset.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memset.c index 4bfa33ea66f..90545abbf24 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memset.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memset.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) void * memset (void *dst, int c, __SIZE_TYPE__ n) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/printf.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/printf.c index 2f8c133177c..4be7578d124 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/printf.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/printf.c @@ -3,6 +3,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) int printf (const char *string, ...) { @@ -20,6 +21,7 @@ printf (const char *string, ...) /* Locking stdio doesn't matter for the purposes of this test. */ +__attribute__ ((__noinline__)) int printf_unlocked (const char *string, ...) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/sprintf.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/sprintf.c index a015d90a64c..3ac447b117f 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/sprintf.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/sprintf.c @@ -3,6 +3,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) int (sprintf) (char *buf, const char *fmt, ...) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/stpcpy.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/stpcpy.c index e6e1a6dae9c..2c7c8178bab 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/stpcpy.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/stpcpy.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) char * stpcpy (char *dst, const char *src) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcat.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcat.c index 2cced80f5d7..d592087a933 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcat.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcat.c @@ -1,6 +1,7 @@ extern int inside_main; extern void abort(void); +__attribute__ ((__noinline__)) char * strcat (char *dst, const char *src) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strchr.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strchr.c index 7ca78d1f356..bee3d3203eb 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strchr.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strchr.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) char * strchr (const char *s, int c) { @@ -19,6 +20,7 @@ strchr (const char *s, int c) } } +__attribute__ ((__noinline__)) char * index (const char *s, int c) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcmp.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcmp.c index 220499ab317..82284546f65 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcmp.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcmp.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) int strcmp (const char *s1, const char *s2) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcpy.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcpy.c index 45c6a45e4da..916446623f9 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcpy.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcpy.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) char * strcpy (char *d, const char *s) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcspn.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcspn.c index 53f609114bb..8270996374a 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcspn.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcspn.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) __SIZE_TYPE__ strcspn (const char *s1, const char *s2) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strlen.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strlen.c index 3ead79d1de5..7f81c115b81 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strlen.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strlen.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) __SIZE_TYPE__ strlen (const char *s) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncat.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncat.c index 290d4cf49bb..7fd334cb4d8 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncat.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncat.c @@ -3,6 +3,7 @@ extern int inside_main; typedef __SIZE_TYPE__ size_t; +__attribute__ ((__noinline__)) char * strncat (char *s1, const char *s2, size_t n) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncmp.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncmp.c index 6599af79044..7a8eb6fd27e 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncmp.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncmp.c @@ -3,6 +3,7 @@ extern int inside_main; typedef __SIZE_TYPE__ size_t; +__attribute__ ((__noinline__)) int strncmp(const char *s1, const char *s2, size_t n) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncpy.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncpy.c index b297345e6ca..a6ec98b054a 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncpy.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncpy.c @@ -3,6 +3,7 @@ extern int inside_main; typedef __SIZE_TYPE__ size_t; +__attribute__ ((__noinline__)) char * strncpy(char *s1, const char *s2, size_t n) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strpbrk.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strpbrk.c index f6bb0321020..0c049272cca 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strpbrk.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strpbrk.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) char * strpbrk(const char *s1, const char *s2) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strrchr.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strrchr.c index c2f7107064c..9a45af3c8e5 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strrchr.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strrchr.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) char * strrchr (const char *s, int c) { @@ -23,6 +24,7 @@ strrchr (const char *s, int c) return 0; } +__attribute__ ((__noinline__)) char * rindex (const char *s, int c) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strspn.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strspn.c index 126c44f263b..622aac6ab38 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strspn.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strspn.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) __SIZE_TYPE__ strcspn (const char *s1, const char *s2) { diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strstr.c b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strstr.c index d803f1ee94b..7d35445063e 100644 --- a/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strstr.c +++ b/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strstr.c @@ -1,6 +1,7 @@ extern void abort (void); extern int inside_main; +__attribute__ ((__noinline__)) char * strstr(const char *s1, const char *s2) { diff --git a/gcc/testsuite/gcc.c-torture/execute/execute.exp b/gcc/testsuite/gcc.c-torture/execute/execute.exp index 9b6bccd0c31..a26e5907639 100644 --- a/gcc/testsuite/gcc.c-torture/execute/execute.exp +++ b/gcc/testsuite/gcc.c-torture/execute/execute.exp @@ -32,7 +32,7 @@ load_lib torture-options.exp load_lib c-torture.exp torture-init -set-torture-options $C_TORTURE_OPTIONS +set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS # # main test loop diff --git a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp index 558829aa5f9..c23f32e85ab 100644 --- a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp +++ b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp @@ -35,7 +35,7 @@ if $tracelevel then { } torture-init -set-torture-options $C_TORTURE_OPTIONS +set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS set additional_flags "-fno-inline" diff --git a/gcc/testsuite/gcc.c-torture/execute/pr40668.c b/gcc/testsuite/gcc.c-torture/execute/pr40668.c index 70fe63f8916..b860dd7c9ec 100644 --- a/gcc/testsuite/gcc.c-torture/execute/pr40668.c +++ b/gcc/testsuite/gcc.c-torture/execute/pr40668.c @@ -1,3 +1,8 @@ +#if (__SIZEOF_INT__ == 2) +#define TESTVALUE 0x1234 +#else +#define TESTVALUE 0x12345678 +#endif static void foo (unsigned int x, void *p) { @@ -10,7 +15,7 @@ bar (int type, void *number) switch (type) { case 1: - foo (0x12345678, number); + foo (TESTVALUE, number); break; case 7: foo (0, number); @@ -29,7 +34,7 @@ main (void) { unsigned int x; bar (1, &x); - if (x != 0x12345678) + if (x != TESTVALUE) __builtin_abort (); return 0; } diff --git a/gcc/testsuite/gcc.c-torture/execute/pr41750.c b/gcc/testsuite/gcc.c-torture/execute/pr41750.c new file mode 100644 index 00000000000..3f5cb635d16 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr41750.c @@ -0,0 +1,68 @@ +/* PR 41750 - IPA-SRA used to pass hash->sgot by value rather than by + reference. */ + +struct bfd_link_hash_table +{ + int hash; +}; + +struct foo_link_hash_table +{ + struct bfd_link_hash_table root; + int *dynobj; + int *sgot; +}; + +struct foo_link_info +{ + struct foo_link_hash_table *hash; +}; + +extern void abort (void); + +int __attribute__((noinline)) +foo_create_got_section (int *abfd, struct foo_link_info *info) +{ + info->hash->sgot = abfd; + return 1; +} + +static int * +get_got (int *abfd, struct foo_link_info *info, + struct foo_link_hash_table *hash) +{ + int *got; + int *dynobj; + + got = hash->sgot; + if (!got) + { + dynobj = hash->dynobj; + if (!dynobj) + hash->dynobj = dynobj = abfd; + if (!foo_create_got_section (dynobj, info)) + return 0; + got = hash->sgot; + } + return got; +} + +int * __attribute__((noinline,noclone)) +elf64_ia64_check_relocs (int *abfd, struct foo_link_info *info) +{ + return get_got (abfd, info, info->hash); +} + +struct foo_link_info link_info; +struct foo_link_hash_table hash; +int abfd; + +int +main () +{ + link_info.hash = &hash; + if (elf64_ia64_check_relocs (&abfd, &link_info) != &abfd) + abort (); + return 0; +} + diff --git a/gcc/testsuite/gcc.c-torture/execute/pr41917.c b/gcc/testsuite/gcc.c-torture/execute/pr41917.c new file mode 100644 index 00000000000..4a9ada921c4 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr41917.c @@ -0,0 +1,21 @@ +/* PR rtl-optimization/41917 */ + +extern void abort (void); +unsigned int a = 1; + +int +main (void) +{ + unsigned int b, c, d; + + if (sizeof (int) != 4 || (int) 0xc7d24b5e > 0) + return 0; + + c = 0xc7d24b5e; + d = a | -2; + b = (d == 0) ? c : (c % d); + if (b != c) + abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr41919.c b/gcc/testsuite/gcc.c-torture/execute/pr41919.c new file mode 100644 index 00000000000..4ca09141b5e --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr41919.c @@ -0,0 +1,39 @@ +extern void abort (void); + +#define assert(x) if(!(x)) abort() + +struct S1 +{ + char f0; +}; + +int g_23 = 0; + +static struct S1 +foo (void) +{ + int *l_100 = &g_23; + int **l_110 = &l_100; + struct S1 l_128 = { 1 }; + assert (l_100 == &g_23); + assert (l_100 == &g_23); + assert (l_100 == &g_23); + assert (l_100 == &g_23); + assert (l_100 == &g_23); + assert (l_100 == &g_23); + assert (l_100 == &g_23); + return l_128; +} + +static char bar(char si1, char si2) +{ + return (si1 <= 0) ? si1 : (si2 * 2); +} +int main (void) +{ + struct S1 s = foo(); + if (bar(0x99 ^ (s.f0 && 1), 1) != -104) + abort (); + return 0; +} + diff --git a/gcc/testsuite/gcc.c-torture/execute/pr41935.c b/gcc/testsuite/gcc.c-torture/execute/pr41935.c new file mode 100644 index 00000000000..ef8d08ce023 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr41935.c @@ -0,0 +1,25 @@ +/* PR middle-end/41935 */ + +extern void abort (void); + +long int +foo (int n, int i, int j) +{ + typedef int T[n]; + struct S { int a; T b[n]; }; + return __builtin_offsetof (struct S, b[i][j]); +} + +int +main (void) +{ + typedef int T[5]; + struct S { int a; T b[5]; }; + if (foo (5, 2, 3) + != __builtin_offsetof (struct S, b) + (5 * 2 + 3) * sizeof (int)) + abort (); + if (foo (5, 5, 5) + != __builtin_offsetof (struct S, b) + (5 * 5 + 5) * sizeof (int)) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp b/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp index 4a8ebe75c5e..def4bc5afb6 100644 --- a/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp +++ b/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp @@ -33,7 +33,7 @@ load_lib c-torture.exp load_lib torture-options.exp torture-init -set-torture-options $C_TORTURE_OPTIONS +set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS # # This loop will run c-torture on any *.c file found in this directory. |