<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Compilers</title><link>https://sourceforge.net/p/predef/wiki/Compilers/</link><description>Recent changes to Compilers</description><atom:link href="https://sourceforge.net/p/predef/wiki/Compilers/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 22 May 2020 19:43:35 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/predef/wiki/Compilers/feed" rel="self" type="application/rss+xml"/><item><title>Compilers modified by Nicole Trudeau</title><link>https://sourceforge.net/p/predef/wiki/Compilers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v96
+++ v97
@@ -409,6 +409,8 @@
 The entry on XL C/C++ has been split into three for clarity. This entry covers the following versions:
 [IBM XL C/C++ for Linux](https://www.ibm.com/support/knowledgecenter/en/SSXVZZ_13.1.0/com.ibm.xlcpp131.linux.doc/compiler_ref/xlmacros.html) for big endian distributions
 [IBM XL C/C++ for AIX](https://www.ibm.com/support/knowledgecenter/en/SSGH3R_16.1.0/com.ibm.xlcpp161.aix.doc/compiler_ref/xlmacros.html?sc=SSGH3R_latest) (Note: starting in version 16.1, IBM XL C/C++ for AIX also offers a Clang-based compiler invocation, see the Clang-based versions section above for that compiler invocation)
+
+Clang-based versions of IBM XL C/C++ will also define the legacy macros listed in this section when -qxlcompatmacros is specified.

 Type|Macro|Format|Description
 ---|---|---|---
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicole Trudeau</dc:creator><pubDate>Fri, 22 May 2020 19:43:35 -0000</pubDate><guid>https://sourceforge.net6af8da014477f9709b0d41e4015b2426de49fe4a</guid></item><item><title>Compilers modified by Nicole Trudeau</title><link>https://sourceforge.net/p/predef/wiki/Compilers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v95
+++ v96
@@ -120,16 +120,19 @@

 ## [Clang](http://en.wikipedia.org/wiki/Clang) ##

-Type|Macro|Format
----|---|---
-Identification|`__clang__`|
-Version|`__clang_major__`|Version
-Version|`__clang_minor__`|Revision
-Version|`__clang_patchlevel__`|Patch
+Type|Macro|Format|Description
+---|---|---|---
+Identification|`__clang__`||
+Version|`__clang_major__`|V|V = Major version
+Version|`__clang_minor__`|R|R = Minor version
+Version|`__clang_patchlevel__`|P|P = Patch level
+Version|`__clang_version__`|V.R.P (tags/RELEASE_VRP/final)|V = Major version&lt;br/&gt;R = Minor version&lt;br/&gt;P = Patch level

 Notice that clang also defines the GNU C version macros, but you should use the clang [feature checking macros](http://clang.llvm.org/docs/LanguageExtensions.html#feature_check) to detect the availability of various features.

 The values of the `__clang_major__`, `__clang_minor__`, and `__clang_patchlevel__` macros are not consistent across distributions of the Clang compiler.  For example, the Clang 3.1 distribution available at http://clang.llvm.org defines `__clang_major__` and `__clang_minor__` as `3` and `1` respectively.  The version of Clang distributed with Apple XCode 4.4 is branded as "Apple Clang 4.0" and derives from the open source Clang 3.1 distribution, but defines these macros with the values `4` and `0` respectively.  Apple's Clang distribution can be identified by the presence of the `__apple_build_version__` macro.
+
+The meaning of the `__clang__` and related macros has changed subtly over the years, from identifying the Clang compiler to identifying compilers that use the Clang infrastructure. For example, IBM XL C/C++ also defines these macros. [IBM XL C/C++ for Linux](https://www.ibm.com/support/knowledgecenter/en/SSXVZZ_16.1.1/com.ibm.xlcpp1611.lelinux.doc/compiler_ref/xlmacros.html?sc=SSXVZZ_latest) defines them starting from version 13.1.1. [IBM XL C/C++ for AIX](https://www.ibm.com/support/knowledgecenter/en/SSGH3R_16.1.0/com.ibm.xlcpp161.aix.doc/compiler_ref/xlmacros.html?sc=SSGH3R_latest) defines them starting from version 16.1.

 ## [Comeau C++](http://en.wikipedia.org/wiki/Comeau_C/C%2B%2B) ##

@@ -378,48 +381,70 @@
 ---|---
 3.34|334

-## [IBM XL C/C++](http://en.wikipedia.org/wiki/VisualAge) ##
-
-Type|Macro|Format|Description
----|---|---|---
-Identification|`__xlc__`| |
-Identification|`__xlC__`| |
-Version|`__xlC__`|0xVVRR|VV = Version&lt;br/&gt;RR = Revision
-Version|`__xlC_ver__`|0x0000PPBB|PP = Patch&lt;br/&gt;BB = Build
-Identification|`__IBMC__`| |From ?
-Identification|`__IBMCPP__`| |From ?
-Version|`__IBMC__`&lt;br/&gt;`__IBMCPP__`|VRP|V = Version&lt;br/&gt;R = Revision&lt;br/&gt;P = Patch
-
-Notice that the z/OS C/C++ compiler also defines `__IBMC__` and `__IBMCPP__` macros, but with a different syntax. See the entry on the z/OS C/C++ compiler below for further information.
-
-##### Example #####
-
-IBM XL C/C++|`__xlC__`|`__xlC_ver__`|`__IBMCPP__`
----|---|---
-3.1|0x0301||
-4.5|0x0405||450
-5.0|0x0500||500
-12.01.0000.0004|0x0C01|0x00000004|1210
-
-## [IBM z/OS C/C++](http://en.wikipedia.org/wiki/VisualAge) ##
-
-This is the XL C/C++ compiler for mainframes (e.g. z/OS). The entry on XL C/C++ has been split into two for clarity.
-
-Type|Macro|Format|Description
----|---|---|---
-Identification|`__IBMC__`| |
-Identification|`__IBMCPP__`| |
-Version|`__IBMC__`&lt;br/&gt;`__IBMCPP__`|NVRRM|N = Product (0 = C/370, 1 = MVS, 2 = OS/390, 4 = z/OS)&lt;br/&gt;V = Version&lt;br/&gt;RR = Revision&lt;br/&gt;P = Patch&lt;br/&gt;&lt;br/&gt;Defined for z/OS XL C/C++
-Version|`__COMPILER_VER__`|0xNVRRPPPP|N = Product (see above)&lt;br/&gt;V = Version&lt;br/&gt;RR = Revision&lt;br/&gt;PPPP = Patch&lt;br/&gt;&lt;br/&gt;Defined for z/OS XL C/C++
-
-Notice that XL C/C++ also defines `__IBMC__` and `__IBMCPP__` macros, but with a different syntax. You can use `__xlC__` (only defined for XL C/C++) or `__COMPILER_VER__` (only defined for z/OS C/C++) to distinguish between the two. Alternatively, the macro identifying z/OS (`__MVS__`) can be used to distinguish between them.
+##[IBM XL C/C++ (Clang-based versions)](https://www.ibm.com/us-en/marketplace/ibm-c-and-c-plus-plus-compiler-family)##
+The entry on XL C/C++ has been split into three for clarity. This entry covers the following versions:
+[IBM XL C/C++ for Linux](https://www.ibm.com/support/knowledgecenter/en/SSXVZZ_16.1.1/com.ibm.xlcpp1611.lelinux.doc/compiler_ref/xlmacros.html?sc=SSXVZZ_latest) for little endian distributions version 13.1.1 and later 
+[IBM XL C/C++ for AIX](https://www.ibm.com/support/knowledgecenter/en/SSGH3R_16.1.0/com.ibm.xlcpp161.aix.doc/compiler_ref/xlmacros.html?sc=SSGH3R_latest) version 16.1 and later (Clang-based compiler invocation only, see next section for legacy compiler invocation)
+Clang-based versions of IBM XL C/C++ define the Clang macros listed in the Clang section.
+Specify -qxlcompatmacros to also define the legacy macros listed in IBM XL C/C++ (legacy versions). This is useful when you migrate programs from IBM XL C/C++ (legacy versions) to IBM XL C/C++ (Clang-based versions).
+
+Type|Macro|Format|Description
+---|---|---|---
+Identification|`__ibmxl__`| |C and C++ compiler
+|`__clang__`||
+Version|`__ibmxl_vrm__`|0xVVRRMM00|VV = Version&lt;br/&gt;RR = Release&lt;br/&gt;MM = Modification
+|`__ibmxl_version__`|V|V = Version
+|`__ibmxl_release__`|R|R = Release
+|`__ibmxl_modification__`|M|M = Modification
+|`__ibmxl_ptf_fix_level__`|F|F = Fix Pack
+
+##### Example #####
+IBM XL C/C++|`__ibmxl_vrm__`
+---|---
+13.1.6.1|0x0D010600
+16.1.0.0|0x10010000
+
+## [IBM XL C/C++ (legacy versions)](https://www.ibm.com/us-en/marketplace/ibm-c-and-c-plus-plus-compiler-family) ##
+
+The entry on XL C/C++ has been split into three for clarity. This entry covers the following versions:
+[IBM XL C/C++ for Linux](https://www.ibm.com/support/knowledgecenter/en/SSXVZZ_13.1.0/com.ibm.xlcpp131.linux.doc/compiler_ref/xlmacros.html) for big endian distributions
+[IBM XL C/C++ for AIX](https://www.ibm.com/support/knowledgecenter/en/SSGH3R_16.1.0/com.ibm.xlcpp161.aix.doc/compiler_ref/xlmacros.html?sc=SSGH3R_latest) (Note: starting in version 16.1, IBM XL C/C++ for AIX also offers a Clang-based compiler invocation, see the Clang-based versions section above for that compiler invocation)
+
+Type|Macro|Format|Description
+---|---|---|---
+Identification|`__xlC__`| |C and C++ compiler
+Version|`__IBMC__`| 0xVVRRMM|C compiler&lt;br/&gt;&lt;br/&gt;VV = Version&lt;br/&gt;RR = Release&lt;br/&gt;MM = Modification
+|`__IBMCPP__`| 0xVVRRMM|C++ compiler&lt;br/&gt;&lt;br/&gt;VV = Version&lt;br/&gt;RR = Release&lt;br/&gt;MM = Modification
+|`__xlc__`|0xVVRRMMFF|C compiler&lt;br/&gt;&lt;br/&gt;VV = Version&lt;br/&gt;RR = Release&lt;br/&gt;MM = Modification&lt;br/&gt;FF = Fix Pack
+|`__xlC__`|0xVVRR|C and C++ compiler&lt;br/&gt;&lt;br/&gt;VV = Version&lt;br/&gt;RR = Release
+|`__xlC_ver__`|0x0000MMFF|MM = Modification&lt;br/&gt;FF = Fix Pack
+
+##### Example #####
+
+IBM XL C/C++|`__IBMCPP__`|`__xlC__`|`__xlC_ver__`
+---|---|---|---
+13.1.3.5|0x0D0103|0x0D01|0x00000305
+12.1.0.4|0x0C0100|0x0C01|0x00000004
+
+## [IBM z/OS XL C/C++](https://www.ibm.com/us-en/marketplace/xl-cpp-compiler-zos) ##
+
+The entry on XL C/C++ has been split into three for clarity. This entry covers the [XL C/C++ compiler for mainframes (e.g. z/OS)](https://www.ibm.com/support/knowledgecenter/en/SSLTBW_latest/com.ibm.zos.v2r3.cbclx01/xlmacros.htm). 
+
+Type|Macro|Format|Description
+---|---|---|---
+Identification|`__IBMC__`| |C compiler
+|`__IBMCPP__`| |C++ compiler
+Version|`__IBMC__`&lt;br/&gt;`__IBMCPP__`|NVRRM|N = Product (0 = C/370, 1 = MVS, 2 = OS/390, 4 = z/OS)&lt;br/&gt;V = Version&lt;br/&gt;RR = Revision&lt;br/&gt;M = Modification
+|`__COMPILER_VER__`|0xNVRRMMFF|N = Product (see above)&lt;br/&gt;V = Version&lt;br/&gt;RR = Revision&lt;br/&gt;MM = Modification&lt;br/&gt;FF = Fix Pack
+
+Notice that XL C/C++ also defines `__IBMC__` and `__IBMCPP__` macros, but with a different syntax. You can use `__xlC__` (only defined for XL C/C++) or `__COMPILER_VER__` (only defined for z/OS XL C/C++) to distinguish between the two. Alternatively, the macro identifying z/OS (`__MVS__`) can be used to distinguish between them.

     :::c
     #if defined(__IBMC__) || defined(__IBMCPP__)
     # if defined(__COMPILER_VER__)
-    /* z/OS C/C++ so __IBMC__ is defined as NVRRM */
+    /* z/OS XL C/C++ so __IBMC__ is defined as NVRRM */
     # else
-    /* XL C/C++ so __IBMC__ is defined as VRP */
+    /* z/OS XL C/C++ so __IBMC__ is defined as VRM */
     # endif
     #endif

@@ -427,8 +452,7 @@

 IBM z/OS XL C/C++|`__IBMC__`|`__COMPILER_VER__`
 ---|---|---
-1.7|41070|0x41070000
-1.13|41130|0x410D0000
+2.3|42030|0x42030000

 ## [ImageCraft C](http://www.imagecraft.com/) ##

@@ -521,6 +545,8 @@
 Type|Macro
 ---|---
 Identification|`__llvm__`
+
+The Clang compiler has an expectation that it operates in conjunction with the LLVM compiler, so the Clang compiler defines `__llvm__` too. IBM XL C/C++ (Clang-based versions) use Clang infrastructure, so IBM XL C/C++ for Linux versions 13.1.1 to 16.1 also define `__llvm__`. Starting from version 16.1.1, [IBM XL C/C++ for Linux](https://www.ibm.com/support/knowledgecenter/en/SSXVZZ_16.1.1/com.ibm.xlcpp1611.lelinux.doc/compiler_ref/xlmacros.html?sc=SSXVZZ_latest) no longer defines `__llvm__`.

 ## MetaWare High C/C++ ##

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicole Trudeau</dc:creator><pubDate>Wed, 13 Mar 2019 21:17:36 -0000</pubDate><guid>https://sourceforge.net77ca275e61a5a5a650040d7f9f74a08a408c529d</guid></item><item><title>Compilers modified by Bjorn Reese</title><link>https://sourceforge.net/p/predef/wiki/Compilers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v94
+++ v95
@@ -576,6 +576,11 @@
 10.0 (2010) SP1|1600|160040219
 11.0 (2012)|1700|170050727
 12.0 (2013)|1800|180021005
+14.0 (2015)|1900|190023026
+14.0 (2015 Update 1)|1900|190023506
+14.0 (2015 Update 2)|1900|190023918
+14.0 (2015 Update 3)|1900|190024210
+15.0 (2017)|1910|191025017

 ## [Microtec C/C++](http://www.mentor.com/microtec/) ##

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Mon, 10 Apr 2017 15:58:24 -0000</pubDate><guid>https://sourceforge.net8df75fc67c66a1f38e03ff14f53f9f95b15db030</guid></item><item><title>Compilers modified by Bjorn Reese</title><link>https://sourceforge.net/p/predef/wiki/Compilers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v93
+++ v94
@@ -363,7 +363,7 @@

 HP aCC|`__HP_aCC`
 ---|---
-A.01.21|012100
+A.01.21|12100

 ### IAR C/C++ ###

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Thu, 02 Jul 2015 10:03:02 -0000</pubDate><guid>https://sourceforge.net098f9fe26029a13f831b34b9cba07442bb9ad9ed</guid></item><item><title>Compilers modified by Tom Honermann</title><link>https://sourceforge.net/p/predef/wiki/Compilers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v92
+++ v93
@@ -173,6 +173,12 @@
 ---|---
 Identification|`__COMPCERT__`

+## [Coverity C/C++ Static Analyzer](http://www.coverity.com/) ##
+
+Type|Macro
+---|---
+Identification|`__COVERITY__`
+
 ## Cray C ##

 Type|Macro|Description
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Honermann</dc:creator><pubDate>Tue, 10 Mar 2015 16:08:24 -0000</pubDate><guid>https://sourceforge.net8b76ef6a50c45b57cf85735f238aa3e1641221d3</guid></item><item><title>Compilers modified by Bjorn Reese</title><link>https://sourceforge.net/p/predef/wiki/Compilers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v91
+++ v92
@@ -167,6 +167,12 @@
 ---|---
 Identification|`__convexc__`

+## [CompCert](http://en.wikipedia.org/wiki/CompCert) ##
+
+Type|Macro
+---|---
+Identification|`__COMPCERT__`
+
 ## Cray C ##

 Type|Macro|Description
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Mon, 09 Mar 2015 16:26:00 -0000</pubDate><guid>https://sourceforge.netfba1d4301ef9bb93d834f98a2a3e0191505fca32</guid></item><item><title>Compilers modified by Bjorn Reese</title><link>https://sourceforge.net/p/predef/wiki/Compilers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v90
+++ v91
@@ -844,6 +844,7 @@
 Type|Macro|Format|Description
 ---|---|---|---
 Identification|`__TI_COMPILER_VERSION__`| |
+Identification|`_TMS320C6X`| |All C6000 compilers
 Version|`__TI_COMPILER_VERSION__`|VVVRRRPPP|VVV = Version&lt;br /&gt;RRR = Revision&lt;br /&gt;PPP = Patch

 ##### Example #####
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Wed, 25 Feb 2015 12:45:05 -0000</pubDate><guid>https://sourceforge.net35da8d8f2631fded17dbb6d8770ca58798a3fb87</guid></item><item><title>Compilers modified by Bjorn Reese</title><link>https://sourceforge.net/p/predef/wiki/Compilers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v89
+++ v90
@@ -563,7 +563,7 @@
 10.0 (2010)|1600|160030319
 10.0 (2010) SP1|1600|160040219
 11.0 (2012)|1700|170050727
-12.0 (2013)|1800|
+12.0 (2013)|1800|180021005

 ## [Microtec C/C++](http://www.mentor.com/microtec/) ##

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Tue, 18 Nov 2014 20:31:26 -0000</pubDate><guid>https://sourceforge.net62aab96830dea77a5ee4701cfe85ed68733dfc45</guid></item><item><title>Compilers modified by Bjorn Reese</title><link>https://sourceforge.net/p/predef/wiki/Compilers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v88
+++ v89
@@ -560,7 +560,8 @@
 8.0 (2005)|1400|140050727
 9.0 (2008)|1500|150021022
 9.0 SP1|1500|150030729
-10.0 (2010)|1600|160040219
+10.0 (2010)|1600|160030319
+10.0 (2010) SP1|1600|160040219
 11.0 (2012)|1700|170050727
 12.0 (2013)|1800|

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Mon, 04 Aug 2014 14:06:02 -0000</pubDate><guid>https://sourceforge.netf404729d5e3464035463ac68ae264774904cc86c</guid></item><item><title>Compilers modified by Bjorn Reese</title><link>https://sourceforge.net/p/predef/wiki/Compilers/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v87
+++ v88
@@ -909,6 +909,12 @@
 3.4|304200805|UnixWare 7.1.4 UDK C++ (CC)
 4.2|402200805|UnixWare 7.1.4 UDK C (cc)

+## [VBCC](http://en.wikipedia.org/wiki/Vbcc) ##
+
+Type|Macro
+---|---
+Identification|`__VBCC__`
+
 ## [Watcom C++](http://en.wikipedia.org/wiki/Watcom) ##

 Type|Macro|Format|Description
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Sat, 08 Mar 2014 15:25:52 -0000</pubDate><guid>https://sourceforge.net7d0802bb6f8e573fcdc4db904f9b4e9c65f42c71</guid></item></channel></rss>