aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorFaris Rehman <faris.rehman@arm.com>2021-01-19 13:15:53 +0000
committerAndrzej Warzynski <andrzej.warzynski@arm.com>2021-01-19 13:22:59 +0000
commit197d9a55f105391f34a0657e6c1d5ef3166dad7d (patch)
tree823674856676eca1f5d6c7aece1337e83334e742 /flang/lib/Frontend/CompilerInvocation.cpp
parenta60bc55c693609e9417419b72754b9984f52acbe (diff)
downloadllvm-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.cpp13
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() {