gcc phi 구조 체
3019 단어 gcc
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)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
execl 컴파일 시 경고:warning: not enough variable arguments to fit a sentinel 설명 (전재)warning: missing sentinel in function call warning: not enough variable arguments to fit a sentinel Sentinels & warnings...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.