annotate t2.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 "t.h"
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3
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 void (*x)(test *t);
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
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 void
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 dosomething(test *t)
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 {
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11 t->bit = 1;
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 }
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 void
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15 doinstall()
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 x = dosomething;
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18 }
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20 int
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 dotest(test *t)
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 {
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23 t->bit = 0;
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 x(t);
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27 if (t->bit) {
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 return 0;
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29 }
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31 return 1;
e0a26cc60a20 Test for solaris cc bug with bit-fields.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 }