Mercurial > hg > CbC > CbC_gcc
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 } |