diff options
author | Faris Rehman <faris.rehman@arm.com> | 2021-01-19 13:15:53 +0000 |
---|---|---|
committer | Andrzej Warzynski <andrzej.warzynski@arm.com> | 2021-01-19 13:22:59 +0000 |
commit | 197d9a55f105391f34a0657e6c1d5ef3166dad7d (patch) | |
tree | 823674856676eca1f5d6c7aece1337e83334e742 /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | a60bc55c693609e9417419b72754b9984f52acbe (diff) | |
download | llvm-197d9a55f105391f34a0657e6c1d5ef3166dad7d.zip llvm-197d9a55f105391f34a0657e6c1d5ef3166dad7d.tar.gz llvm-197d9a55f105391f34a0657e6c1d5ef3166dad7d.tar.bz2 |
[flang][driver] Add standard macro predefinitions for compiler version
Add the following standard predefinitions that f18 supports:
* `__flang__`,
* `__flang_major__`,
* `__flang_minor__`,
* `__flang_patchlevel__`
Summary of changes:
- Populate Fortran::parser::Options#predefinitions with the default
supported predefinitions
Differential Revision: https://reviews.llvm.org/D94516
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | flang/lib/Frontend/CompilerInvocation.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp index aeb4ac3..cd0faf2 100644 --- a/flang/lib/Frontend/CompilerInvocation.cpp +++ b/flang/lib/Frontend/CompilerInvocation.cpp @@ -8,6 +8,7 @@ #include "flang/Frontend/CompilerInvocation.h" #include "flang/Frontend/PreprocessorOptions.h" +#include "flang/Version.inc" #include "clang/Basic/AllDiagnostics.h" #include "clang/Basic/DiagnosticDriver.h" #include "clang/Basic/DiagnosticOptions.h" @@ -258,6 +259,18 @@ void CompilerInvocation::SetDefaultFortranOpts() { std::vector<std::string> searchDirectories{"."s}; fortranOptions.searchDirectories = searchDirectories; fortranOptions.isFixedForm = false; + + // Populate the macro list with version numbers and other predefinitions. + // TODO: When expanding this list of standard predefinitions, consider + // creating a dedicated API for this. Also at some point we will need to + // differentiate between different targets. + fortranOptions.predefinitions.emplace_back("__flang__", "1"); + fortranOptions.predefinitions.emplace_back( + "__flang_major__", FLANG_VERSION_MAJOR_STRING); + fortranOptions.predefinitions.emplace_back( + "__flang_minor__", FLANG_VERSION_MINOR_STRING); + fortranOptions.predefinitions.emplace_back( + "__flang_patchlevel__", FLANG_VERSION_PATCHLEVEL_STRING); } void CompilerInvocation::setFortranOpts() { |