annotate gcc/testsuite/gcc.dg/tree-ssa/pr69196-1.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do compile { target sparc*-*-* i?86-*-* x86_64-*-* } } */
kono
parents:
diff changeset
2 /* { dg-options "-O2 -fdump-tree-thread1-details -fdisable-tree-ethread" } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 /* { dg-final { scan-tree-dump "FSM did not thread around loop and would copy too many statements" "thread1" } } */
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 typedef __builtin_va_list __gnuc_va_list;
kono
parents:
diff changeset
8 typedef __gnuc_va_list va_list;
kono
parents:
diff changeset
9 extern void rtems_putc(char c);
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 void vprintk(
kono
parents:
diff changeset
12 const char *fmt,
kono
parents:
diff changeset
13 va_list ap
kono
parents:
diff changeset
14 )
kono
parents:
diff changeset
15 {
kono
parents:
diff changeset
16 for (; *fmt != '\0'; fmt++) {
kono
parents:
diff changeset
17 unsigned base = 0;
kono
parents:
diff changeset
18 unsigned width = 0;
kono
parents:
diff changeset
19 enum {
kono
parents:
diff changeset
20 LFLAG_INT,
kono
parents:
diff changeset
21 LFLAG_LONG,
kono
parents:
diff changeset
22 LFLAG_LONG_LONG
kono
parents:
diff changeset
23 } lflag = LFLAG_INT;
kono
parents:
diff changeset
24 _Bool minus = 0;
kono
parents:
diff changeset
25 _Bool sign = 0;
kono
parents:
diff changeset
26 char lead = ' ';
kono
parents:
diff changeset
27 char c = *fmt;
kono
parents:
diff changeset
28 long long num;
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 if (c != '%') {
kono
parents:
diff changeset
31 rtems_putc(c);
kono
parents:
diff changeset
32 continue;
kono
parents:
diff changeset
33 }
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 ++fmt; c = *fmt;
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 if (c == '0') {
kono
parents:
diff changeset
38 lead = '0';
kono
parents:
diff changeset
39 ++fmt; c = *fmt;
kono
parents:
diff changeset
40 }
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 if (c == '-') {
kono
parents:
diff changeset
43 minus = 1;
kono
parents:
diff changeset
44 ++fmt; c = *fmt;
kono
parents:
diff changeset
45 }
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 while (c >= '0' && c <= '9' ) {
kono
parents:
diff changeset
48 width *= 10;
kono
parents:
diff changeset
49 width += ((unsigned) c - '0');
kono
parents:
diff changeset
50 ++fmt; c = *fmt;
kono
parents:
diff changeset
51 }
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 if (c == 'l') {
kono
parents:
diff changeset
54 lflag = LFLAG_LONG;
kono
parents:
diff changeset
55 ++fmt; c = *fmt;
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 if (c == 'l') {
kono
parents:
diff changeset
58 lflag = LFLAG_LONG_LONG;
kono
parents:
diff changeset
59 ++fmt; c = *fmt;
kono
parents:
diff changeset
60 }
kono
parents:
diff changeset
61 }
kono
parents:
diff changeset
62
kono
parents:
diff changeset
63 if ( c == 'c' ) {
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 char chr = (char) __builtin_va_arg(ap,int);
kono
parents:
diff changeset
66 rtems_putc(chr);
kono
parents:
diff changeset
67 continue;
kono
parents:
diff changeset
68 }
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 if ( c == 's' ) {
kono
parents:
diff changeset
71 unsigned i, len;
kono
parents:
diff changeset
72 char *s, *str;
kono
parents:
diff changeset
73
kono
parents:
diff changeset
74 str = __builtin_va_arg(ap,char *);
kono
parents:
diff changeset
75
kono
parents:
diff changeset
76 if ( str == ((void *)0) ) {
kono
parents:
diff changeset
77 str = "";
kono
parents:
diff changeset
78 }
kono
parents:
diff changeset
79
kono
parents:
diff changeset
80
kono
parents:
diff changeset
81 for ( len=0, s=str ; *s ; len++, s++ )
kono
parents:
diff changeset
82 ;
kono
parents:
diff changeset
83
kono
parents:
diff changeset
84
kono
parents:
diff changeset
85 if ( !minus )
kono
parents:
diff changeset
86 for ( i=len ; i<width ; i++ )
kono
parents:
diff changeset
87 rtems_putc(' ');
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90 if (width == 0) {
kono
parents:
diff changeset
91 width = len;
kono
parents:
diff changeset
92 }
kono
parents:
diff changeset
93
kono
parents:
diff changeset
94
kono
parents:
diff changeset
95 for ( i=0 ; i<width && *str ; str++ )
kono
parents:
diff changeset
96 rtems_putc(*str);
kono
parents:
diff changeset
97
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 if ( minus )
kono
parents:
diff changeset
100 for ( i=len ; i<width ; i++ )
kono
parents:
diff changeset
101 rtems_putc(' ');
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 continue;
kono
parents:
diff changeset
104 }
kono
parents:
diff changeset
105
kono
parents:
diff changeset
106
kono
parents:
diff changeset
107 if ( c == 'o' || c == 'O' ) {
kono
parents:
diff changeset
108 base = 8; sign = 0;
kono
parents:
diff changeset
109 } else if ( c == 'i' || c == 'I' ||
kono
parents:
diff changeset
110 c == 'd' || c == 'D' ) {
kono
parents:
diff changeset
111 base = 10; sign = 1;
kono
parents:
diff changeset
112 } else if ( c == 'u' || c == 'U' ) {
kono
parents:
diff changeset
113 base = 10; sign = 0;
kono
parents:
diff changeset
114 } else if ( c == 'x' || c == 'X' ) {
kono
parents:
diff changeset
115 base = 16; sign = 0;
kono
parents:
diff changeset
116 } else if ( c == 'p' ) {
kono
parents:
diff changeset
117 base = 16; sign = 0; lflag = LFLAG_LONG;
kono
parents:
diff changeset
118 } else {
kono
parents:
diff changeset
119 rtems_putc(c);
kono
parents:
diff changeset
120 continue;
kono
parents:
diff changeset
121 }
kono
parents:
diff changeset
122
kono
parents:
diff changeset
123 switch (lflag) {
kono
parents:
diff changeset
124 case LFLAG_LONG:
kono
parents:
diff changeset
125 num = sign ? (long long) __builtin_va_arg(ap,long)
kono
parents:
diff changeset
126 : (long long) __builtin_va_arg(ap,unsigned long);
kono
parents:
diff changeset
127 break;
kono
parents:
diff changeset
128 case LFLAG_LONG_LONG:
kono
parents:
diff changeset
129 num = __builtin_va_arg(ap,long long);
kono
parents:
diff changeset
130 break;
kono
parents:
diff changeset
131 case LFLAG_INT:
kono
parents:
diff changeset
132 default:
kono
parents:
diff changeset
133 num = sign ? (long long) __builtin_va_arg(ap,int)
kono
parents:
diff changeset
134 : (long long) __builtin_va_arg(ap,unsigned int);
kono
parents:
diff changeset
135 break;
kono
parents:
diff changeset
136 }
kono
parents:
diff changeset
137 }
kono
parents:
diff changeset
138 }