annotate t.c @ 0:e0a26cc60a20 default tip

Test for solaris cc bug with bit-fields. With "cc -fast" (or, rather, "cc -xalias_level=basic -xO3", implied by "cc -fast") solaris cc compiles incorrect code for bit-field accesses, notably not rechecking data after functions calls in some situations. Using "-xalias_level=any" resolves the problem (as well as using any non-bit-field type). Tested cc version is "Sun C 5.9 SunOS_i386 2007/05/03" (Sun Studio 12).
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 16 Aug 2011 22:09:57 +0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2 #include <stdio.h>
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 #include "t.h"
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 int
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6 main(void)
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 {
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8 test t;
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 doinstall();
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 if (dotest(&t) == 0) {
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13 printf("ok\n");
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 return 0;
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15 }
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 printf("not ok\n");
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18 return 1;
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 }