SlideShare a Scribd company logo
1 of 18
Download to read offline
Intermediate Representations
Control Flow Graphs (CFG)
Don by khalid alsediri
COMP2105
Intermediate Representations(IR)
An intermediate representation is a representation of a program
part way between the source and target language
.
IR use many technique for representation
-Structured (graph or tree-based)
-Flat, tuple-based
-Flat, stack-based
-Or any combination of the above three
Optimization
Code transformations to improve program
-minimize execution time.
-reduce program size .
Must be save, the result program should give same
result to all possible input
Control Flow Graphs(CFG)
A control flow graph (CFG) is a data structure for High level
representation or low level representation .
1. break the big problem into smaller piece which are
manageable
2. To perform machine independent optimizations
3. Can easily find unreachable code
4. Makes syntactic structure (like loops) easy to find
The CFG is a directed graph where the vertices represent
basic blocks and edges represent possible transfer of control
flow from one basic block to another
Building CFG
• We divide the intermediate code of each procedure into basic
blocks. A basic block is a piece of straight line code, i.e. there
are no jumps in or out of the middle of a block.
• The basic blocks within one procedure are organized as a
(control) flow graph, or CFG. A flow-graph has
• basic blocks 𝑩 𝟏· · · 𝑩 𝒏 as nodes,
• a directed edge 𝑩 𝟏 𝑩 𝟐 if control can flow from 𝑩 𝟏 to 𝑩 𝟐.
• Special nodes ENTER and EXIT that are the source and sink
of the graph.
• Inside each basic block can be any of the IRs we’ve seen:
tuples, trees, DAGs, etc.
Building CFG
Building the CFG
• High-level representation
– Control flow is implicit in an AST.
• Low-level representation:
– Nodes represent statements (low-level linear IR)
– Edges represent explicit flow of control
• Program
x = z-2 ;
y = 2*z;
if (c) {
x = x+1;
y = y+1;
}
else {
x = x-1;
y = y-1;
}
z = x+y;
x = z-2 ;
y = 2*z;
if (c)
x = x+1;
y = y+1;
x = x-1;
y = y-1;
z = x+y;
B3
B1
B2
B4
FT
Example high level
1 a := 0
2 b := a * b
3 L1: c := b/d
4 if c < x goto L2
5 e := b / c
6 f := e + 1
7 L2: g := f
8 h := t - g
9 if e > 0 goto L3
10 goto L1
11 L3: return
a := 0
b := a * b
c := b/d
if c < x
e := b / c
f := e + 1
g := f
h := t - g
if e > 0
goto return
B1
B2
B3
B4
B6 B5
Low level example
---------Source Code-----------------------
X := 20; WHILE X < 10 DO
X := X-1; A[X] := 10;
IF X = 4 THEN X := X - 2; ENDIF;
ENDDO; Y := X + 5;
---------Intermediate Code---------------
(1) X := 20
(2) if X>=10 goto (8)
(3) X := X-1
(4) A[X] := 10
(5) if X<>4 goto (7)
(6) X := X-2
(7) goto (2)
(8) Y := X+5
X := 20
Y := X+5
goto B2
X := X-2
X := X-1
(4) A[X] := 10
(5) if X<>4 goto B6
if X>=10 goto B4
B1
B2
B4B3
B5
B6
Building basic blocks algorithm
• Identify leaders
1-The first instruction in a procedure, or
2-The target of any branch, or
3-An instruction immediately following a branch (implicit target)
• For each leader, its basic block is the leader
and all statements up to, but not including, the
next leader or the end of the program.
Building basic blocks algorithm
• Input: List of n instructions (instr[i] =𝑖 𝑡ℎ instruction),
A sequence of intermediate code statements
Output: Set of leaders & list of basic blocks
(block[x] is block with leader x)
leaders = {1} // First instruction is a leader
for i = 1 to n // Find all leaders
if instr[i] is a branch
leaders = leaders ∪ set of potential targets of instr[i]
foreach x ∈ leaders //each leader is leader of it self
block[x] = { x }
i = x+1 // Fill out x’s basic block
while i ≤ n and i ∉ leaders
block[x] = block[x] ∪ { i }
i = i + 1
Building basic blocks algorithm
1 a := 0
2 b := a * b
3 L1: c := b/d
4 if c < x got L2
5 e := b / c
6 f := e + 1
7 L2: g := f
8 h := t - g
9 if e > 0 goto L3
10 goto L1
11 L3: return
Building basic blocks algorithm
1 a := 0
2 b := a * b
3 L1: c := b/d
4 if c < x got L2
5 e := b / c
6 f := e + 1
7 L2: g := f
8 h := t - g
9 if e > 0 goto L3
10 goto L1
11 L3: return
Leaders?
– {1, 3, 5, 7, 10, 11}
Blocks?
– {1, 2}
– {3, 4}
– {5, 6}
– {7, 8, 9}
– {10}
– {11}
Building CFG
• Input: A list of m basic blocks (block)
Output: A CFG where each node is a basic block
for i = 1 to m
x = last instruction of block[i]
if instr x is a branch
for each target (to block j) of instr x
create an edge from block i to block j
if instr x is not an unconditional branch
create an edge from block i to block i+1
Building basic blocks algorithm
1 a := 0
2 b := a * b
3 L1: c := b/d
4 if c < x got L2
5 e := b / c
6 f := e + 1
7 L2: g := f
8 h := t - g
9 if e > 0 goto L3
10 goto L1
11 L3: return
Leaders?
– {1, 3, 5, 7, 10, 11}
Blocks?
– {1, 2}
– {3, 4}
– {5, 6}
– {7, 8, 9}
– {10}
– {11}
1 a := 0
2 b := a * b
3 L1: c := b/d
4 if c < x got L2
5 e := b /
c
6 f := e +
1
7 L2: g := f
8 h := t - g
9 if e > 0 goto
L3
10 goto
L1
11 L3:
return
Variation of CFG
• Extended basic blocks
-A maximal sequence of instructions that
-has no merge points in it (except perhaps in the leader)
-Single entry, multiple exits
• Reverse extended basic blocks
-Useful for “backward flow” problems
Reference
• Modern Compilers: Theory , V. Krishna Nandivada,
2015,http://www.cse.iitm.ac.in/~krishna/courses/2015/even-
cs6013/lecture4.pdf ,accessed(19-14-2016).
• Introduction to Compilers,Tim
Teitelbaum,2008,http://www.cs.cornell.edu/courses/cs412/2008sp/l
ectures/lec24.pdf,accessed(19-14-2016).
• Modern Programming Language Implementation , E Christopher
Lewis ,2006,http://www.cis.upenn.edu/~cis570/slides/lecture03.pdf,
accessed(19-14-2016).

