diff options
author | Artem Belevich <tra@google.com> | 2018-08-30 20:43:39 +0000 |
---|---|---|
committer | Artem Belevich <tra@google.com> | 2018-08-30 20:43:39 +0000 |
commit | e4c3c6c873bdb967ec6dc258939f7a6b908a269f (patch) | |
tree | cfae3e7e9f3f7e815e3a90308219dd6d315ab313 /clang/lib/Frontend/InitPreprocessor.cpp | |
parent | 3572b0bd5d582e9a7049abec5aad8ec8afb63a9b (diff) | |
download | bcm5719-llvm-e4c3c6c873bdb967ec6dc258939f7a6b908a269f.tar.gz bcm5719-llvm-e4c3c6c873bdb967ec6dc258939f7a6b908a269f.zip |
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
llvm-svn: 341115
Diffstat (limited to 'clang/lib/Frontend/InitPreprocessor.cpp')
-rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 52 |
1 files changed, 6 insertions, 46 deletions
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 3a488bb8537..e576fc098da 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -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. /// @@ -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. |