www.ti.com
2.7.2 How You Can Use Diagnostic Suppression Options ........................................................ 47
2.8 Other Messages ........................................................................................................... 48
2.9 Generating Cross-Reference Listing Information (--gen_acp_xref Option) ........................................ 48
2.10 Generating a Raw Listing File (--gen_acp_raw Option) .............................................................. 48
2.11 Using Inline Function Expansion ........................................................................................ 50
2.11.1 Inlining Intrinsic Operators ..................................................................................... 50
2.11.2 Automatic Inlining ................................................................................................ 50
2.11.3 Unguarded Definition-Controlled Inlining ..................................................................... 50
2.11.4 Guarded Inlining and the _INLINE Preprocessor Symbol .................................................. 51
2.11.5 Inlining Restrictions ............................................................................................. 52
2.12 Interrupt Flexibility Options (--interrupt_threshold Option) ........................................................... 53
2.13 Linking C6400 Code With C6200/C6700/Older C6400 Object Code ............................................... 54
2.14 Using Interlist ............................................................................................................... 54
2.15 Generating and Using Performance Advice ........................................................................... 55
2.16 Controlling Application Binary Interface ................................................................................ 55
2.17 Enabling Entry Hook and Exit Hook Functions ........................................................................ 57
3 Optimizing Your Code ........................................................................................................ 58
3.1 Invoking Optimization ..................................................................................................... 59
3.2 Optimizing Software Pipelining .......................................................................................... 60
3.2.1 Turn Off Software Pipelining (--disable_software_pipelining Option) ...................................... 61
3.2.2 Software Pipelining Information ................................................................................. 61
3.2.3 Collapsing Prologs and Epilogs for Improved Performance and Code Size .............................. 65
3.3 Redundant Loops .......................................................................................................... 67
3.4 Utilizing the Loop Buffer Using SPLOOP on C6400+, C6740, and C6600 ........................................ 68
3.5 Reducing Code Size (--opt_for_space (or -ms) Option) .............................................................. 68
3.6 Performing File-Level Optimization (--opt_level=3 option) ........................................................... 70
3.6.1 Controlling File-Level Optimization (--std_lib_func_def Options) ........................................... 70
3.6.2 Creating an Optimization Information File (--gen_opt_info Option) ........................................ 70
3.7 Performing Program-Level Optimization (--program_level_compile and --opt_level=3 options) ................ 71
3.7.1 Controlling Program-Level Optimization (--call_assumptions Option) ..................................... 71
3.7.2 Optimization Considerations When Mixing C/C++ and Assembly ......................................... 72
3.8 Using Feedback Directed Optimization ................................................................................. 73
3.8.1 Feedback Directed Optimization ............................................................................... 73
3.8.2 Profile Data Decoder ............................................................................................. 75
3.8.3 Feedback Directed Optimization API .......................................................................... 76
3.8.4 Feedback Directed Optimization Summary ................................................................... 76
3.9 Using Profile Information to Get Better Program Cache Layout and Analyze Code Coverage ................. 77
3.9.1 Background and Motivation ..................................................................................... 77
3.9.2 Code Coverage ................................................................................................... 78
3.9.3 What Performance Improvements Can You Expect to See? ............................................... 79
3.9.4 Program Cache Layout Related Features and Capabilities ................................................ 79
3.9.5 Program Instruction Cache Layout Development Flow ...................................................... 80
3.9.6 Comma-Separated Values (CSV) Files with Weighted Call Graph (WCG) Information ................ 83
3.9.7 Linker Command File Operator - unordered() ................................................................ 83
3.9.8 Things To Be Aware Of .......................................................................................... 86
3.10 Indicating Whether Certain Aliasing Techniques Are Used .......................................................... 87
3.10.1 Use the --aliased_variables Option When Certain Aliases are Used ..................................... 87
3.10.2 Use the --no_bad_aliases Option to Indicate That These Techniques Are Not Used .................. 87
3.10.3 Using the --no_bad_aliases Option With the Assembly Optimizer ........................................ 88
3.11 Prevent Reordering of Associative Floating-Point Operations ....................................................... 88
3.12 Use Caution With asm Statements in Optimized Code .............................................................. 89
3.13 Automatic Inline Expansion (--auto_inline Option) .................................................................... 89
3.14 Using Performance Advice to Optimize your Code ................................................................... 90
3
SPRU187U–July 2012 Contents
Submit Documentation Feedback
Copyright © 2012, Texas Instruments Incorporated