llvm: a compilation framework for lifelong program analysis and

21
Systems and Internet Infrastructure Security Network and Security Research Center Department of Computer Science and Engineering Pennsylvania State University, University Park PA LLVM: A Compila for Lifelong Progr Systems and Internet Infrastructure Security (SIIS) Laboratory for Lifelong Progr Transfor Chris Lattner an Presented by: N y ation Framework ram Analysis and Page 1 ram Analysis and rmation nd Vikram Adve Nirupama Talele

Upload: others

Post on 03-Feb-2022

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LLVM: A Compilation Framework for Lifelong Program Analysis and

Systems and Internet

Infrastructure Security

Network and Security Research CenterDepartment of Computer Science and EngineeringPennsylvania State University, University Park PA

LLVM: A Compilation Framework

for Lifelong Program Analysis and

Systems and Internet Infrastructure Security (SIIS) Laboratory

for Lifelong Program Analysis and

Transformation

Chris Lattner and Vikram Adve

Presented by: Nirupama Talele

Security

LLVM: A Compilation Framework

for Lifelong Program Analysis and

Page 1

for Lifelong Program Analysis and

Transformation

Chris Lattner and Vikram Adve

Presented by: Nirupama Talele

Page 2: LLVM: A Compilation Framework for Lifelong Program Analysis and

Agenda

• What is LLVM

• LLVM Code Representation

• LLVM Compiler Architecture

• Framework Analysis

Systems and Internet Infrastructure Security (SIIS) Laboratory

• Framework Analysis

LLVM Code Representation

LLVM Compiler Architecture

Page 2

Page 3: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM

• “Compiler framework designed to support transparent,

lifelong, program analysis and transformation”

• Provides high level info to compiler transformations

Systems and Internet Infrastructure Security (SIIS) Laboratory

‣ Compile-time

‣ Link-time

‣ Run-time

‣ In-idle-time

“Compiler framework designed to support transparent,

lifelong, program analysis and transformation”

Provides high level info to compiler transformations

Page 3

Page 4: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM

• Program analysis should occur through the lifetime of a program

‣ Intra-procedural optimizations (link time)

Systems and Internet Infrastructure Security (SIIS) Laboratory

‣ Intra-procedural optimizations (link time)

‣ Machine-dependent optimizations (install time)

‣ Dynamic optimization (run time)

‣ Profile-guided optimizations (idle time)

Program analysis should occur through the

procedural optimizations (link time)

Page

procedural optimizations (link time)

dependent optimizations (install time)

Dynamic optimization (run time)

guided optimizations (idle time)

4

Page 5: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM Difference with VMs

• No high-level constructs

‣ classes, inheritance, etc

Systems and Internet Infrastructure Security (SIIS) Laboratory

• No runtime system or object model

• Does not guarantee safety

‣ type and memory

LLVM Difference with VMs

level constructs

classes, inheritance, etc

Page

No runtime system or object model

Does not guarantee safety

5

Page 6: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM Analysis

• Aim to make lifelong analysis transparent to programmers

Achieved through two parts:

Systems and Internet Infrastructure Security (SIIS) Laboratory

• Achieved through two parts:

‣ Code Representation

‣ Compiler Architecture

Aim to make lifelong analysis transparent to

Achieved through two parts:

Page

Achieved through two parts:

6

Page 7: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM Code Representation

• Key feature: high and low level

• RISC-like instruction set

‣ SSA-based representation

Systems and Internet Infrastructure Security (SIIS) Laboratory

‣ SSA-based representation

• Low-level, language independent type system

• LLVM is complementary to virtual machines(like

JVM,Microsoft CLI), not an alternative

LLVM Code Representation

Key feature: high and low level

Page

level, language independent type system

LLVM is complementary to virtual machines(like

JVM,Microsoft CLI), not an alternative

7

Page 8: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM Code Representation

• How Support Lifelong Analysis?

• 5 capabilities

‣ Persistent program information

‣ Offline code generation

Systems and Internet Infrastructure Security (SIIS) Laboratory

‣ Offline code generation

‣ User-based profiling/optimization

‣ Transparent runtime model

‣ Uniform, whole program compilation

• No previous system provides all 5

LLVM Code Representation

How Support Lifelong Analysis?

Persistent program information

Offline code generation

Page

Offline code generation

based profiling/optimization

Transparent runtime model

Uniform, whole program compilation

No previous system provides all 5

8

Page 9: LLVM: A Compilation Framework for Lifelong Program Analysis and

Instruction Set• Avoids machine specific constraints

• Infinite set of typed virtual registers

‣ In SSA form

‣ Includes support for phi functions

‣ This allows flow insensitive algo to gain benefits of flow

Systems and Internet Infrastructure Security (SIIS) Laboratory

‣ This allows flow insensitive algo to gain benefits of flow

sensitive without expensive Data Flow analysis

• Avoids same code for multiple instructions (overloaded

opcodes)

• Is in load/store form -progr

registers and memory solely via load and store

operations using typed pointers

Avoids machine specific constraints

Infinite set of typed virtual registers

Includes support for phi functions

This allows flow insensitive algo to gain benefits of flow

Page

This allows flow insensitive algo to gain benefits of flow

sensitive without expensive Data Flow analysis

