131
|
1 /* { dg-options "-O2 -save-temps" } */
|
|
2
|
|
3 #include <stdio.h>
|
|
4
|
|
5 __attribute__((noinline,noclone)) void
|
|
6 sink(const char *s) {
|
|
7 asm("" :: "r"(s));
|
|
8 }
|
|
9
|
|
10 void
|
|
11 foo(int ch) {
|
|
12 switch (ch) {
|
|
13 case 100: sink("100"); break;
|
|
14 case 10: sink("10"); break;
|
|
15 case 1: sink("1"); break;
|
|
16 }
|
|
17 }
|
|
18
|
|
19 int main()
|
|
20 {
|
|
21 for (int i = 0; i < 10000; i++)
|
|
22 {
|
|
23 int v;
|
|
24 if (i % 100 == 0)
|
|
25 v = 100;
|
|
26 else if(i % 10 == 0)
|
|
27 v = 10;
|
|
28 else
|
|
29 v = 1;
|
|
30 foo(v);
|
|
31 }
|
|
32 }
|
|
33
|
|
34 /* { dg-final-use-not-autofdo { scan-assembler "\n_?foo:\n.*cmp.*1,.*cmp.*10,.*cmp.*100" { target i?86-*-* x86_64-*-* } } } */
|