9 Document Revision History
Revision A (March 2018)
Initial release of this document, adapted from the MPLAB XC8 C Compiler User’s Guide, DS50002053.
Revision B (March 2019)
- Added information relating to
const-specified objects being located in program memory - Added information on the new code coverage feature
- Added information relating to chipinfo HTML files
- Added descriptions and screen captures of the MPLAB X IDE project property dialogs corresponding to the compiler command-line options
- Updated configuration bit information
- Clarified information relating to absolute objects
- Updated predefined macros table
- Miscellaneous corrections and improvements
Revision C (March 2020)
- This guide has been migrated to a new authoring and publication system; you may see differences in the formatting compared to previous revisions
- The documentation for the standard libraries has been updated
- Updated information relating to the structure of the DFPs
- Clarified and expanded information relating to optimizations
Revision D (September 2020)
- Updated and added new screen captures of MPLAB X IDE project properties dialogs
- Added screen captures of Microchip Studio project properties dialogs
- Added new
-Wl,--no-data-initoption to control new data initialisation feature - Documented additional options, including:
-Werror,-fdata-sections,-ffunction-sections,-glevel
Revision E (August 2021)
- Removed standard C library functions; these are now described in a separate Microchip Universal Standard Library Reference Guide document
- Added information on Smart IO features
- Added new
-m[no-]gas-isr-prologuesoption andno_gccisrattribute - Added new
-mcall-isr-prologuesoption - Added information on the code coverage feature
- Added information on stack guidance feature
- Expanded and updated information linking sections
- Updated and added new screen captures of MPLAB X IDE project properties dialogs
Revision F (June 2022)
- Corrected code examples and expanded information relating to writing interrupt routines
- Added sections describing the
-msmart-ioand-msmart-io-formatoptions, which control the feature set of library code that performs formatted IO - Added section describing the new
-mreserveoption, which allows you to prevent regions of memory being populated by the linker - Added sections describing the
-mno-pa-on-fileand-mno-pa-on-functionoptions, as well as the new-mno-pa-outline-callsoption, which all control procedural abstraction optimizations - Added sections describing the
-f[no-]fat-lto-objects,-flto-partition,-fomit-frame-pointer, and-funroll-[all-]loopsoptimzation options - Added the mapped linker option,
-Wl,--section-start - Added in missing sections for the
-MF,-Pand-Udriver options. - Clarified information relating to the const-in-program-memory feature
- Added sections describing the supported built-in functions
- Adjusted description of how quoted strings can be passed using the
-Doption, which has changed in the compiler - Made mention of the Analysis Tools Suite license (which replaces the Code Coverage license) required for the code coverage feature
- Added the
__CODECOVpreprocessor macro and indicated when it is defined - Clarified that the
__nopaspecifier is only available when the CCI is enabled - Added a section discussing linker script symbols
Revision G (December 2022)
- Updated the operation of the
-mrelaxoption, which now performs additional optimizations - Ensured that the
no-forms of options are indicated in the option summary tables - Added description for the
-fcommonoption - Adjusted the placement of some option descriptions to be consistent with the placement used by GCC docs
- Updated the screen captures of MPLAB X IDE project properties dialogs and described new options
- Added a C99 language divergence relating to the floating-point type specification
- Expanded description of
-doption - Provided a summary of the optimizations performed by the compiler
- Added descriptions of the
ei()anddi()macros provided by<xc.h> - Added description of the new
NOP()macro provided by<xc.h> - Corrected the operation summary for the
builtin_avr_cliandbuiltin_avr_insert_bitsbuilt-in functions
Revision H (December 2023)
- Added section for the new
-mfuse-actionoption, which can adjust linker options based on some configuration fuse settings - Added the Common C Interface (CCI) chapter, present in some other compiler user's guides
- Clarified the operation of the
-mconst-data-in-config-mapped-progmemoption and its setting of the FLMAPLOCK bit - Expanded information relating to the
-fcommonoption - Expanded information relating to the
-fdata-sectionsand-ffunction-sectionsoptions - Added new checksum field to the MPLAB X IDE project properties dialogs
- General improvements to the descriptions of compiler features and options
Revision J (October 2024)
- Added section for the
-W[no-]msgoption, which can enable and disable warning and advisory messages - Expanded the description of the
-Werroroption - Added description for the
-finline-functionsoption - Added description for the
-mno-data-initoption, which had previously been shown as a mapped linker option - Added description for the
-Toption, which had previously been shown as a mapped linker option - Added section on dual-core device support
- Added section on how to program the User Row memory
- Added section on how to program the Boot Row memory
- Added sections on the
keepobject and function attribute - Added section on the DIVA module routines and associated options, attribute and macro
- Rewrote the sections on writing interrupt code to describe the different strategies available, and added a section on writing interrupt functions using the compiler's new compact vector table feature
Revision K (June 2025)
- Modified command-line examples to
now use the
-mdfpoption - Added description of the
-mpaoption and clarified that all procedural abstraction options are for licensed compilers only - Expanded the description of the
avr-objdumputility - Added description of the
-mreorder-stack-varsoption, which controls a new optimization - Added description of
__nodivaspecifier - Clarified that the
__nopaspecifier is provided by<xc.h>, not CCI
