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