2012-12-10 2 views
0

배열 검출

... 나는 다음과 LLVM IR은

무효 @foo (I32의 *의 % A, I32의 *의 %의 m) 해제 없음을 {정의가 생각 나는 전화 첫 번째 arg에 대한 배열을 전달하고 변수 주소를 m에 전달하여 foo 이제 foo의 arg 목록을 분석하고 어느 arg가 배열에 전달되었는지, 그리고 단순히 포인터 주소인지 판단해야합니다. 나는 모두가 실제로 주소에있는 것을 알고,하지만 난 정적으로 유형이 전달 결정할 수 있도록 LLVM은 일종의 메타 데이터를 제공합니까

참고 :. 내가

답변

1

당신은 아마 사용할 수있는 옵트 패스를 작성하고있는 "

define void @foo([0 x i32]* %a, i32* %m) 

제로 크기의 배열이 완벽하게 유효하며 LLVM 문서는 말한다 : 배열에 대한 포인터 "대신 입력

배열 012의 끝을 넘어 인덱싱에 대한 제한이 없습니다은 정적 유형에 의해 묵시적으로 지정됩니다.