[PATCH] D94516: [flang][driver] Add standard predefinitions

Faris via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 12 09:37:51 PST 2021


FarisRehman created this revision.
Herald added a subscriber: pengfei.
Herald added a reviewer: sscalpone.
FarisRehman requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Add the following standard predefinitions that f18 supports: __flang__, __flang_major__, __flang__minor__, __flang_patchlevel__, __x86_64__

Summary of changes:

- Populate Fortran::parser::Options#predefinitions with the default supported predefinitions


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D94516

Files:
  flang/lib/Frontend/CompilerInvocation.cpp
  flang/test/Flang-Driver/compiler-defined-macros.f90


Index: flang/test/Flang-Driver/compiler-defined-macros.f90
===================================================================
--- /dev/null
+++ flang/test/Flang-Driver/compiler-defined-macros.f90
@@ -0,0 +1,24 @@
+! Check that the driver supports the standard version predefinitions that f18 does.
+
+! 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_major = {{[1-9][0-9]*$}}
+! CHECK: flang_minor = {{[0-9]+$}}
+! CHECK: flang_patchlevel = {{[0-9]+$}}
+
+integer, parameter :: flang_major = __flang_major__
+integer, parameter :: flang_minor = __flang_minor__
+integer, parameter :: flang_patchlevel = __flang_patchlevel__
Index: flang/lib/Frontend/CompilerInvocation.cpp
===================================================================
--- flang/lib/Frontend/CompilerInvocation.cpp
+++ 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 @@
   std::vector<std::string> searchDirectories{"."s};
   fortranOptions.searchDirectories = searchDirectories;
   fortranOptions.isFixedForm = false;
+
+  // Populate macro list with version numbers and other predefinitions.
+  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);
+#if __x86_64__
+  fortranOptions.predefinitions.emplace_back("__x86_64__", "1");
+#endif
 }
 
 void CompilerInvocation::setFortranOpts() {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D94516.316137.patch
Type: text/x-patch
Size: 2274 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210112/764e7adf/attachment.bin>


More information about the llvm-commits mailing list