Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/tree-ssa/strlenopt-1.C @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 1830386684a0 |
children |
line wrap: on
line source
/* PR tree-optimization/92765 - wrong code for strcmp of a union member { dg-do run } { dg-options "-O2 -Wall" } */ typedef __SIZE_TYPE__ size_t; inline void* operator new (size_t, void *p) { return p; } struct A { char a2[2]; }; struct B { char a4[4]; }; __attribute__((noipa)) void sink (void*) { } __attribute__((noipa)) void copy (char *d, const char *s) { while ((*d++ = *s++)); } __attribute__((noipa)) void store_and_compare (void *p) { A *a = new (p) A; sink (a->a2); B *b = new (p) B; char *q = (char *) b->a4; copy (q, "abc"); if (__builtin_strcmp (q, "abc")) __builtin_abort (); } int main () { char a [sizeof (A) > sizeof (B) ? sizeof (A) : sizeof (B)]; store_and_compare (a); }