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
|
Rev | Line | |
---|
[331] | 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.