Author: dougk Date: Mon Jul 25 11:36:02 2016 New Revision: 276646 URL: http://llvm.org/viewvc/llvm-project?rev=276646&view=rev Log: [Myriad]: better compatibility with vendor source
- Accept ma{2100,2150,2150} for -mcpu - Define more preprocessor macros - Don't append "le/" to little-endian lib dirs Modified: cfe/trunk/lib/Basic/Targets.cpp cfe/trunk/lib/Driver/ToolChains.cpp cfe/trunk/test/Preprocessor/predefined-arch-macros.c Modified: cfe/trunk/lib/Basic/Targets.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=276646&r1=276645&r2=276646&view=diff ============================================================================== --- cfe/trunk/lib/Basic/Targets.cpp (original) +++ cfe/trunk/lib/Basic/Targets.cpp Mon Jul 25 11:36:02 2016 @@ -6470,8 +6470,9 @@ public: CK_NIAGARA2, CK_NIAGARA3, CK_NIAGARA4, - CK_MYRIAD2_1, - CK_MYRIAD2_2, + CK_MYRIAD2100, + CK_MYRIAD2150, + CK_MYRIAD2450, CK_LEON2, CK_LEON2_AT697E, CK_LEON2_AT697F, @@ -6498,8 +6499,9 @@ public: case CK_SPARCLITE86X: case CK_SPARCLET: case CK_TSC701: - case CK_MYRIAD2_1: - case CK_MYRIAD2_2: + case CK_MYRIAD2100: + case CK_MYRIAD2150: + case CK_MYRIAD2450: case CK_LEON2: case CK_LEON2_AT697E: case CK_LEON2_AT697F: @@ -6538,9 +6540,14 @@ public: .Case("niagara2", CK_NIAGARA2) .Case("niagara3", CK_NIAGARA3) .Case("niagara4", CK_NIAGARA4) - .Case("myriad2", CK_MYRIAD2_1) - .Case("myriad2.1", CK_MYRIAD2_1) - .Case("myriad2.2", CK_MYRIAD2_2) + .Case("ma2100", CK_MYRIAD2100) + .Case("ma2150", CK_MYRIAD2150) + .Case("ma2450", CK_MYRIAD2450) + // FIXME: the myriad2[.n] spellings are obsolete, + // but a grace period is needed to allow updating dependent builds. + .Case("myriad2", CK_MYRIAD2100) + .Case("myriad2.1", CK_MYRIAD2100) + .Case("myriad2.2", CK_MYRIAD2150) .Case("leon2", CK_LEON2) .Case("at697e", CK_LEON2_AT697E) .Case("at697f", CK_LEON2_AT697F) @@ -6649,18 +6656,27 @@ public: break; } if (getTriple().getVendor() == llvm::Triple::Myriad) { + std::string MyriadArchValue, Myriad2Value; + Builder.defineMacro("__sparc_v8__"); + Builder.defineMacro("__leon__"); switch (CPU) { - case CK_MYRIAD2_1: - Builder.defineMacro("__myriad2", "1"); - Builder.defineMacro("__myriad2__", "1"); + case CK_MYRIAD2150: + MyriadArchValue = "__ma2150"; + Myriad2Value = "2"; break; - case CK_MYRIAD2_2: - Builder.defineMacro("__myriad2", "2"); - Builder.defineMacro("__myriad2__", "2"); + case CK_MYRIAD2450: + MyriadArchValue = "__ma2450"; + Myriad2Value = "2"; break; default: + MyriadArchValue = "__ma2100"; + Myriad2Value = "1"; break; } + Builder.defineMacro(MyriadArchValue, "1"); + Builder.defineMacro(MyriadArchValue+"__", "1"); + Builder.defineMacro("__myriad2__", Myriad2Value); + Builder.defineMacro("__myriad2", Myriad2Value); } } Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=276646&r1=276645&r2=276646&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Mon Jul 25 11:36:02 2016 @@ -4935,21 +4935,15 @@ MyriadToolChain::MyriadToolChain(const D if (GCCInstallation.isValid()) { // The contents of LibDir are independent of the version of gcc. - // This contains libc, libg (a superset of libc), libm, libstdc++, libssp. + // This contains libc, libg, libm, libstdc++, libssp. + // The 'ma1x00' and 'nofpu' variants are irrelevant. SmallString<128> LibDir(GCCInstallation.getParentLibPath()); - if (Triple.getArch() == llvm::Triple::sparcel) - llvm::sys::path::append(LibDir, "../sparc-myriad-elf/lib/le"); - else - llvm::sys::path::append(LibDir, "../sparc-myriad-elf/lib"); + llvm::sys::path::append(LibDir, "../sparc-myriad-elf/lib"); addPathIfExists(D, LibDir, getFilePaths()); // This directory contains crt{i,n,begin,end}.o as well as libgcc. // These files are tied to a particular version of gcc. SmallString<128> CompilerSupportDir(GCCInstallation.getInstallPath()); - // There are actually 4 choices: {le,be} x {fpu,nofpu} - // but as this toolchain is for LEON sparc, it can assume FPU. - if (Triple.getArch() == llvm::Triple::sparcel) - llvm::sys::path::append(CompilerSupportDir, "le"); addPathIfExists(D, CompilerSupportDir, getFilePaths()); } } Modified: cfe/trunk/test/Preprocessor/predefined-arch-macros.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/predefined-arch-macros.c?rev=276646&r1=276645&r2=276646&view=diff ============================================================================== --- cfe/trunk/test/Preprocessor/predefined-arch-macros.c (original) +++ cfe/trunk/test/Preprocessor/predefined-arch-macros.c Mon Jul 25 11:36:02 2016 @@ -1921,6 +1921,8 @@ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 -check-prefix=CHECK_SPARCEL // RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.2 2>&1 \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 -check-prefix=CHECK_SPARCEL +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2450 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 -check-prefix=CHECK_SPARCEL // CHECK_SPARCEL: #define __LITTLE_ENDIAN__ 1 // CHECK_MYRIAD2-1: #define __myriad2 1 // CHECK_MYRIAD2-1: #define __myriad2__ 1 @@ -1928,6 +1930,7 @@ // CHECK_MYRIAD2-2: #define __myriad2__ 2 // CHECK_SPARCEL: #define __sparc 1 // CHECK_SPARCEL: #define __sparc__ 1 +// CHECK_MYRIAD2-1: #define __sparc_v8__ 1 // CHECK_SPARCEL: #define __sparcv8 1 // // RUN: %clang -E -dM %s -o - 2>&1 \ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits