피드로 돌아가기
Cx Dev Log - 2026-05-04
Dev.toDev.to
Backend

IR Lowering 최적화로 Struct/Array 지원 및 테스트 117개 전수 통과

Cx Dev Log - 2026-05-04

COMMENTERTHE92026년 5월 5일3advanced

Context

메인 브랜치와 서브메인 브랜치의 37일간의 분리로 인한 코드 동기화 결여 및 v4.9 기준 78개 테스트에 머물러 있던 정체 상태. 특히 Composite Type의 IR Lowering 단계에서 Struct 및 Array에 대한 구조적 지원 부재로 인한 기능적 제약 발생.

Technical Solution

  • StructInstance를 Alloca와 PtrOffset/Store 조합으로 전환하여 컴파일 타임 포인터 연산 최적화
  • DotAccess 변형에 struct_name을 포함하는 시맨틱 레이어 설계를 통한 필드 읽기/쓰기 로직의 통합 관리
  • void 함수 호출을 lower_expr 단계 이전인 lower_stmt 레벨에서 가로채어 반환 값 강제 요구 문제를 원천 차단
  • Struct와 Array 모두 IrType::Ptr 기반의 단일 메모리 모델을 채택하여 백엔드의 포인터 연산 복잡도 최소화
  • 필드 접근은 컴파일 타임 PtrOffset을 사용하고 배열 요소 접근은 런타임 PtrAdd를 적용하는 이원화 전략 수립
  • SemanticType::Array를 IrType::Ptr로 매핑하는 패턴을 통해 일관된 메모리 레이아웃 확보

1. 서로 다른 데이터 타입의 메모리 접근 패턴을 단일 인터페이스(예: PtrOffset/PtrAdd)로 추상화했는가

2. 반환 값이 없는 함수(void)와 같이 특수한 케이스를 처리할 때, 하위 단계(Expression)가 아닌 상위 단계(Statement)에서 조기에 필터링하여 예외 처리를 단순화했는가

3. 브랜치 간의 Divergence 기간을 최소화하여 머지 충돌 및 기술 부채 누적을 방지하고 있는가

원문 읽기