00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 #ifndef cxx_ipa_summary_INCLUDED
00052 #define cxx_ipa_summary_INCLUDED
00053
00054 class IPA_NODE;
00055 class IP_FILE_HDR;
00056 class SUMMARY_FILE_HEADER;
00057 class SUMMARY_PROCEDURE;
00058 class SUMMARY_SYMBOL;
00059 class SUMMARY_GLOBAL;
00060 class SUMMARY_CALLSITE;
00061 class SUMMARY_VALUE;
00062 class SUMMARY_FORMAL;
00063 class SUMMARY_ACTUAL;
00064 class SUMMARY_COMMON;
00065 class SUMMARY_COMMON_SHAPE;
00066 class SUMMARY_CONTROL_DEPENDENCE;
00067 class SUMMARY_STMT;
00068 class SUMMARY_STID;
00069 class SUMMARY_EXPR;
00070 class SUMMARY_PHI;
00071 class SUMMARY_CHI;
00072 class SUMMARY_FEEDBACK;
00073 class CFG_NODE_INFO;
00074 class REGION_ARRAYS;
00075 class PROJECTED_REGION;
00076 class PROJECTED_NODE;
00077 class LOOPINFO;
00078 class TERM;
00079 class IVAR;
00080 class SCALAR_INFO;
00081 class SUMMARY_STRUCT_ACCESS;
00082 #ifdef KEY
00083 class SUMMARY_TY_INFO;
00084 #endif
00085
00086 class IPL_SUMMARY_PTRS
00087 {
00088 private:
00089 void* _summary;
00090 void* _array_summary;
00091
00092 public:
00093 IPL_SUMMARY_PTRS (void* summary, void* array_summary) :
00094 _summary (summary),
00095 _array_summary (array_summary)
00096 {}
00097
00098 void* Summary() const { return _summary; }
00099 void* Array_Summary() const { return _array_summary; }
00100 };
00101
00102 inline SUMMARY_FILE_HEADER*
00103 IPA_get_file_header (char* summary_base)
00104 {
00105 Elf64_Word offset = *((Elf64_Word *) summary_base);
00106 return (SUMMARY_FILE_HEADER *) (summary_base + offset);
00107 }
00108
00109 extern SUMMARY_VALUE*
00110 IPA_get_value_file_array (const IP_FILE_HDR& hdr, INT32& size);
00111
00112 extern SUMMARY_FORMAL*
00113 IPA_get_formal_file_array (const IP_FILE_HDR& hdr, INT32& size);
00114
00115 extern SUMMARY_ACTUAL*
00116 IPA_get_actual_file_array (const IP_FILE_HDR& hdr, INT32& size);
00117
00118 extern IVAR*
00119 IPA_get_ivar_file_array (const IP_FILE_HDR& hdr, INT32& size);
00120
00121 #ifdef _STANDALONE_INLINER
00122
00123
00124
00125
00126
00127
00128
00129 SUMMARY_PROCEDURE*
00130 IPA_get_procedure_file_array (const IP_FILE_HDR& hdr, INT32& size);
00131 SUMMARY_SYMBOL*
00132 IPA_get_symbol_file_array (const IP_FILE_HDR& hdr, INT32& size);
00133 SUMMARY_GLOBAL*
00134 IPA_get_global_file_array (const IP_FILE_HDR& hdr, INT32& size);
00135 SUMMARY_STRUCT_ACCESS*
00136 IPA_get_struct_access_file_array (const IP_FILE_HDR& hdr, INT32& size);
00137 #ifdef KEY
00138 SUMMARY_TY_INFO*
00139 IPA_get_ty_info_file_array (const IP_FILE_HDR& hdr, INT32& size);
00140 #endif
00141
00142
00143
00144
00145
00146
00147
00148 SUMMARY_PROCEDURE*
00149 IPA_get_procedure_array (const IPA_NODE* node);
00150 SUMMARY_SYMBOL*
00151 IPA_get_symbol_array (const IPA_NODE* node);
00152 SUMMARY_GLOBAL*
00153 IPA_get_global_array (const IPA_NODE* node);
00154 SUMMARY_CALLSITE*
00155 IPA_get_callsite_array (const IPA_NODE* node);
00156 SUMMARY_FORMAL*
00157 IPA_get_formal_array (const IPA_NODE* node);
00158 SUMMARY_ACTUAL*
00159 IPA_get_actual_array (const IPA_NODE* node);
00160 SUMMARY_FEEDBACK*
00161 IPA_get_feedback_array (const IPA_NODE* node);
00162
00163 #else // _STANDALONE_INLINER
00164
00165
00166
00167
00168
00169 SUMMARY_PROCEDURE*
00170 IPA_get_procedure_file_array (const IP_FILE_HDR& hdr, INT32& size);
00171 SUMMARY_SYMBOL*
00172 IPA_get_symbol_file_array (const IP_FILE_HDR& hdr, INT32& size);
00173 SUMMARY_COMMON*
00174 IPA_get_common_file_array (const IP_FILE_HDR& hdr, INT32& size);
00175 IVAR*
00176 IPA_get_ivar_file_array (const IP_FILE_HDR& hdr, INT32& size);
00177 SUMMARY_GLOBAL*
00178 IPA_get_global_file_array (const IP_FILE_HDR& hdr, INT32& size);
00179 SUMMARY_VALUE*
00180 IPA_get_value_file_array (const IP_FILE_HDR& hdr, INT32& size);
00181 SUMMARY_FORMAL*
00182 IPA_get_formal_file_array (const IP_FILE_HDR& hdr, INT32& size);
00183 SUMMARY_ACTUAL*
00184 IPA_get_actual_file_array (const IP_FILE_HDR& hdr, INT32& size);
00185 SUMMARY_CALLSITE*
00186 IPA_get_callsite_file_array (const IP_FILE_HDR& hdr, INT32& size);
00187 SUMMARY_STRUCT_ACCESS*
00188 IPA_get_struct_access_file_array (const IP_FILE_HDR& hdr, INT32& size);
00189 #ifdef KEY
00190 SUMMARY_TY_INFO*
00191 IPA_get_ty_info_file_array (const IP_FILE_HDR& hdr, INT32& size);
00192 #endif
00193
00194
00195
00196
00197
00198
00199
00200 SUMMARY_PROCEDURE* IPA_get_procedure_array (const IPA_NODE* node);
00201 SUMMARY_SYMBOL* IPA_get_symbol_array (const IPA_NODE* node);
00202 IVAR* IPA_get_ivar_array (const IPA_NODE* node, INT32& size);
00203
00204
00205
00206
00207
00208 SUMMARY_CALLSITE* IPA_get_callsite_array (const IPA_NODE* node);
00209 SUMMARY_FORMAL* IPA_get_formal_array (const IPA_NODE* node);
00210 SUMMARY_ACTUAL* IPA_get_actual_array (const IPA_NODE* node);
00211 SUMMARY_VALUE* IPA_get_value_array (const IPA_NODE* node);
00212 SUMMARY_GLOBAL* IPA_get_global_array (const IPA_NODE* node);
00213 SUMMARY_COMMON* IPA_get_common_array (const IPA_NODE* node);
00214 SUMMARY_COMMON_SHAPE* IPA_get_common_shape_array (const IPA_NODE* node);
00215 SUMMARY_CONTROL_DEPENDENCE* IPA_get_ctrl_dep_array(const IPA_NODE* node);
00216 SUMMARY_STMT* IPA_get_stmt_array (const IPA_NODE* node);
00217 SUMMARY_STID* IPA_get_stid_array (const IPA_NODE* node);
00218 SUMMARY_EXPR* IPA_get_expr_array (const IPA_NODE* node);
00219 SUMMARY_PHI* IPA_get_phi_array (const IPA_NODE* node);
00220 SUMMARY_CHI* IPA_get_chi_array (const IPA_NODE* node);
00221 CFG_NODE_INFO* IPA_get_cfg_node_array (const IPA_NODE* node);
00222 REGION_ARRAYS* IPA_get_region_array (const IPA_NODE* node);
00223 PROJECTED_REGION* IPA_get_proj_region_array (const IPA_NODE* node);
00224 PROJECTED_NODE* IPA_get_projected_node_array (const IPA_NODE* node);
00225 LOOPINFO* IPA_get_loopinfo_array (const IPA_NODE* node);
00226 TERM* IPA_get_term_array (const IPA_NODE* node);
00227 SCALAR_INFO* IPA_get_scalar_array (const IPA_NODE* node);
00228 SUMMARY_FEEDBACK* IPA_get_feedback_array (const IPA_NODE* node);
00229
00230 #endif // _STANDALONE_INLINER
00231
00232
00233
00234 #endif // cxx_ipa_summary_INCLUDED