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-init option 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-prologues option and no_gccisr attribute
  • Added new -mcall-isr-prologues option
  • 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-io and -msmart-io-format options, which control the feature set of library code that performs formatted IO
  • Added section describing the new -mreserve option, which allows you to prevent regions of memory being populated by the linker
  • Added sections describing the -mno-pa-on-file and -mno-pa-on-function options, as well as the new -mno-pa-outline-calls option, which all control procedural abstraction optimizations
  • Added sections describing the -f[no-]fat-lto-objects, -flto-partition, -fomit-frame-pointer, and -funroll-[all-]loops optimzation options
  • Added the mapped linker option, -Wl,--section-start
  • Added in missing sections for the -MF, -P and -U driver 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 -D option, 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 __CODECOV preprocessor macro and indicated when it is defined
  • Clarified that the __nopa specifier is only available when the CCI is enabled
  • Added a section discussing linker script symbols

Revision G (December 2022)

  • Updated the operation of the -mrelax option, which now performs additional optimizations
  • Ensured that the no- forms of options are indicated in the option summary tables
  • Added description for the -fcommon option
  • 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 -d option
  • Provided a summary of the optimizations performed by the compiler
  • Added descriptions of the ei() and di() macros provided by <xc.h>
  • Added description of the new NOP() macro provided by <xc.h>
  • Corrected the operation summary for the builtin_avr_cli and builtin_avr_insert_bits built-in functions

Revision H (December 2023)

  • Added section for the new -mfuse-action option, 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-progmem option and its setting of the FLMAPLOCK bit
  • Expanded information relating to the -fcommon option
  • Expanded information relating to the -fdata-sections and -ffunction-sections options
  • Added new checksum field to the MPLAB X IDE project properties dialogs
  • General improvements to the descriptions of compiler features and options