Mercurial > hg > Events > OSC2018
changeset 2:b2c3cf0ee390
update
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 15 Jun 2018 20:48:13 +0900 |
parents | 61e24cbc5f22 |
children | 2326125d13cf |
files | slide.md |
diffstat | 1 files changed, 16 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/slide.md Fri Jun 15 17:49:37 2018 +0900 +++ b/slide.md Fri Jun 15 20:48:13 2018 +0900 @@ -28,7 +28,7 @@ - GCCとは**GNU Compiler Collection**の略で1985年から開発されているOSSなコンパイラパッケージです - C言語で実装され,様々な言語のコンパイルをサポートしているのが特徴です - LLVMとはLLVMというコンパイラ基盤のことを指します - - JavaのByteCodeの用に仮想的な言語であるLLVMIRをサポートしており,柔軟に言語処理系を実装する事が可能です + - レジスタが無限にある仮想マシン用の言語であるLLVMIRをサポートしており,柔軟に言語処理系を実装する事が可能です - ClangはLLVMを用いたC言語系統の言語コンパイラです - 主な実装はC++で記述されています @@ -315,6 +315,21 @@ (clang::Token) $0 = (Loc = 2151358386, UintData = 1, PtrData = 0x0000000116020184, Kind = numeric_constant, Flags = 0) ``` +!SLIDE +## パス + +- コンパイラで生成された内部表現をそれぞれ「pass」と呼ぶ +- コンパイラは生成したpassの一覧を所持している +- そのパスに応じた処理をそれぞれdefファイルを用いて定義している +- 今回はCbCを実装する際に利用するインライン展開の制御部分を確認する + +!SLIDE +## gccのパス一覧 + +- gccは`gcc/passes.def`という定義ファイルで処理を定義している +- この内部処理は`passes.c`内で定義されている`execute_one_pass`関数が実行する + + !SLIDE ## gccのコード生成 @@ -332,6 +347,3 @@ - この部分はgccの`expand_call`と対応している -## gccのパス - -- `