28 Document Revision History

Revision A (June 2019)

  • Initial revision of the document.

Revision B (October 2021)

  • Added code coverage information
  • Added stack guidance
  • Reformatted and renumbered

Revision C (April 2023)

  • Updated library information to reflect recent changes, including the Microchip Unified Standard Library
  • Corrected examples of using the __pack specifier
  • Removed 'How To' on the cause or reset, which was not appropriate for PIC32C/SAM devices
  • Updated the size of floating-point types to reflect recent compiler changes
  • Updated information on how to ensure a function is not removed
  • Updated information relating to using a debugger
  • Updated information on the compiler option controls available in the MPLAB X IDE
  • Updated information on the runtime startup code, including information on the data initialization template
  • Provided dedicated sections on all compiler options in addition to a summary table
  • Added new information on -mdfp, -mpure-code, -feliminate-unused-debug-symbols, -Og, and --dinit-compress options
  • Some options and description were not relevant for PIC32/SAM devices and were removed
  • Added divergences from the C99 language standard
  • Expanded configuration bit access information
  • Improved information on tightly coupled memories
  • Added used variable attribute
  • Added externally_visible and nopa function attributes
  • Added information on placing code in eXecute Only Memory (XOM)
  • Updated information on interrupt context switch
  • Improved information on smart IO features
  • Many general corrections and improvements

Revision D (September 2023)

  • Updated references to the C++ standard to reflect that the ISO/IEC 14882:2014 C++ program language is now supported
  • Defined the compiler's implementation-defined behavior for the C++14 standard in a new section
  • Included additional information on interrupt operation
  • Removed the CCI chapter and references to this, as CCI is not supported for C/SAM devices and the feature is disabled in the MPLAB X IDE

Revision E (June 2024)

  • Added new How To explaining how the stack usage for each function in a module can be displayed
  • Added new How To showing how to prevent a program's checksum to change
  • Added summary of supported Arm architectures and cores
  • Removed reference to the unsupported -mreserve option from a How To
  • Updated compiler options used with the Linktime Optimizations setting in XC32 Global options tab of the MPLAB X IDE Project Properties
  • Added option present in the xc32-ar (Library Archive) tab of the MPLAB X IDE Project Properties
  • Added a diagram indicating the internal compiler applications
  • Added the following options to the guide:
    -marm -mcmse -mlibc-variant
    -mmalloc-variant --version -std
    -Wformat-smart-io -dA -fdiagnostics-show-caret
    -fframe-base-loclist -mno-info-linker -madj-exiting-edge-prob
    -mauto-indexing -ffat-lto-objects -finline-small-functions
    -mloop-rename-registers -flto-partition -fpeel-loops
    -mthumb2-align-loop -ftracer -fuse-linker-plugin
    -T
  • Corrected typo in the name of what should have been the --dint-compression option and specified this with the -Wl, prefix, since it is a linker option
  • Added tcm variable attribute
  • Removed erroneous text and corrected the example in the Variables in Register section
  • Updated the Dynamic Memory Allocation section to include the new allocation schemes
  • Updated the runtime startup code section to include the on-exit feature