Avoids same code for multiple instructions (overloaded

grams transfer values between

registers and memory solely via load and store

operations using typed pointers

9

Page 10: LLVM: A Compilation Framework for Lifelong Program Analysis and

Type Information

• Makes all address arithmetic explicit, exposing it to all LLVM optimizations.

Example :- X[i].a = 1; (assuming a is third field)

Systems and Internet Infrastructure Security (SIIS) Laboratory

Example :- X[i].a = 1; (assuming a is third field)%p = getelementptr %xty* %X, long %i, ubyte 3;store int 1, int* %p;• All addressable objects (“lvalues”) are explicitly

allocated

Makes all address arithmetic explicit, exposing it to all LLVM optimizations.X[i].a = 1; (assuming a is third field)

Page

X[i].a = 1; (assuming a is third field)%p = getelementptr %xty* %X, long %i, ubyte 3;All addressable objects (“lvalues”) are explicitly

10

Page 11: LLVM: A Compilation Framework for Lifelong Program Analysis and

Exception Handling

• Exceptions mechanism based on two instructions

‣ invoke

‣ unwind

Systems and Internet Infrastructure Security (SIIS) Laboratory

unwind

• Isolate code to throw/recover from exceptions to front-end libraries

• Handling automatic variable destructors:

‣ An invoke instruction is used to halt unwinding, the

destructor is run, then unwinding is continued with

the unwind instruction.

Exception Handling

Exceptions mechanism based on two

Page

Isolate code to throw/recover from exceptions to

Handling automatic variable destructors:

An invoke instruction is used to halt unwinding, the

destructor is run, then unwinding is continued with

11

Page 12: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM Compiler Architecture

• Remember: goal to enable transformations at link-time, install-time, run

• Must be transparent to application developers

Systems and Internet Infrastructure Security (SIIS) Laboratory

• Must be transparent to application developers and end-users

• Efficient enough for use with realapplications

LLVM Compiler Architecture

Remember: goal to enable transformations at time, run-time, and idle-time

Must be transparent to application developers

Page

Must be transparent to application developers

Efficient enough for use with real-world

12

Page 13: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM Compiler Architecture

Systems and Internet Infrastructure Security (SIIS) Laboratory

• This strategy provides the 5 benefits discussed earlier

• Some limitations

‣ Language specific optimizations must be performed on front end

‣ Benefit to languages like Jasystems?

LLVM Compiler Architecture

Page

This strategy provides the 5 benefits discussed earlier

Language specific optimizations must be performed on front

Java requiring sophisticated runtime

13

Page 14: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM Compiler Architecture

Systems and Internet Infrastructure Security (SIIS) Laboratory

• Front-end compiler

‣ Translate source code to LLVM representation

‣ Perform language specific optimizations

‣ Need not perform SSA construction at this time

‣ Invoke LLVM passes for global inter procedural optimization at module level

LLVM Compiler Architecture

Page

Translate source code to LLVM representation

Perform language specific optimizations

Need not perform SSA construction at this time

Invoke LLVM passes for global inter procedural optimization

14

Page 15: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM Compiler Architecture

Systems and Internet Infrastructure Security (SIIS) Laboratory

• Linker/Interprocedure Optimizer

‣ Various analyses occur

• Points-to analysis

• Mod/Ref analysis

• Dead global elimination, dead argument elimination, constant propagation, array bounds check, etc

• Can be speeded up by adding inter

LLVM Compiler Architecture

Page

Linker/Interprocedure Optimizer

Dead global elimination, dead argument elimination, constant propagation, array bounds check, etc

Can be speeded up by adding inter-procedural summaries)15

Page 16: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM Compiler Architecture

Systems and Internet Infrastructure Security (SIIS) Laboratory

• Native Code Generation

‣ JIT or Offline

‣ Currently supports Sparc V9 and x86 architectures

LLVM Compiler Architecture

Page

Currently supports Sparc V9 and x86 architectures

16

Page 17: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM Compiler Architecture

Systems and Internet Infrastructure Security (SIIS) Laboratory

• Reoptimizers

‣ Identifies frequently run code and ‘hotspots’

‣ Performs additional optimizations, thus native code generation can be performed ahead of time

‣ Idle-time reoptimizer

LLVM Compiler Architecture

Page

Identifies frequently run code and ‘hotspots’

Performs additional optimizations, thus native code generation can be performed ahead of time

17

Page 18: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM Analysis

• When compiled to LLVM, a program can undergo the following analyses

Systems and Internet Infrastructure Security (SIIS) Laboratory

‣ Flow-insensitive, field-sensitive, context

points-to analysis

‣ Uses Data Structure Analysis (DSA)

When compiled to LLVM, a program can undergo the following analyses

Page

sensitive, context-sensitive

Uses Data Structure Analysis (DSA)

18

Page 19: LLVM: A Compilation Framework for Lifelong Program Analysis and

LLVM Analysis –

• Relatively compact code size

Systems and Internet Infrastructure Security (SIIS) Laboratory

Code Size

Relatively compact code size

Page 19

Page 20: LLVM: A Compilation Framework for Lifelong Program Analysis and

Conclusion

• LLVM is language independent

• Optimizations at all stages of software lifetime (compile,link, runtime, etc)

• Compact code size

Systems and Internet Infrastructure Security (SIIS) Laboratory

• Efficient- due to small, uniform instruction set in low level representation

• Future work: can high-level VMs be implemented on top of the LLVM runtime optimization and code generation framework?

LLVM is language independent

Optimizations at all stages of software lifetime (compile,link, runtime, etc)

Page

due to small, uniform instruction set in low level representation

level VMs be implemented on top of the LLVM runtime optimization and code generation framework?

20

Page 21: LLVM: A Compilation Framework for Lifelong Program Analysis and

Questions?

Systems and Internet Infrastructure Security (SIIS) Laboratory Page 21