GCC Wikia
Advertisement

このページを編集する際は,編集に関する方針に従ってください.[]

概要[]

  • gcc-4.1.0/gcc/tree.hにて定義
  • gcc の内部データ表現における木構造の,整数定数ノードを表現する.

先頭の,struct tree_common 型 common は,必ず先頭位置でなければならない.
gcc 内部では,整数を 2 ワード (HOST_WIDE_INT) で表現しているようだ.データに符号がある場合は,実際には 2 words を使用しなくとも,2 words の符号拡張型に型拡張される.
2 words の必要がない unsigned short などでは,不要ビットは全て 0 になるらしい.

1075 /* In an INTEGER_CST node.  These two together make a 2-word integer.
1076    If the data type is signed, the value is sign-extended to 2 words
1077    even though not all of them may really be in use.
1078    In an unsigned constant shorter than 2 words, the extra bits are 0.  */

実装[]

1095 struct tree_int_cst GTY(())
1096 {
1097   struct tree_common common;

  • const_hash という関数では,整数値の上位ワードと下位ワードをまとめて扱いたいので,ポインタの強制型キャストなどの便宜をはかるために,サブ構造体 struct tree_int_cst_lowhi は必ずこの位置でなければならないらしい.

1098   /* A sub-struct is necessary here because the function `const_hash'
1099      wants to scan both words as a unit and taking the address of the
1100      sub-struct yields the properly inclusive bounded pointer.  */


1101   struct tree_int_cst_lowhi {
1102     unsigned HOST_WIDE_INT low;
1103     HOST_WIDE_INT high;
1104   } int_cst;
1105 };



リンク元

Advertisement