code optimization in gcc - mines paristech · code optimization in gcc sebastian· pop universite·...
TRANSCRIPT
![Page 1: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/1.jpg)
Code optimization in GCCSebastian Pop
Universite Louis Pasteur
Strasbourg
FRANCE
Code optimization in GCC – p.1
![Page 2: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/2.jpg)
IntroductionGCC : GNU Compiler Collection
C, C++, Java, Ada, Frotran, Mercury, . . .
Generates code for 43 different architectures:i386, ia64, m68k, sparc, . . .
Main compiler in GNU world
Apple’s system compiler.
Industrial compiler.
Code optimization in GCC – p.2
![Page 3: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/3.jpg)
IntroductionGCC : GNU Compiler Collection
C, C++, Java, Ada, Frotran, Mercury, . . .
Generates code for 43 different architectures:i386, ia64, m68k, sparc, . . .
Main compiler in GNU world
Apple’s system compiler.
Industrial compiler.
Code optimization in GCC – p.2
![Page 4: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/4.jpg)
IntroductionGCC : GNU Compiler Collection
C, C++, Java, Ada, Frotran, Mercury, . . .
Generates code for 43 different architectures:i386, ia64, m68k, sparc, . . .
Main compiler in GNU world
Apple’s system compiler.
Industrial compiler.
Code optimization in GCC – p.2
![Page 5: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/5.jpg)
IntroductionGCC : GNU Compiler Collection
C, C++, Java, Ada, Frotran, Mercury, . . .
Generates code for 43 different architectures:i386, ia64, m68k, sparc, . . .
Main compiler in GNU world
Apple’s system compiler.
Industrial compiler.
Code optimization in GCC – p.2
![Page 6: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/6.jpg)
IntroductionGCC : GNU Compiler Collection
C, C++, Java, Ada, Frotran, Mercury, . . .
Generates code for 43 different architectures:i386, ia64, m68k, sparc, . . .
Main compiler in GNU world
Apple’s system compiler.
Industrial compiler.
Code optimization in GCC – p.2
![Page 7: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/7.jpg)
Front-ends /back-end
GCC
Code optimization in GCC – p.3
![Page 8: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/8.jpg)
Front-ends /back-end
gcc g++ gcj g77 Front−ends
GCC
Code optimization in GCC – p.3
![Page 9: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/9.jpg)
Front-ends /back-end
gcc g++ gcj g77 Front−ends
i386 ia64 m68k sparc Machine Description
GCC
Code optimization in GCC – p.3
![Page 10: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/10.jpg)
Front-ends /back-end
gcc g++ gcj g77 Front−ends
i386 ia64 m68k sparc Machine Description
RTL Back−end
GCC
Code optimization in GCC – p.3
![Page 11: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/11.jpg)
Front-ends /back-end
gcc g++ gcj g77 Front−ends
i386 ia64 m68k sparc Machine Description
RTL Back−end
GCC
GAS Assembler
Code optimization in GCC – p.3
![Page 12: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/12.jpg)
Exemple:cross-compilation
Suppose that I want to generate Sparc code:-target=sparc
I build GCC on my laptop: -build=i586
and I run the compiler on my laptop:-host=i586
Code optimization in GCC – p.4
![Page 13: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/13.jpg)
Exemple:cross-compilation
Suppose that I want to generate Sparc code:-target=sparc
I build GCC on my laptop: -build=i586
and I run the compiler on my laptop:-host=i586
Code optimization in GCC – p.4
![Page 14: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/14.jpg)
Exemple:cross-compilation
Suppose that I want to generate Sparc code:-target=sparc
I build GCC on my laptop: -build=i586
and I run the compiler on my laptop:-host=i586
Code optimization in GCC – p.4
![Page 15: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/15.jpg)
Exemple:cross-compilation
Suppose that I want to generate Sparc code:-target=sparc
I build GCC on my laptop: -build=i586
and I run the compiler on my laptop:-host=i586
../gcc/configure -target=sparc -build=i586
-host=i586
Code optimization in GCC – p.4
![Page 16: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/16.jpg)
Exemple:cross-compilation
gcc g++ gcj g77 Front−ends
i386 ia64 m68k sparc Machine Description
RTL Back−end
GCC
GAS Assembler
Code optimization in GCC – p.5
![Page 17: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/17.jpg)
Exemple:cross-compilation
gcc g++ gcj g77 Front−ends
RTL Back−end
GCC
sparc Machine Description
1. Select SPARC machine description
SPARC specific
Code optimization in GCC – p.5
![Page 18: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/18.jpg)
Exemple:cross-compilation
gcc g++ gcj g77 Front−ends
RTL Back−end
GCC
sparc Machine Description
1. Select SPARC machine
SPARC specific
SPARC assembler code
description
2. Compile
Code optimization in GCC – p.5
![Page 19: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/19.jpg)
RTL OptimizationsAn optimization pass optimizes all front-ends.
Machine dependent optimizations.
Types and memory structures after loweringto RTL contain less information.Memory accesses are under their canonical form:<start adress + offset>
Idea: we’d like to havearchitecture independent optimizations.on high level representations.
Code optimization in GCC – p.6
![Page 20: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/20.jpg)
RTL OptimizationsAn optimization pass optimizes all front-ends.
Machine dependent optimizations.
Types and memory structures after loweringto RTL contain less information.Memory accesses are under their canonical form:<start adress + offset>
Idea: we’d like to havearchitecture independent optimizations.on high level representations.
Code optimization in GCC – p.6
![Page 21: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/21.jpg)
RTL OptimizationsAn optimization pass optimizes all front-ends.
Machine dependent optimizations.
Types and memory structures after loweringto RTL contain less information.Memory accesses are under their canonical form:<start adress + offset>
Idea: we’d like to havearchitecture independent optimizations.on high level representations.
Code optimization in GCC – p.6
![Page 22: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/22.jpg)
RTL OptimizationsAn optimization pass optimizes all front-ends.
Machine dependent optimizations.
Types and memory structures after loweringto RTL contain less information.Memory accesses are under their canonical form:<start adress + offset>
Idea: we’d like to have
architecture independent optimizations.on high level representations.
Code optimization in GCC – p.6
![Page 23: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/23.jpg)
RTL OptimizationsAn optimization pass optimizes all front-ends.
Machine dependent optimizations.
Types and memory structures after loweringto RTL contain less information.Memory accesses are under their canonical form:<start adress + offset>
Idea: we’d like to havearchitecture independent optimizations.
on high level representations.
Code optimization in GCC – p.6
![Page 24: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/24.jpg)
RTL OptimizationsAn optimization pass optimizes all front-ends.
Machine dependent optimizations.
Types and memory structures after loweringto RTL contain less information.Memory accesses are under their canonical form:<start adress + offset>
Idea: we’d like to havearchitecture independent optimizations.on high level representations.
Code optimization in GCC – p.6
![Page 25: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/25.jpg)
IntermediateRepresentations
GCC
RTL
gcc g++ gcj g77
Machine descriptionTranslation follows machines specificities
Code optimization in GCC – p.7
![Page 26: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/26.jpg)
IntermediateRepresentations
GCC
Mid−RTL
RTL
gcc g++ gcj g77
Machine description
Translation
Progressive transition from AST to RTL Architecture independent IR
Code optimization in GCC – p.7
![Page 27: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/27.jpg)
IntermediateRepresentations
GCC
Mid−RTL
RTL
gcc g++ gcj g77
Simple
Machine description
Simplify
Translation
Progressive transition from AST to RTL Architecture independent IR
Imperative Normal Form
Language independent representation
Code optimization in GCC – p.7
![Page 28: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/28.jpg)
Abstract SyntaxTrees
Simple linked list for statement nodes.
Manipulation of nodes through a macrointerface: TREE_CHAIN, TREE_OPERAND,
TREE_CODE, ...
Data structures hidden.
AST nodes are typed:allows tree-checking during development.
Code optimization in GCC – p.8
![Page 29: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/29.jpg)
Abstract SyntaxTrees
Simple linked list for statement nodes.
Manipulation of nodes through a macrointerface: TREE_CHAIN, TREE_OPERAND,
TREE_CODE, ...
Data structures hidden.
AST nodes are typed:allows tree-checking during development.
Code optimization in GCC – p.8
![Page 30: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/30.jpg)
Abstract SyntaxTrees
Simple linked list for statement nodes.
Manipulation of nodes through a macrointerface: TREE_CHAIN, TREE_OPERAND,
TREE_CODE, ...
Data structures hidden.
AST nodes are typed:allows tree-checking during development.
Code optimization in GCC – p.8
![Page 31: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/31.jpg)
Abstract SyntaxTrees
Simple linked list for statement nodes.
Manipulation of nodes through a macrointerface: TREE_CHAIN, TREE_OPERAND,
TREE_CODE, ...
Data structures hidden.
AST nodes are typed:allows tree-checking during development.
Code optimization in GCC – p.8
![Page 32: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/32.jpg)
AST: example
a = (−−b) * 7;x = y+z;
Code optimization in GCC – p.9
![Page 33: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/33.jpg)
AST: example
EXPR_STMTa = (−−b) * 7;x = y+z; a = (−−b) * 7;
Code optimization in GCC – p.9
![Page 34: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/34.jpg)
AST: example
EXPR_STMT EXPR_STMTTREE_CHAIN (S)a = (−−b) * 7;
x = y+z; a = (−−b) * 7; x = y+z;
Code optimization in GCC – p.9
![Page 35: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/35.jpg)
AST: example
EXPR_STMT
MODIFY_EXPR
EXPR_STMTa = (−−b) * 7;x = y+z;
EXPR_STMT_EXPR (S)
Code optimization in GCC – p.9
![Page 36: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/36.jpg)
AST: example
EXPR_STMT
MULT_EXPR
MODIFY_EXPR
EXPR_STMT
VAR_DECL
TREE_OPERAND (M, 1)
a = (−−b) * 7;x = y+z;
TREE_OPERAND (M, 0)
Code optimization in GCC – p.9
![Page 37: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/37.jpg)
AST: example
EXPR_STMT
PREDECREMENT_EXPR
MULT_EXPR
IDENTIFIER_NODEa
INTEGER_CST7
MODIFY_EXPR
EXPR_STMT
VAR_DECL
a = (−−b) * 7;x = y+z;
DECL_NAME (V)
Code optimization in GCC – p.9
![Page 38: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/38.jpg)
AST: example
EXPR_STMT
PREDECREMENT_EXPR
MULT_EXPR
IDENTIFIER_NODEa
INTEGER_CST7
MODIFY_EXPR
EXPR_STMT
IDENTIFIER_NODEb
INTEGER_CST1
VAR_DECL
VAR_DECL
a = (−−b) * 7;x = y+z;
Code optimization in GCC – p.9
![Page 39: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/39.jpg)
Simple: overviewSIMPLE’s grammar defines an imperativenormal form:
Reduced number of expressions.Reduced number of control structures.
SIMPLE AST has a regular structure.
Systematic AST analysis is possible.
Common intermediate representation for allfront ends.
Code optimization in GCC – p.10
![Page 40: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/40.jpg)
Simple: overviewSIMPLE’s grammar defines an imperativenormal form:
Reduced number of expressions.
Reduced number of control structures.
SIMPLE AST has a regular structure.
Systematic AST analysis is possible.
Common intermediate representation for allfront ends.
Code optimization in GCC – p.10
![Page 41: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/41.jpg)
Simple: overviewSIMPLE’s grammar defines an imperativenormal form:
Reduced number of expressions.Reduced number of control structures.
SIMPLE AST has a regular structure.
Systematic AST analysis is possible.
Common intermediate representation for allfront ends.
Code optimization in GCC – p.10
![Page 42: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/42.jpg)
Simple: overviewSIMPLE’s grammar defines an imperativenormal form:
Reduced number of expressions.Reduced number of control structures.
SIMPLE AST has a regular structure.
Systematic AST analysis is possible.
Common intermediate representation for allfront ends.
Code optimization in GCC – p.10
![Page 43: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/43.jpg)
Simple: overviewSIMPLE’s grammar defines an imperativenormal form:
Reduced number of expressions.Reduced number of control structures.
SIMPLE AST has a regular structure.
Systematic AST analysis is possible.
Common intermediate representation for allfront ends.
Code optimization in GCC – p.10
![Page 44: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/44.jpg)
Simple: overviewSIMPLE’s grammar defines an imperativenormal form:
Reduced number of expressions.Reduced number of control structures.
SIMPLE AST has a regular structure.
Systematic AST analysis is possible.
Common intermediate representation for allfront ends.
Code optimization in GCC – p.10
![Page 45: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/45.jpg)
Simple: exemple
a = −−b*7;
Code optimization in GCC – p.11
![Page 46: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/46.jpg)
Simple: exemple
a = −−b*7;a=b*7;b=b−1;
Code optimization in GCC – p.11
![Page 47: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/47.jpg)
Simple: exemple
a = −−b*7;a=b*7;b=b−1;
if (i++ && −−k){
}j=f(i+3*k);
Code optimization in GCC – p.11
![Page 48: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/48.jpg)
Simple: exemple
a = −−b*7;a=b*7;b=b−1;
if (i++ && −−k){
}j=f(i+3*k);
if (i){k=k−1;if(k)
else
i=i+1;
{i=i+1;T1=3*k;T2=i+T1;j=f(T2);
}
i=i+1;}else
Code optimization in GCC – p.11
![Page 49: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/49.jpg)
Simple: exemple
{
}A[i]=A[i+3*k];
while(i++ && −−k)
Code optimization in GCC – p.12
![Page 50: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/50.jpg)
Simple: exempleif(i){k=k−1;if (k)while(1){i=i+1;T1=3*k;T2=i+T1;A[i]=A[T2];if(i){k=k−1;if(k)i=i+1;elsebreak;
}elsebreak;
}}
i=i+1;
{
}A[i]=A[i+3*k];
while(i++ && −−k)
Code optimization in GCC – p.12
![Page 51: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/51.jpg)
An optimizingcompiler
Front−end
Source code
Analyses Optimizations
Code optimization in GCC – p.13
![Page 52: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/52.jpg)
An optimizingcompiler
Front−end
InliningAnalyses
Source code
Call graphRecursivity suppression
Optimizations
Code optimization in GCC – p.13
![Page 53: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/53.jpg)
Call Graph(node, edge) => (declaration, call)
Graph representation:pointers: P-Space.in a file under parenthesized form:EXP-Space.
Use metrics for controlling inlining.
GCC’s analysis is limited to a singletranslation unit.
Code optimization in GCC – p.14
![Page 54: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/54.jpg)
Call Graph(node, edge) => (declaration, call)
Graph representation:
pointers: P-Space.in a file under parenthesized form:EXP-Space.
Use metrics for controlling inlining.
GCC’s analysis is limited to a singletranslation unit.
Code optimization in GCC – p.14
![Page 55: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/55.jpg)
Call Graph(node, edge) => (declaration, call)
Graph representation:pointers: P-Space.
in a file under parenthesized form:EXP-Space.
Use metrics for controlling inlining.
GCC’s analysis is limited to a singletranslation unit.
Code optimization in GCC – p.14
![Page 56: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/56.jpg)
Call Graph(node, edge) => (declaration, call)
Graph representation:pointers: P-Space.in a file under parenthesized form:EXP-Space.
Use metrics for controlling inlining.
GCC’s analysis is limited to a singletranslation unit.
Code optimization in GCC – p.14
![Page 57: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/57.jpg)
Call Graph(node, edge) => (declaration, call)
Graph representation:pointers: P-Space.in a file under parenthesized form:EXP-Space.
Use metrics for controlling inlining.
GCC’s analysis is limited to a singletranslation unit.
Code optimization in GCC – p.14
![Page 58: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/58.jpg)
Call Graph(node, edge) => (declaration, call)
Graph representation:pointers: P-Space.in a file under parenthesized form:EXP-Space.
Use metrics for controlling inlining.
GCC’s analysis is limited to a singletranslation unit.
Code optimization in GCC – p.14
![Page 59: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/59.jpg)
Call Graph : solutionPerform call graph optimizations outsideGCC.
Problems :Extract information, decide, then applyoptimizations: 3 passes.Knowledge base’s size.What informations to be stored in KB?
Code optimization in GCC – p.15
![Page 60: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/60.jpg)
Call Graph : solutionPerform call graph optimizations outsideGCC.
Problems :
Extract information, decide, then applyoptimizations: 3 passes.Knowledge base’s size.What informations to be stored in KB?
Code optimization in GCC – p.15
![Page 61: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/61.jpg)
Call Graph : solutionPerform call graph optimizations outsideGCC.
Problems :Extract information, decide, then applyoptimizations: 3 passes.
Knowledge base’s size.What informations to be stored in KB?
Code optimization in GCC – p.15
![Page 62: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/62.jpg)
Call Graph : solutionPerform call graph optimizations outsideGCC.
Problems :Extract information, decide, then applyoptimizations: 3 passes.Knowledge base’s size.
What informations to be stored in KB?
Code optimization in GCC – p.15
![Page 63: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/63.jpg)
Call Graph : solutionPerform call graph optimizations outsideGCC.
Problems :Extract information, decide, then applyoptimizations: 3 passes.Knowledge base’s size.What informations to be stored in KB?
Code optimization in GCC – p.15
![Page 64: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/64.jpg)
An optimizingcompiler
Front−end
InliningAnalyses
Source code
Call graphRecursivity suppression
Optimizations
Code optimization in GCC – p.16
![Page 65: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/65.jpg)
An optimizingcompiler
Front−end
InliningRecursivity suppression
Call graphControl flow graph
CFG normalization
Analyses Optimizations
Source code
Code optimization in GCC – p.16
![Page 66: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/66.jpg)
CFG NormalizationSuppress irregularities from control flow:goto, break, continue.
CFG normalization is based on Simple.
Why normalizing CFG?It is difficult to optimize programscontaining gotos.Break and continue translation to RTLgenerates gotos.Simplification generates irregular code.
Code optimization in GCC – p.17
![Page 67: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/67.jpg)
CFG NormalizationSuppress irregularities from control flow:goto, break, continue.
CFG normalization is based on Simple.
Why normalizing CFG?It is difficult to optimize programscontaining gotos.Break and continue translation to RTLgenerates gotos.Simplification generates irregular code.
Code optimization in GCC – p.17
![Page 68: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/68.jpg)
CFG NormalizationSuppress irregularities from control flow:goto, break, continue.
CFG normalization is based on Simple.
Why normalizing CFG?
It is difficult to optimize programscontaining gotos.Break and continue translation to RTLgenerates gotos.Simplification generates irregular code.
Code optimization in GCC – p.17
![Page 69: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/69.jpg)
CFG NormalizationSuppress irregularities from control flow:goto, break, continue.
CFG normalization is based on Simple.
Why normalizing CFG?It is difficult to optimize programscontaining gotos.
Break and continue translation to RTLgenerates gotos.Simplification generates irregular code.
Code optimization in GCC – p.17
![Page 70: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/70.jpg)
CFG NormalizationSuppress irregularities from control flow:goto, break, continue.
CFG normalization is based on Simple.
Why normalizing CFG?It is difficult to optimize programscontaining gotos.Break and continue translation to RTLgenerates gotos.
Simplification generates irregular code.
Code optimization in GCC – p.17
![Page 71: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/71.jpg)
CFG NormalizationSuppress irregularities from control flow:goto, break, continue.
CFG normalization is based on Simple.
Why normalizing CFG?It is difficult to optimize programscontaining gotos.Break and continue translation to RTLgenerates gotos.Simplification generates irregular code.
Code optimization in GCC – p.17
![Page 72: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/72.jpg)
Flow Out
Condition
Loop’s body
Loop:
Code optimization in GCC – p.18
![Page 73: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/73.jpg)
Flow Out
if (c)break;
Condition Normal exit
Irregular exit
Loop:
Loop’s body
Code optimization in GCC – p.18
![Page 74: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/74.jpg)
Flow Out
else {
}...
if (c) {b_c = true;}
Loop’s body
Loop:
b_c & Condition Normal exit
Code optimization in GCC – p.18
![Page 75: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/75.jpg)
Break Elimination
while (a)
stmt1;{
if (b)break;
stmt2;}
Code optimization in GCC – p.19
![Page 76: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/76.jpg)
Break Elimination
int c_b = 0;
stmt1;{
if (b){c_b = 1;}else
}
{
}stmt2;
while (c_b == 0 && a)
Code optimization in GCC – p.19
![Page 77: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/77.jpg)
Goto Elimination
goto
label
Code optimization in GCC – p.20
![Page 78: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/78.jpg)
Goto Elimination
goto
label
Code optimization in GCC – p.20
![Page 79: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/79.jpg)
Goto Elimination
goto
label
Code optimization in GCC – p.20
![Page 80: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/80.jpg)
Goto Elimination
goto
label
Code optimization in GCC – p.20
![Page 81: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/81.jpg)
Goto Elimination
goto
label
Code optimization in GCC – p.20
![Page 82: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/82.jpg)
An optimizingcompiler
Front−end
InliningRecursivity suppression
Call graphControl flow graph
CFG normalization
Analyses Optimizations
Source code
Code optimization in GCC – p.21
![Page 83: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/83.jpg)
An optimizingcompiler
Front−end
Inlining
Loop unrolling / blocking / fusion ...
Recursivity suppressionCFG normalization
Call graphControl flow graph
OptimizationsAnalyses
Source code
Spatial / temporal locality
Code optimization in GCC – p.21
![Page 84: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/84.jpg)
An optimizingcompiler
Front−end
SSA
Inlining
Loop unrolling / blocking / fusion ...CFG normalization
Spatial / temporal localityInduction variablesArray access functions
Dependence analysis Pointers and alias analysis
OptimizationsAnalyses
Source code
Call graphControl flow graph Recursivity suppression
Code optimization in GCC – p.21
![Page 85: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/85.jpg)
Loop OptimizationsLoops are normalized after detection ofinduction variables.
Geometric representation of array accessescan be then constructed.
Dependence analysis is necessary forvalidating loop transformations.
These points are still under development.
Code optimization in GCC – p.22
![Page 86: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/86.jpg)
Loop OptimizationsLoops are normalized after detection ofinduction variables.
Geometric representation of array accessescan be then constructed.
Dependence analysis is necessary forvalidating loop transformations.
These points are still under development.
Code optimization in GCC – p.22
![Page 87: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/87.jpg)
Loop OptimizationsLoops are normalized after detection ofinduction variables.
Geometric representation of array accessescan be then constructed.
Dependence analysis is necessary forvalidating loop transformations.
These points are still under development.
Code optimization in GCC – p.22
![Page 88: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/88.jpg)
Loop OptimizationsLoops are normalized after detection ofinduction variables.
Geometric representation of array accessescan be then constructed.
Dependence analysis is necessary forvalidating loop transformations.
These points are still under development.
Code optimization in GCC – p.22
![Page 89: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/89.jpg)
An optimizingcompiler
Front−end
SSA
Inlining
Loop unrolling / blocking / fusion ...CFG normalization
Spatial / temporal localityInduction variablesArray access functions
Dependence analysis Pointers and alias analysis
OptimizationsAnalyses
Source code
Call graphControl flow graph Recursivity suppression
Code optimization in GCC – p.23
![Page 90: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/90.jpg)
An optimizingcompiler
Front−end
SSA
Inlining
Loop unrolling / blocking / fusion ...
Recursivity suppressionCFG normalization
Spatial / temporal locality
Call graphControl flow graph
Induction variablesArray access functionsPointers and alias analysisDependence analysis
Source code
OptimizationsAnalyses
Unparser
Optimized code
Code optimization in GCC – p.23
![Page 91: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/91.jpg)
RemerciementsMerci à tous ceux qui ont contribué à la réussitede ce projet :
Code optimization in GCC – p.24
![Page 92: Code optimization in GCC - Mines ParisTech · Code optimization in GCC Sebastian· Pop Universite· Louis Pasteur Strasbourg FRANCE Code optimization in GCC Œ p.1](https://reader033.vdocuments.us/reader033/viewer/2022050715/5d55793988c993af098b7525/html5/thumbnails/92.jpg)
RemerciementsMerci à tous ceux qui ont contribué à la réussitede ce projet :
l’équipe ICPS pour l’excellente ambiance,
Philippe Clauss, Vincent Loechner et BenoîtMeister pour leur travail de recherche,
Catherine Mongenet pour le cours de compil,
Frédéric Wagner et Diego Novillo pourm’avoir accompagné dans ce projet,
the FSF for GCC, Debian, Linux and Prosper
et ma famille.Code optimization in GCC – p.24