문득 떠오르는 궁금증에 글을 올려봅니다.


1.  한 파일에 3개의 함수(함수1, 함수2, 함수3)가 있다면


all_lowering_passes

all_ipa_passes

all_passes


과 같은 main pass(??) 에 대하여 각 함수별로 수행되는 것을 확인하였는데(아래처럼)


함수 1 의 all_lowering_passes

함수 2 의 all_lowering_passes

함수 3 의 all_lowering_passes

함수 1 의 all_ipa_passes

함수 2 의 all_ipa_passes

함수 3 의 all_ipa_passes

함수 1 의 all_passes

함수 2 의 all_passes

함수 3 의 all_passes


의문이 드는 점은 tree or rtl dump 를 하게되면 생성되는 각 출력 파일들이 몇번째 함수의 optimization을 수행하고 난 후의 dump 인지 궁금하네요. 마지막 함수(예에선 함수 3)가 호출된 후라고 예상하였는데 그렇지 않은듯한 결과가....--.


2. 생성된 RTL 은 pass_final(rest_of_handle_final)에서 recog()함수의 recognition 과정(생성된 RTL을 define_insn등에서의 RTL과 match 하는 과정)을 통해 asm code로 emission 됩니다. 


recog()함수에서 predicate와 condition(define_insn 내의) 을 체크하는 부분을 확인하였고 constraint에 대한 체크는 없는 것을 확인하였습니다.(제가 실수를 하지 않았다면요) 


그래서 constraint 의 점검은 register allocation 시 할 것으로 예상했는데 

그렇다면 이미 reg alloc 에서 constraint 점검을 끝내놓은 상황에서 코드 흐름상 나중에 있는 recog()에서  굳이 predicate을 체크해줄 필요가 있을까 입니다. 


predicate 보다 constraint 가 더 restrictive 하다고 알고 있고 어떤 자료에선 predicate로 먼저 범위를 좁혀놓는 다는 해석을 본 기억나네요.


3. 프로그램을 만들때 필요한 함수들을 한 파일안에 집어넣어 놓는 것이 performance가 더 좋다??(performance 측면에서만)


LTO 가 없다고 가정하면 컴파일러가 수행하는 IPO(interprocedural optimization)는 파일내의 function 간의 optimization 을 할텐데


그렇다면 당연히 function들을 한 파일로 만들어 버리면 성능이 좋아져야 하는데... 너무 당연한 얘기에 의문을 갖는건지 모르겠습니다.^^


(물론 다른 요인으로 인해 달라 질 수 있겠지만 IPO에만 포커스를 맞춰 보았습니다)


글이 깔끔하지 못한점은 양해를 부탁드립니다^^

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 컴파일러 및 가상머신 스터디 관련 Q&A 게시판 입니다. woos 2016.04.09 278
49 졸업논문 및 ACM 대회로 인하여, 이번주 참석도 힘들것 같습니다. 김승겸 2009.10.24 9477
48 소스를 어디서 받을수 있을까요? [2] 박세율 2008.09.12 9439
47 죄송합니다. 이정우 2008.11.29 9414
46 gcc 스터디 lksas 서버계정 신청... [1] 이수연 2008.11.25 9260
45 이번주 어떻게 하는게 좋을까요? [1] 백창우 2009.11.14 9192
44 내일 참석이 힘들것 같습니다. [2] 백창우 2009.10.30 9127
43 이번주 이사 때문에 참석이 힘들것 같습니다. [2] 백창우 2009.09.02 8979
42 이번 주는 제가 안될것 같습니다.. [1] 김남형 2009.11.04 8888
41 저희집에서 모이는 건가요? 약도 올립니다. [1] file 이일열 2010.04.09 8488
40 gcc 소스 분석문서 [1] 이수연 2008.08.18 8364
39 스터디 자리를 못잡았네요..ㅠㅠ [5] 소두진 2010.04.05 8310
38 컴파일러 과제 file 김경태 2010.04.21 6512
37 과제 - Tiny-C Compiler의 AST file 정형준 2010.04.22 6310
36 glibc build 김경태 2010.11.13 6004
35 프론트 엔드를 큰그림에서 이해하기 좋을거 같네요 이일열 2010.04.19 5746
34 현대 CPU구조라는 글인데요 좋네요 [1] 이일열 2010.04.19 5700
» 컴파일러 관련하여 약간 구체적인 질문들... [1] 김경태 2011.04.18 5573
32 GCC Compiler 게시판 생성 백창우 2008.08.18 5159
31 요청하신 자료입니다~ file 소성은 2011.03.03 4529
30 책 선정 관련 [4] 김남형 2009.06.07 3775
XE Login