summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.c-torture')
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr40556.c11
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr41182-1.c6
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr41634.c19
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr41646.c28
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr41661.c20
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr41728.c12
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/abs.c4
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/bfill.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/bzero.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/fprintf.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/memchr.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/memcmp.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/memmove.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/mempcpy.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/memset.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/printf.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/sprintf.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/stpcpy.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcat.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strchr.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcmp.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcpy.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strcspn.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strlen.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncat.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncmp.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncpy.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strpbrk.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strrchr.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strspn.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/lib/strstr.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/execute.exp2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr40668.c9
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr41750.c68
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr41917.c21
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr41919.c39
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr41935.c25
-rw-r--r--gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp2
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.