r341115 - Reverted the "[CUDA/OpenMP] Define only some host macros during device compilation"

Artem Belevich via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 30 13:43:40 PDT 2018


Author: tra
Date: Thu Aug 30 13:43:39 2018
New Revision: 341115

URL: http://llvm.org/viewvc/llvm-project?rev=341115&view=rev
Log:
Reverted the "[CUDA/OpenMP] Define only some host macros during device compilation"

The changes were breaking CUDA compilation.

Reverted revisions:
  r340681 D50845
   [CUDA/OpenMP] Define only some host macros during device compilation
  r340772 D51312
    [OpenMP][NVPTX] Use appropriate _CALL_ELF macro when offloading
  r340967 D51441
     Add predefined macro __gnu_linux__ for proper aux-triple

Modified:
    cfe/trunk/lib/Frontend/InitPreprocessor.cpp

Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitPreprocessor.cpp?rev=341115&r1=341114&r2=341115&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original)
+++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Thu Aug 30 13:43:39 2018
@@ -1099,50 +1099,6 @@ static void InitializePredefinedMacros(c
   TI.getTargetDefines(LangOpts, Builder);
 }
 
-/// Initialize macros based on AuxTargetInfo.
-static void InitializePredefinedAuxMacros(const TargetInfo &AuxTI,
-                                          const LangOptions &LangOpts,
-                                          MacroBuilder &Builder) {
-  auto AuxTriple = AuxTI.getTriple();
-
-  // Define basic target macros needed by at least bits/wordsize.h and
-  // bits/mathinline.h.
-  // On PowerPC, explicitely set _CALL_ELF macro needed for gnu/stubs.h.
-  switch (AuxTriple.getArch()) {
-  case llvm::Triple::x86_64:
-    Builder.defineMacro("__x86_64__");
-    break;
-  case llvm::Triple::ppc64:
-    Builder.defineMacro("__powerpc64__");
-    Builder.defineMacro("_CALL_ELF", "1");
-    break;
-  case llvm::Triple::ppc64le:
-    Builder.defineMacro("__powerpc64__");
-    Builder.defineMacro("_CALL_ELF", "2");
-    break;
-  default:
-    break;
-  }
-
-  // libc++ needs to find out the object file format and threading API.
-  if (AuxTriple.getOS() == llvm::Triple::Linux) {
-    Builder.defineMacro("__ELF__");
-    Builder.defineMacro("__linux__");
-    Builder.defineMacro("__gnu_linux__");
-    // Used in features.h. If this is omitted, math.h doesn't declare float
-    // versions of the functions in bits/mathcalls.h.
-    if (LangOpts.CPlusPlus)
-      Builder.defineMacro("_GNU_SOURCE");
-  } else if (AuxTriple.isOSDarwin()) {
-    Builder.defineMacro("__APPLE__");
-    Builder.defineMacro("__MACH__");
-  } else if (AuxTriple.isOSWindows()) {
-    Builder.defineMacro("_WIN32");
-    if (AuxTriple.isWindowsGNUEnvironment())
-      Builder.defineMacro("__MINGW32__");
-  }
-}
-
 /// InitializePreprocessor - Initialize the preprocessor getting it and the
 /// environment ready to process a single file. This returns true on error.
 ///
@@ -1164,9 +1120,13 @@ void clang::InitializePreprocessor(
 
   // Install things like __POWERPC__, __GNUC__, etc into the macro table.
   if (InitOpts.UsePredefines) {
-    InitializePredefinedMacros(PP.getTargetInfo(), LangOpts, FEOpts, Builder);
+    // FIXME: This will create multiple definitions for most of the predefined
+    // macros. This is not the right way to handle this.
     if ((LangOpts.CUDA || LangOpts.OpenMPIsDevice) && PP.getAuxTargetInfo())
-      InitializePredefinedAuxMacros(*PP.getAuxTargetInfo(), LangOpts, Builder);
+      InitializePredefinedMacros(*PP.getAuxTargetInfo(), LangOpts, FEOpts,
+                                 Builder);
+
+    InitializePredefinedMacros(PP.getTargetInfo(), LangOpts, FEOpts, Builder);
 
     // Install definitions to make Objective-C++ ARC work well with various
     // C++ Standard Library implementations.




More information about the cfe-commits mailing list