TMS320C6000 Optimizing Compiler V 6.1 User's Guide
Total Page:16
File Type:pdf, Size:1020Kb
TMS320C6000 Optimizing Compiler v 6.1 User's Guide Literature Number: SPRU187O May 2008 2 SPRU187O–May 2008 Submit Documentation Feedback Contents Preface.............................................................................................................................. 11 1 Introduction to the Software Development Tools .......................................................... 15 1.1 Software Development Tools Overview ................................................................................. 16 1.2 C/C++ Compiler Overview ................................................................................................ 17 1.2.1 ANSI/ISO Standard ............................................................................................... 17 1.2.2 Output Files ........................................................................................................ 18 1.2.3 Compiler Interface................................................................................................. 18 1.2.4 Utilities .............................................................................................................. 18 2 Using the C/C++ Compiler ......................................................................................... 19 2.1 About the Compiler......................................................................................................... 20 2.2 Invoking the C/C++ Compiler ............................................................................................. 20 2.3 Changing the Compiler's Behavior With Options ...................................................................... 21 2.3.1 Frequently Used Options......................................................................................... 27 2.3.2 Machine-Specific Options ........................................................................................ 30 2.3.3 Selecting Target CPU Version (--silicon_version Option).................................................... 31 2.3.4 Symbolic Debugging and Profiling Options .................................................................... 31 2.3.5 Specifying Filenames ............................................................................................. 32 2.3.6 Changing How the Compiler Interprets Filenames ........................................................... 33 2.3.7 Changing How the Compiler Processes C Files .............................................................. 33 2.3.8 Changing How the Compiler Interprets and Names Extensions ............................................ 33 2.3.9 Specifying Directories............................................................................................. 34 2.3.10 Assembler Options............................................................................................... 34 2.3.11 Deprecated Options.............................................................................................. 35 2.4 Controlling the Compiler Through Environment Variables............................................................ 36 2.4.1 Setting Default Compiler Options (C6X_C_OPTION) ........................................................ 36 2.4.2 Naming an Alternate Directory (C6X_C_DIR) ................................................................. 37 2.5 Precompiled Header Support ............................................................................................. 37 2.5.1 Automatic Precompiled Header ................................................................................. 37 2.5.2 Manual Precompiled Header .................................................................................... 38 2.5.3 Additional Precompiled Header Options ....................................................................... 38 2.6 Controlling the Preprocessor ............................................................................................. 38 2.6.1 Predefined Macro Names ........................................................................................ 38 2.6.2 The Search Path for #include Files ............................................................................. 39 2.6.3 Generating a Preprocessed Listing File (--preproc_only Option) ........................................... 40 2.6.4 Continuing Compilation After Preprocessing (--preproc_with_compile Option) ........................... 40 2.6.5 Generating a Preprocessed Listing File With Comments (--preproc_with_comments Option) ......... 40 2.6.6 Generating a Preprocessed Listing File With Line-Control Information (--preproc_with_line Option).. 41 2.6.7 Generating Preprocessed Output for a Make Utility (--preproc_dependency Option) ................... 41 2.6.8 Generating a List of Files Included With the #include Directive (--preproc_includes Option) ........... 41 2.6.9 Generating a List of Macros in a File (--preproc_macros Option) .......................................... 41 2.7 Understanding Diagnostic Messages.................................................................................... 41 SPRU187O–May 2008 Contents 3 Submit Documentation Feedback www.ti.com 2.7.1 Controlling Diagnostics ........................................................................................... 42 2.7.2 How You Can Use Diagnostic Suppression Options ......................................................... 43 2.8 Other Messages ............................................................................................................ 44 2.9 Generating Cross-Reference Listing Information (--gen_acp_xref Option)......................................... 44 2.10 Generating a Raw Listing File (--gen_acp_raw Option)............................................................... 45 2.11 Using Inline Function Expansion ......................................................................................... 46 2.11.1 Inlining Intrinsic Operators ...................................................................................... 46 2.11.2 Automatic Inlining ................................................................................................ 46 2.11.3 Unguarded Definition-Controlled Inlining...................................................................... 46 2.11.4 Guarded Inlining and the _INLINE Preprocessor Symbol .................................................. 47 2.11.5 Inlining Restrictions .............................................................................................. 48 2.12 Interrupt Flexibility Options (--interrupt_threshold Option) ............................................................ 49 2.13 Linking C6400 Code With C6200/C6700/Older C6400 Object Code................................................ 50 2.14 Using Interlist ............................................................................................................... 50 2.15 Enabling Entry Hook and Exit Hook Functions......................................................................... 51 3 Optimizing Your Code ............................................................................................... 53 3.1 Invoking Optimization ...................................................................................................... 54 3.2 Optimizing Software Pipelining ........................................................................................... 55 3.2.1 Turn Off Software Pipelining (--disable_software_pipelining Option)....................................... 56 3.2.2 Software Pipelining Information ................................................................................. 56 3.2.3 Collapsing Prologs and Epilogs for Improved Performance and Code Size .............................. 60 3.3 Redundant Loops .......................................................................................................... 62 3.4 Utilizing the Loop Buffer Using SPLOOP on C6400+ and C6740 ................................................... 63 3.5 Reducing Code Size (--opt_for_space (or -ms) Option) .............................................................. 63 3.6 Performing File-Level Optimization (--opt_level=3 option)............................................................ 64 3.6.1 Controlling File-Level Optimization (--std_lib_func_def Options) ........................................... 64 3.6.2 Creating an Optimization Information File (--gen_opt_info Option)......................................... 64 3.7 Performing Program-Level Optimization (--program_level_compile and --opt_level=3 options)................. 65 3.7.1 Controlling Program-Level Optimization (--call_assumptions Option)...................................... 65 3.7.2 Optimization Considerations When Mixing C/C++ and Assembly .......................................... 66 3.8 Using Feedback Directed Optimization.................................................................................. 67 3.8.1 Feedback Directed Optimization ................................................................................ 67 3.8.2 Profile Data Decoder.............................................................................................. 69 3.8.3 Code Coverage.................................................................................................... 70 3.8.4 Feedback Directed Optimization API ........................................................................... 71 3.8.5 Feedback Directed Optimization Summary .................................................................... 71 3.9 Indicating Whether Certain Aliasing