Last change
on this file since 455 was 331, checked in by coas-nagasima, 6 years ago |
prototoolに関連するプロジェクトをnewlibからmuslを使うよう変更・更新
ntshellをnewlibの下位の実装から、muslのsyscallの実装に変更・更新
以下のOSSをアップデート
・mruby-1.3.0
・musl-1.1.18
・onigmo-6.1.3
・tcc-0.9.27
以下のOSSを追加
・openssl-1.1.0e
・curl-7.57.0
・zlib-1.2.11
以下のmrbgemsを追加
・iij/mruby-digest
・iij/mruby-env
・iij/mruby-errno
・iij/mruby-iijson
・iij/mruby-ipaddr
・iij/mruby-mock
・iij/mruby-require
・iij/mruby-tls-openssl
|
-
Property svn:eol-style
set to
native
-
Property svn:mime-type
set to
text/x-csrc
|
File size:
1.4 KB
|
Line | |
---|
1 | /* This checks if enums needing 8 bit but only having positive
|
---|
2 | values are correctly zero extended (instead of sign extended)
|
---|
3 | when stored into/loaded from a 8 bit bit-field of enum type (which
|
---|
4 | itself is implementation defined, so isn't necessarily supported by all
|
---|
5 | other compilers). */
|
---|
6 | enum tree_code {
|
---|
7 | SOME_CODE = 148, /* has bit 7 set, and hence all further enum values as well */
|
---|
8 | LAST_AND_UNUSED_TREE_CODE
|
---|
9 | };
|
---|
10 | typedef union tree_node *tree;
|
---|
11 | struct tree_common
|
---|
12 | {
|
---|
13 | union tree_node *chain;
|
---|
14 | union tree_node *type;
|
---|
15 | enum tree_code code : 8;
|
---|
16 | unsigned side_effects_flag : 1;
|
---|
17 | };
|
---|
18 | union tree_node
|
---|
19 | {
|
---|
20 | struct tree_common common;
|
---|
21 | };
|
---|
22 | enum c_tree_code {
|
---|
23 | C_DUMMY_TREE_CODE = LAST_AND_UNUSED_TREE_CODE,
|
---|
24 | STMT_EXPR,
|
---|
25 | LAST_C_TREE_CODE
|
---|
26 | };
|
---|
27 | enum cplus_tree_code {
|
---|
28 | CP_DUMMY_TREE_CODE = LAST_C_TREE_CODE,
|
---|
29 | AMBIG_CONV,
|
---|
30 | LAST_CPLUS_TREE_CODE
|
---|
31 | };
|
---|
32 |
|
---|
33 | extern int printf(const char *, ...);
|
---|
34 | int blah(){return 0;}
|
---|
35 |
|
---|
36 | int convert_like_real (tree convs)
|
---|
37 | {
|
---|
38 | switch (((enum tree_code) (convs)->common.code))
|
---|
39 | {
|
---|
40 | case AMBIG_CONV: /* This has bit 7 set, which must not be the sign
|
---|
41 | bit in tree_common.code, i.e. the bitfield must
|
---|
42 | be somehow marked unsigned. */
|
---|
43 | return blah();
|
---|
44 | default:
|
---|
45 | break;
|
---|
46 | };
|
---|
47 | printf("unsigned enum bit-fields broken\n");
|
---|
48 | }
|
---|
49 |
|
---|
50 | int main()
|
---|
51 | {
|
---|
52 | union tree_node convs;
|
---|
53 |
|
---|
54 | convs.common.code = AMBIG_CONV;
|
---|
55 | convert_like_real (&convs);
|
---|
56 | return 0;
|
---|
57 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.