1 /* Copyright (C) 2002 Free Software Foundation.
3 Test memset with various combinations of constant pointer alignments and
4 lengths to make sure any optimizations in the compiler are correct.
6 Written by Roger Sayle, July 22, 2002. */
9 #define MAX_OFFSET (sizeof (long long))
17 #define MAX_EXTRA (sizeof (long long))
20 #define MAX_LENGTH (MAX_OFFSET + MAX_COPY + MAX_EXTRA)
34 for (i = 0; i < MAX_LENGTH; i++)
38 void check (int off, int len, int ch)
44 for (i = 0; i < off; i++, q++)
48 for (i = 0; i < len; i++, q++)
52 for (i = 0; i < MAX_EXTRA; i++, q++)
63 for (len = 0; len < MAX_COPY; len++)
67 p = memset (u.buf, '\0', len);
68 if (p != u.buf) abort ();
71 p = memset (u.buf, A, len);
72 if (p != u.buf) abort ();
75 p = memset (u.buf, 'B', len);
76 if (p != u.buf) abort ();
81 for (len = 0; len < MAX_COPY; len++)
85 p = memset (u.buf+1, '\0', len);
86 if (p != u.buf+1) abort ();
89 p = memset (u.buf+1, A, len);
90 if (p != u.buf+1) abort ();
93 p = memset (u.buf+1, 'B', len);
94 if (p != u.buf+1) abort ();
99 for (len = 0; len < MAX_COPY; len++)
103 p = memset (u.buf+2, '\0', len);
104 if (p != u.buf+2) abort ();
105 check (2, len, '\0');
107 p = memset (u.buf+2, A, len);
108 if (p != u.buf+2) abort ();
111 p = memset (u.buf+2, 'B', len);
112 if (p != u.buf+2) abort ();
117 for (len = 0; len < MAX_COPY; len++)
121 p = memset (u.buf+3, '\0', len);
122 if (p != u.buf+3) abort ();
123 check (3, len, '\0');
125 p = memset (u.buf+3, A, len);
126 if (p != u.buf+3) abort ();
129 p = memset (u.buf+3, 'B', len);
130 if (p != u.buf+3) abort ();
135 for (len = 0; len < MAX_COPY; len++)
139 p = memset (u.buf+4, '\0', len);
140 if (p != u.buf+4) abort ();
141 check (4, len, '\0');
143 p = memset (u.buf+4, A, len);
144 if (p != u.buf+4) abort ();
147 p = memset (u.buf+4, 'B', len);
148 if (p != u.buf+4) abort ();
153 for (len = 0; len < MAX_COPY; len++)
157 p = memset (u.buf+5, '\0', len);
158 if (p != u.buf+5) abort ();
159 check (5, len, '\0');
161 p = memset (u.buf+5, A, len);
162 if (p != u.buf+5) abort ();
165 p = memset (u.buf+5, 'B', len);
166 if (p != u.buf+5) abort ();
171 for (len = 0; len < MAX_COPY; len++)
175 p = memset (u.buf+6, '\0', len);
176 if (p != u.buf+6) abort ();
177 check (6, len, '\0');
179 p = memset (u.buf+6, A, len);
180 if (p != u.buf+6) abort ();
183 p = memset (u.buf+6, 'B', len);
184 if (p != u.buf+6) abort ();
189 for (len = 0; len < MAX_COPY; len++)
193 p = memset (u.buf+7, '\0', len);
194 if (p != u.buf+7) abort ();
195 check (7, len, '\0');
197 p = memset (u.buf+7, A, len);
198 if (p != u.buf+7) abort ();
201 p = memset (u.buf+7, 'B', len);
202 if (p != u.buf+7) abort ();