CP7031 COMPILER OPTIMIZATION TECHNIQUES
UNIT I INTRODUCTION
Language Processors - The Structure of a Compiler – The Evolution of Programming Languages- The Science of Building a Compiler – Applications of Compiler Technology Programming Language Basics - The Lexical Analyzer Generator -Parser Generator - Overview of Basic Blocks and Flow Graphs - Optimization of Basic Blocks - Principle Sources of Optimization.
UNIT II INSTRUCTION-LEVEL PARALLELISM
Processor Architectures – Code-Scheduling Constraints – Basic-Block Scheduling –Global Code Scheduling – Software Pipelining.
UNIT III OPTIMIZING FOR PARALLELISM AND LOCALITY-THEORY
Basic Concepts – Matrix-Multiply: An Example - Iteration Spaces - Affine Array Indexes – Data Reuse Array data dependence Analysis.
UNITIV OPTIMIZING FOR PARALLELISM AND LOCALITY – APPLICATION
Finding Synchronization - Free Parallelism – Synchronization Between Parallel Loops – Pipelining – Locality Optimizations – Other Uses of Affine Transforms.
UNIT V INTERPROCEDURAL ANALYSIS
Basic Concepts – Need for Interprocedural Analysis – A Logical Representation of Data Flow – A Simple Pointer-Analysis Algorithm – Context Insensitive Interprocedural Analysis - ContextSensitive Pointer-Analysis - Datalog Implementation by Binary Decision Diagrams.
REFERENCES:
1. Alfred V. Aho, Monica S.Lam, Ravi Sethi, Jeffrey D.Ullman, “Compilers:Principles, Techniques and Tools”, Second Edition, Pearson Education,2008.
2. Randy Allen, Ken Kennedy, “Optimizing Compilers for Modern Architectures: A Dependence-based Approach”, Morgan Kaufmann Publishers, 2002.
3. Steven S. Muchnick, “Advanced Compiler Design and Implementation”,Morgan Kaufmann Publishers - Elsevier Science, India, Indian Reprint 2003.