comparison gcc/testsuite/g++.dg/tree-ssa/strlenopt-1.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
comparison
equal deleted inserted replaced
131:84e7813d76e9 145:1830386684a0
1 /* PR tree-optimization/92765 - wrong code for strcmp of a union member
2 { dg-do run }
3 { dg-options "-O2 -Wall" } */
4
5 typedef __SIZE_TYPE__ size_t;
6
7 inline void* operator new (size_t, void *p)
8 {
9 return p;
10 }
11
12 struct A { char a2[2]; };
13 struct B { char a4[4]; };
14
15 __attribute__((noipa)) void
16 sink (void*) { }
17
18 __attribute__((noipa)) void
19 copy (char *d, const char *s)
20 {
21 while ((*d++ = *s++));
22 }
23
24 __attribute__((noipa)) void
25 store_and_compare (void *p)
26 {
27 A *a = new (p) A;
28 sink (a->a2);
29
30 B *b = new (p) B;
31 char *q = (char *) b->a4;
32 copy (q, "abc");
33
34 if (__builtin_strcmp (q, "abc"))
35 __builtin_abort ();
36 }
37
38 int main ()
39 {
40 char a [sizeof (A) > sizeof (B) ? sizeof (A) : sizeof (B)];
41 store_and_compare (a);
42 }