피드로 돌아가기
Dev.toBackend
원문 읽기
IR Ptr 타입 도입 및 Struct Registry 구축을 통한 메모리 구조 지원
Cx Dev Log — 2026-05-01
AI 요약
Context
단일 레지스터 값 이상의 메모리 구조를 처리하지 못하는 IR 백엔드의 한계 존재. Struct의 메모리 표현식 인식 및 조작을 위한 구조적 기반 마련이 필요한 상황.
Technical Solution
- Ptr 타입을 IR 타입 시스템에 도입하여 8바이트 크기와 8바이트 Alignment 보장
- Alloca, Load, Store 명령어를 추가하여 스택 공간 할당 및 포인터 기반 메모리 읽기/쓰기 구현
- build_struct_table()을 통해 SemanticStmt::StructDef를 순회하며 StructLayoutInfo를 생성하는 Registry 설계
- compute_struct_layout()으로 필드 오프셋과 크기를 단 한 번만 계산하여 중복 연산 제거 및 효율성 확보
- SemanticType::Struct를 IrType::Ptr로 매핑하여 LLVM 스타일의 효율적인 구조체 처리 방식 채택
- IR Validator에 43라인의 검증 로직을 추가하여 Alloca의 크기 및 2의 거듭제곱 Alignment 강제
실천 포인트
1. IR 설계 시 단일 레지스터 한계를 극복하기 위한 Ptr 타입 및 메모리 연산자(Alloca, Load, Store) 정의 여부 검토
2. 구조체 레이아웃 계산 시 중복 연산을 방지하는 단일 통과(Single-pass) Registry 패턴 적용 고려
3. Lowering 패스에서 타입 매핑 시 LLVM 등 검증된 컴파일러의 구조체-포인터 처리 전략 벤치마킹