OSDN Git Service

Improve vzeroupper optimization.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.target / i386 / avx-vzeroupper-24.c
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -mavx -mtune=generic -dp" } */
3
4 typedef struct bitmap_element_def {
5   struct bitmap_element_def *next;
6   unsigned int indx;
7 } bitmap_element;
8 typedef struct bitmap_head_def {
9   bitmap_element *first;
10   bitmap_element *current;
11   unsigned int indx;
12 } bitmap_head;
13 typedef struct bitmap_head_def *bitmap;
14 typedef const struct bitmap_head_def *const_bitmap;
15 extern void bar (void) __attribute__ ((__noreturn__));
16 unsigned char
17 bitmap_and_compl_into (bitmap a, const_bitmap b)
18 {
19   bitmap_element *a_elt = a->first;
20   const bitmap_element *b_elt = b->first;
21   if (a == b)
22     {
23       if ((!(a)->first))
24         return 0;
25       else
26         return 1;
27     }
28   while (a_elt && b_elt)
29     {
30       if (a_elt->indx < b_elt->indx)
31         a_elt = a_elt->next;
32     }
33   if (a->indx == a->current->indx)
34     bar ();
35   return 0;
36 }
37
38 /* { dg-final { scan-assembler-not "avx_vzeroupper" } } */