GCC Wikia
Advertisement

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

概要[]

build_* は,みんな木構造のノードの構築関数.build_string は,やっていることがわかりやすい.これを見れば,tree.h tree.c tree.def あたりで何をやっているのかが大体わかる.

  1. build_int_cst* とかは,整数の大きさに応じてキャッシュを保持したりいろいろしている.

引数[]

  • len
    • 文字列の長さ
  • char* str
    • 文字列定数

実装[]

1048 tree
1049 build_string (int len, const char *str)
1050 {
1051   tree s;
1052   size_t length;
1053   
1054   length = len + sizeof (struct tree_string);
1055 
1056 #ifdef GATHER_STATISTICS
1057   tree_node_counts[(int) c_kind]++;
1058   tree_node_sizes[(int) c_kind] += length;
1059 #endif  
1060 
1061   s = ggc_alloc_tree (length);
1062 
1063   memset (s, 0, sizeof (struct tree_common));
1064   TREE_SET_CODE (s, STRING_CST);
1065   TREE_CONSTANT (s) = 1;
1066   TREE_INVARIANT (s) = 1;
1067   TREE_STRING_LENGTH (s) = len;
1068   memcpy ((char *) TREE_STRING_POINTER (s), str, len);

1069   ( ( char *) TREE_STRING_POINTER (s))[len] = '\0';
1070 
1071   return s;
1072 }


リンク元

Advertisement