[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
This commit is contained in:
parent
a60bc55c69
commit
197d9a55f1
|
@ -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() {
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
! Check that the driver correctly defines macros with the compiler version
|
||||
|
||||
! REQUIRES: new-flang-driver
|
||||
|
||||
!--------------------------
|
||||
! FLANG DRIVER (flang-new)
|
||||
!--------------------------
|
||||
! RUN: %flang-new -E %s 2>&1 | FileCheck %s --ignore-case
|
||||
|
||||
!-----------------------------------------
|
||||
! FRONTEND FLANG DRIVER (flang-new -fc1)
|
||||
!-----------------------------------------
|
||||
! RUN: %flang-new -fc1 -E %s 2>&1 | FileCheck %s --ignore-case
|
||||
|
||||
!-----------------
|
||||
! EXPECTED OUTPUT
|
||||
!-----------------
|
||||
! CHECK: flang = 1
|
||||
! CHECK: flang_major = {{[1-9][0-9]*$}}
|
||||
! CHECK: flang_minor = {{[0-9]+$}}
|
||||
! CHECK: flang_patchlevel = {{[0-9]+$}}
|
||||
|
||||
integer, parameter :: flang = __flang__
|
||||
integer, parameter :: flang_major = __flang_major__
|
||||
integer, parameter :: flang_minor = __flang_minor__
|
||||
integer, parameter :: flang_patchlevel = __flang_patchlevel__
|
Loading…
Reference in a new issue