More Related Content

What's hot

Techniques & applications of Compiler
Techniques & applications of CompilerTechniques & applications of Compiler
Techniques & applications of CompilerPreethi AKNR
 
Agile development, software engineering
Agile development, software engineeringAgile development, software engineering
Agile development, software engineeringRupesh Vaishnav
 
Delphi cost estimation model
Delphi cost estimation modelDelphi cost estimation model
Delphi cost estimation modelShashwat Shriparv
 
Language Design Trade-offs
Language Design Trade-offsLanguage Design Trade-offs
Language Design Trade-offsAndrey Breslav
 
Algorithms Lecture 2: Analysis of Algorithms I
Algorithms Lecture 2: Analysis of Algorithms IAlgorithms Lecture 2: Analysis of Algorithms I
Algorithms Lecture 2: Analysis of Algorithms IMohamed Loey
 
Compiler Construction introduction
Compiler Construction introductionCompiler Construction introduction
Compiler Construction introductionRana Ehtisham Ul Haq
 
Software architecture design ppt
Software architecture design pptSoftware architecture design ppt
Software architecture design pptfarazimlak
 
Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design MAHASREEM
 
Phased life cycle model
Phased life cycle modelPhased life cycle model
Phased life cycle modelStephennancy
 
Basic blocks - compiler design
Basic blocks - compiler designBasic blocks - compiler design
Basic blocks - compiler designhmnasim15
 
