Skip to content

Commit

Permalink
Reverted the "[CUDA/OpenMP] Define only some host macros during devic…
Browse files Browse the repository at this point in the history
…e 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

llvm-svn: 341115
  • Loading branch information
Artem-B committed Aug 30, 2018
1 parent 3572b0b commit e4c3c6c
Showing 1 changed file with 6 additions and 46 deletions.
52 changes: 6 additions & 46 deletions clang/lib/Frontend/InitPreprocessor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1099,50 +1099,6 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
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.
///
Expand All @@ -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.
Expand Down

0 comments on commit e4c3c6c

Please sign in to comment.