Publications

Detailed Information

Verified Translation Validation For Register Promotion in LLVM : 검증된 번역 검산 기술을 이용한 LLVM 컴파일러의 Register Promotion 최적화 검산

DC Field Value Language
dc.contributor.advisor허충길-
dc.contributor.author박상훈-
dc.date.accessioned2018-05-29T03:33:35Z-
dc.date.available2018-05-29T03:33:35Z-
dc.date.issued2018-02-
dc.identifier.other000000149294-
dc.identifier.urihttps://hdl.handle.net/10371/141565-
dc.description학위논문 (석사)-- 서울대학교 대학원 : 공과대학 컴퓨터공학부, 2018. 2. 허충길.-
dc.description.abstractMainstream C/C++ compilers usually focus on efficiency though reliability is also important as well for compilers. Thus they perform various optimizations for performance, but many bugs are found in GCC and LLVM by recent random testing tools.

To increase the reliability of mainstream compilers without sacrificing their performance, I propose a practical approach for verified compilation using a verified extensible relational Hoare-logic (ERHL) validator. As this approach performs translation validation which separates compilation and validation, it does not sacrifice any compilation performance. Also, I can finally succeed to validate translations or identify compiler bugs because I insert proof generation code for validation directly in the compiler.

As a litmus test to show the possibility of this approach, I successfully validate register promotion in the sroa pass in LLVM 3.7.1. Translation validation for register promotion has enough to show possibility of validating the whole optimization passes in LLVM as register promotion is one of the most performance critical passes in LLVM. This is because register promotion promotes memory locations to LLVM registers and converts corresponding load and store instructions into register read and write operations, and many LLVM optimization focus on optimizing register operations, most of which are introduced in register promotion. Moreover, some of those LLVM registers are transformed into CPU registers which are magnitude faster to access than memory locations.

I validated translation of register promotion for SPEC CPU2006 benchmarks, LLVM Nightly Test, and five C projects, with 7.1M lines of code in total. There are only 10 failures in validation results, but all of them are due to the compiler bug which I found during this work.
-
dc.description.tableofcontentsChapter 1 Introduction 1
1.1 Register Promotion 2
1.2 Basic Framework 3
1.3 Extensible Relational Hoare-Logic Validator 4
1.4 Result 6
Chapter 2 Register Promotion Algorithm 8
2.1 Shortcuts 8
2.2 General SSA Transformation Algorithm 10
2.3 Pruning 13
Chapter 3 Proof Generation and Translation Validation for Register Promotion 14
3.1 Proof Generation in the Compiler 14
3.1.1 Interpretation of Invariant 15
3.1.2 Example 18
3.2 Translation Validation using Proofs 21
Chapter 4 Results 23
4.1 Development 23
4.2 Performance Evaluation 25
4.3 A Bug of Register Promotion in LLVM 26
Chapter 5 Related Works 28
Chapter 6 Conclusion 30
-
dc.formatapplication/pdf-
dc.format.extent2719629 bytes-
dc.format.mediumapplication/pdf-
dc.language.isoen-
dc.publisher서울대학교 대학원-
dc.subjectVerified Translation Validation-
dc.subjectCompiler Verification-
dc.subjectLLVM-
dc.subjectRegister Promotion-
dc.subject.ddc621.39-
dc.titleVerified Translation Validation For Register Promotion in LLVM-
dc.title.alternative검증된 번역 검산 기술을 이용한 LLVM 컴파일러의 Register Promotion 최적화 검산-
dc.typeThesis-
dc.contributor.AlternativeAuthorSanghoon Park-
dc.description.degreeMaster-
dc.contributor.affiliation공과대학 컴퓨터공학부-
dc.date.awarded2018-02-
Appears in Collections:
Files in This Item:

Altmetrics

Item View & Download Count

  • mendeley

Items in S-Space are protected by copyright, with all rights reserved, unless otherwise indicated.

Share