gcc phi 구조 체

3019 단어 gcc
gcc phi 구조 체
phi 는 gcc 에서 중요 한 데이터 구조 유형 으로 주로 ssa 의 별명 처리 에 사 용 됩 니 다. 본 고 는 주로 그의 역할, 관련 데이터 구조 체 와 핵심 처리 함수 에 대해 설명 합 니 다.
1. 역할 phi 는 주로 별명 처리 에 사용 되 며, ssa 단계 에서 분기 로 인해 구체 적 으로 어떤 데이터 인지 알 수 없 으 며, phi. 2. 주요 데이터 구 조 를 사용 합 니 다.
struct GTY(()) phi_arg_d {
  /* imm_use MUST be the first element in struct because we do some
     pointer arithmetic with it.  See phi_arg_index_from_use.  */
  struct ssa_use_operand_d imm_use;
  tree def;
  location_t locus;
};

phi 결점 은 주로 세 부분 이 있 습 니 다. def 는 ssa 를 묘사 합 니 다.name, 그 자체 가 대표 하 는 데 이 터 를 표시 합 니 다. locus 는 그 위 치 를 표시 합 니 다. immuse 는 양 방향 링크 구조 로 phi 는 이 를 이용 하여 phi 의 def - use 를 옮 겨 다 닐 수 있 습 니 다.
imm_use 의 구조:
typedef struct GTY(()) ssa_use_operand_d {
  struct ssa_use_operand_d* GTY((skip(""))) prev;
  struct ssa_use_operand_d* GTY((skip(""))) next;
  /* Immediate uses for a given SSA name are maintained as a cyclic
     list.  To recognize the root of this list, the location field
     needs to point to the original SSA name.  Since statements and
     SSA names are of different data types, we need this union.  See
     the explanation in struct immediate_use_iterator_d.  */
  union { gimple stmt; tree ssa_name; } GTY((skip(""))) loc;
  tree *GTY((skip(""))) use;
} ssa_use_operand_t;

데이터 의 def - use 링크 구조 로 이해 할 수 있 습 니 다. 그 중에서 use 는 tree, stmt, ssa 를 사용 하 는 것 을 표시 합 니 다.name 은 자체 의 데이터 속성 을 표시 합 니 다. prev, next 는 양 방향 링크 를 표시 합 니 다. 이 구 조 는 이 데이터 def 의 use 를 찾 을 수 있 도록 하 는 것 입 니 다. 이 유형의 데 이 터 는 이 정의 데이터 의 use 노드 를 표시 합 니 다.
자주 사용 하 는 phi 함수:
gimple_phi_num_args (const_gimple gs) gimple_phi_result (const_gimple gs) gimple_phi_set_result (gimple gs, tree result) gimple_phi_arg (gimple gs, unsigned index)

좋은 웹페이지 즐겨찾기