XL/XLClang: Fix detection of C++ 14 mode on Linux

This compiler does not always define `__cplusplus` correctly, but does
define a feature macro that we can use to distinguish this mode.
This commit is contained in:
Brad King committed 2024-04-04 17:56:31 -04:00
1 parent 863cde8c19
commit 3587579f34
2 files changed
+12

No files matched your search

+6
View File
@@ -66,6 +66,12 @@ char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
# else
# define CXX_STD __cplusplus
# endif
#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__)
# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi)
# define CXX_STD CXX_STD_14
# else
# define CXX_STD __cplusplus
# endif
#else
# define CXX_STD __cplusplus
#endif
@@ -35,6 +35,12 @@ struct Outputter;
# else
# define CXX_STD __cplusplus
# endif
#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__)
# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi)
# define CXX_STD CXX_STD_14
# else
# define CXX_STD __cplusplus
# endif
#else
# define CXX_STD __cplusplus
#endif