Basic blocks and control flow graphs
Basic blocks and control flow graphsBasic blocks and control flow graphs
Basic blocks and control flow graphsTilakpoudel2
 
Compiler Design Basics
Compiler Design BasicsCompiler Design Basics
Compiler Design BasicsAkhil Kaushik
 
Lexical Analysis - Compiler Design
Lexical Analysis - Compiler DesignLexical Analysis - Compiler Design
Lexical Analysis - Compiler DesignAkhil Kaushik
 
Fundamental design concepts
Fundamental design conceptsFundamental design concepts
Fundamental design conceptssrijavel
 

What's hot (20)

Techniques & applications of Compiler
Techniques & applications of CompilerTechniques & applications of Compiler
Techniques & applications of Compiler
 
Agile development, software engineering
Agile development, software engineeringAgile development, software engineering
Agile development, software engineering
 
Ch3
Ch3Ch3
Ch3
 
Delphi cost estimation model
Delphi cost estimation modelDelphi cost estimation model
Delphi cost estimation model
 
Debugging
DebuggingDebugging
Debugging
 
Language Design Trade-offs
Language Design Trade-offsLanguage Design Trade-offs
Language Design Trade-offs
 
Algorithms Lecture 2: Analysis of Algorithms I
Algorithms Lecture 2: Analysis of Algorithms IAlgorithms Lecture 2: Analysis of Algorithms I
Algorithms Lecture 2: Analysis of Algorithms I
 
Compiler Construction introduction
Compiler Construction introductionCompiler Construction introduction
Compiler Construction introduction
 
Software architecture design ppt
Software architecture design pptSoftware architecture design ppt
Software architecture design ppt
 
Compilers
CompilersCompilers
Compilers
 
Introduction to Compiler design
Introduction to Compiler design Introduction to Compiler design
Introduction to Compiler design
 
Code optimization
Code optimizationCode optimization
Code optimization
 
Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design
 
Phased life cycle model
Phased life cycle modelPhased life cycle model
Phased life cycle model
 
Basic blocks - compiler design
Basic blocks - compiler designBasic blocks - compiler design
Basic blocks - compiler design
 
Code generation
Code generationCode generation
Code generation
 
Basic blocks and control flow graphs
Basic blocks and control flow graphsBasic blocks and control flow graphs
Basic blocks and control flow graphs
 
Compiler Design Basics
Compiler Design BasicsCompiler Design Basics
Compiler Design Basics
 
Lexical Analysis - Compiler Design
Lexical Analysis - Compiler DesignLexical Analysis - Compiler Design
Lexical Analysis - Compiler Design
 
Fundamental design concepts
Fundamental design conceptsFundamental design concepts
Fundamental design concepts
 

Similar to Control Flow Graphs

Principal Sources of Optimization in compiler design
Principal Sources of Optimization in compiler design Principal Sources of Optimization in compiler design
Principal Sources of Optimization in compiler design LogsAk
 
CS540-2-lecture11 - Copy.ppt
CS540-2-lecture11 - Copy.pptCS540-2-lecture11 - Copy.ppt
CS540-2-lecture11 - Copy.pptssuser0be977
 
Code optimization lecture
Code optimization lectureCode optimization lecture
Code optimization lecturePrashant Singh
 
EMBEDDED SYSTEMS 4&5
EMBEDDED SYSTEMS 4&5EMBEDDED SYSTEMS 4&5
EMBEDDED SYSTEMS 4&5PRADEEP
 
Code optimization in compiler design
Code optimization in compiler designCode optimization in compiler design
Code optimization in compiler designKuppusamy P
 
Control Flow Analysis
Control Flow AnalysisControl Flow Analysis
Control Flow AnalysisEdgar Barbosa
 
ESL Anyone?
ESL Anyone? ESL Anyone?
ESL Anyone? DVClub
 
vlsi design using verilog presentaion 1
vlsi design using verilog   presentaion 1vlsi design using verilog   presentaion 1
vlsi design using verilog presentaion 1MANDHASAIGOUD1
 
Lcdf4 chap 03_p2
Lcdf4 chap 03_p2Lcdf4 chap 03_p2
Lcdf4 chap 03_p2ozgur_can
 
Part II: LLVM Intermediate Representation
Part II: LLVM Intermediate RepresentationPart II: LLVM Intermediate Representation
Part II: LLVM Intermediate RepresentationWei-Ren Chen
 
Lecture 16 RC Architecture Types & FPGA Interns Lecturer.pptx
Lecture 16 RC Architecture Types & FPGA Interns Lecturer.pptxLecture 16 RC Architecture Types & FPGA Interns Lecturer.pptx
Lecture 16 RC Architecture Types & FPGA Interns Lecturer.pptxwafawafa52
 
Archi Modelling
Archi ModellingArchi Modelling
Archi Modellingdilane007
 

Similar to Control Flow Graphs (20)

Lecture03
Lecture03Lecture03
Lecture03
 
Principal Sources of Optimization in compiler design
Principal Sources of Optimization in compiler design Principal Sources of Optimization in compiler design
Principal Sources of Optimization in compiler design
 
Code Optimization.ppt
Code Optimization.pptCode Optimization.ppt
Code Optimization.ppt
 
CS540-2-lecture11 - Copy.ppt
CS540-2-lecture11 - Copy.pptCS540-2-lecture11 - Copy.ppt
CS540-2-lecture11 - Copy.ppt
 
ERTS UNIT 3.ppt
ERTS UNIT 3.pptERTS UNIT 3.ppt
ERTS UNIT 3.ppt
 
Code optimization lecture
Code optimization lectureCode optimization lecture
Code optimization lecture
 
EMBEDDED SYSTEMS 4&5
EMBEDDED SYSTEMS 4&5EMBEDDED SYSTEMS 4&5
EMBEDDED SYSTEMS 4&5
 
Compiler unit 4
Compiler unit 4Compiler unit 4
Compiler unit 4
 
Code optimization in compiler design
Code optimization in compiler designCode optimization in compiler design
Code optimization in compiler design
 
Control Flow Analysis
Control Flow AnalysisControl Flow Analysis
Control Flow Analysis
 
ESL Anyone?
ESL Anyone? ESL Anyone?
ESL Anyone?
 
vlsi design using verilog presentaion 1
vlsi design using verilog   presentaion 1vlsi design using verilog   presentaion 1
vlsi design using verilog presentaion 1
 
Lcdf4 chap 03_p2
Lcdf4 chap 03_p2Lcdf4 chap 03_p2
Lcdf4 chap 03_p2
 
1.ppt
1.ppt1.ppt
1.ppt
 
Boosting Developer Productivity with Clang
Boosting Developer Productivity with ClangBoosting Developer Productivity with Clang
Boosting Developer Productivity with Clang
 
Part II: LLVM Intermediate Representation
Part II: LLVM Intermediate RepresentationPart II: LLVM Intermediate Representation
Part II: LLVM Intermediate Representation
 
Basic Block
Basic BlockBasic Block
Basic Block
 
Verilogforlab
VerilogforlabVerilogforlab
Verilogforlab
 
Lecture 16 RC Architecture Types & FPGA Interns Lecturer.pptx
Lecture 16 RC Architecture Types & FPGA Interns Lecturer.pptxLecture 16 RC Architecture Types & FPGA Interns Lecturer.pptx
Lecture 16 RC Architecture Types & FPGA Interns Lecturer.pptx
 
Archi Modelling
Archi ModellingArchi Modelling
Archi Modelling
 

Recently uploaded

Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Pharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfPharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfMahmoud M. Sallam
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting DataJhengPantaleon
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
internship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developerinternship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developerunnathinaik
 
Blooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxBlooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxUnboundStockton
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxRaymartEstabillo3
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxsocialsciencegdgrohi
 
Class 11 Legal Studies Ch-1 Concept of State .pdf
Class 11 Legal Studies Ch-1 Concept of State .pdfClass 11 Legal Studies Ch-1 Concept of State .pdf
Class 11 Legal Studies Ch-1 Concept of State .pdfakmcokerachita
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application ) Sakshi Ghasle
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Celine George
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Celine George
 
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,Virag Sontakke
 

Recently uploaded (20)

Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Pharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfPharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdf
 
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
internship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developerinternship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developer
 
9953330565 Low Rate Call Girls In Rohini Delhi NCR
9953330565 Low Rate Call Girls In Rohini  Delhi NCR9953330565 Low Rate Call Girls In Rohini  Delhi NCR
9953330565 Low Rate Call Girls In Rohini Delhi NCR
 
Blooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxBlooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docx
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
 
Class 11 Legal Studies Ch-1 Concept of State .pdf
Class 11 Legal Studies Ch-1 Concept of State .pdfClass 11 Legal Studies Ch-1 Concept of State .pdf
Class 11 Legal Studies Ch-1 Concept of State .pdf
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application )
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17
 
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
 

Control Flow Graphs

  • 1. Intermediate Representations Control Flow Graphs (CFG) Don by khalid alsediri COMP2105
  • 2. Intermediate Representations(IR) An intermediate representation is a representation of a program part way between the source and target language . IR use many technique for representation -Structured (graph or tree-based) -Flat, tuple-based -Flat, stack-based -Or any combination of the above three
  • 3. Optimization Code transformations to improve program -minimize execution time. -reduce program size . Must be save, the result program should give same result to all possible input
  • 4. Control Flow Graphs(CFG) A control flow graph (CFG) is a data structure for High level representation or low level representation . 1. break the big problem into smaller piece which are manageable 2. To perform machine independent optimizations 3. Can easily find unreachable code 4. Makes syntactic structure (like loops) easy to find The CFG is a directed graph where the vertices represent basic blocks and edges represent possible transfer of control flow from one basic block to another
  • 5. Building CFG • We divide the intermediate code of each procedure into basic blocks. A basic block is a piece of straight line code, i.e. there are no jumps in or out of the middle of a block. • The basic blocks within one procedure are organized as a (control) flow graph, or CFG. A flow-graph has • basic blocks 𝑩 𝟏· · · 𝑩 𝒏 as nodes, • a directed edge 𝑩 𝟏 𝑩 𝟐 if control can flow from 𝑩 𝟏 to 𝑩 𝟐. • Special nodes ENTER and EXIT that are the source and sink of the graph. • Inside each basic block can be any of the IRs we’ve seen: tuples, trees, DAGs, etc.
  • 7. Building the CFG • High-level representation – Control flow is implicit in an AST. • Low-level representation: – Nodes represent statements (low-level linear IR) – Edges represent explicit flow of control
  • 8. • Program x = z-2 ; y = 2*z; if (c) { x = x+1; y = y+1; } else { x = x-1; y = y-1; } z = x+y; x = z-2 ; y = 2*z; if (c) x = x+1; y = y+1; x = x-1; y = y-1; z = x+y; B3 B1 B2 B4 FT Example high level
  • 9. 1 a := 0 2 b := a * b 3 L1: c := b/d 4 if c < x goto L2 5 e := b / c 6 f := e + 1 7 L2: g := f 8 h := t - g 9 if e > 0 goto L3 10 goto L1 11 L3: return a := 0 b := a * b c := b/d if c < x e := b / c f := e + 1 g := f h := t - g if e > 0 goto return B1 B2 B3 B4 B6 B5 Low level example
  • 10. ---------Source Code----------------------- X := 20; WHILE X < 10 DO X := X-1; A[X] := 10; IF X = 4 THEN X := X - 2; ENDIF; ENDDO; Y := X + 5; ---------Intermediate Code--------------- (1) X := 20 (2) if X>=10 goto (8) (3) X := X-1 (4) A[X] := 10 (5) if X<>4 goto (7) (6) X := X-2 (7) goto (2) (8) Y := X+5 X := 20 Y := X+5 goto B2 X := X-2 X := X-1 (4) A[X] := 10 (5) if X<>4 goto B6 if X>=10 goto B4 B1 B2 B4B3 B5 B6
  • 11. Building basic blocks algorithm • Identify leaders 1-The first instruction in a procedure, or 2-The target of any branch, or 3-An instruction immediately following a branch (implicit target) • For each leader, its basic block is the leader and all statements up to, but not including, the next leader or the end of the program.
  • 12. Building basic blocks algorithm • Input: List of n instructions (instr[i] =𝑖 𝑡ℎ instruction), A sequence of intermediate code statements Output: Set of leaders & list of basic blocks (block[x] is block with leader x) leaders = {1} // First instruction is a leader for i = 1 to n // Find all leaders if instr[i] is a branch leaders = leaders ∪ set of potential targets of instr[i] foreach x ∈ leaders //each leader is leader of it self block[x] = { x } i = x+1 // Fill out x’s basic block while i ≤ n and i ∉ leaders block[x] = block[x] ∪ { i } i = i + 1
  • 13. Building basic blocks algorithm 1 a := 0 2 b := a * b 3 L1: c := b/d 4 if c < x got L2 5 e := b / c 6 f := e + 1 7 L2: g := f 8 h := t - g 9 if e > 0 goto L3 10 goto L1 11 L3: return
  • 14. Building basic blocks algorithm 1 a := 0 2 b := a * b 3 L1: c := b/d 4 if c < x got L2 5 e := b / c 6 f := e + 1 7 L2: g := f 8 h := t - g 9 if e > 0 goto L3 10 goto L1 11 L3: return Leaders? – {1, 3, 5, 7, 10, 11} Blocks? – {1, 2} – {3, 4} – {5, 6} – {7, 8, 9} – {10} – {11}
  • 15. Building CFG • Input: A list of m basic blocks (block) Output: A CFG where each node is a basic block for i = 1 to m x = last instruction of block[i] if instr x is a branch for each target (to block j) of instr x create an edge from block i to block j if instr x is not an unconditional branch create an edge from block i to block i+1
  • 16. Building basic blocks algorithm 1 a := 0 2 b := a * b 3 L1: c := b/d 4 if c < x got L2 5 e := b / c 6 f := e + 1 7 L2: g := f 8 h := t - g 9 if e > 0 goto L3 10 goto L1 11 L3: return Leaders? – {1, 3, 5, 7, 10, 11} Blocks? – {1, 2} – {3, 4} – {5, 6} – {7, 8, 9} – {10} – {11} 1 a := 0 2 b := a * b 3 L1: c := b/d 4 if c < x got L2 5 e := b / c 6 f := e + 1 7 L2: g := f 8 h := t - g 9 if e > 0 goto L3 10 goto L1 11 L3: return
  • 17. Variation of CFG • Extended basic blocks -A maximal sequence of instructions that -has no merge points in it (except perhaps in the leader) -Single entry, multiple exits • Reverse extended basic blocks -Useful for “backward flow” problems
  • 18. Reference • Modern Compilers: Theory , V. Krishna Nandivada, 2015,http://www.cse.iitm.ac.in/~krishna/courses/2015/even- cs6013/lecture4.pdf ,accessed(19-14-2016). • Introduction to Compilers,Tim Teitelbaum,2008,http://www.cs.cornell.edu/courses/cs412/2008sp/l ectures/lec24.pdf,accessed(19-14-2016). • Modern Programming Language Implementation , E Christopher Lewis ,2006,http://www.cis.upenn.edu/~cis570/slides/lecture03.pdf, accessed(19-14-2016).