Thanks!
On 12 December 2013 08:27, Bernard Ogden <[email protected]> wrote: > Author: bogden > Date: Thu Dec 12 07:27:11 2013 > New Revision: 197153 > > URL: http://llvm.org/viewvc/llvm-project?rev=197153&view=rev > Log: > Refactor duplicate functions > > getARMCPU and getLLVMArchSuffixForARM existed as very similar functions > in both ToolChain.cpp and Tools.cpp. Create a single implementation of > each in Tools.cpp, eliminate the duplicate and share via Tools.h. > > Creates an 'arm' namespace in Tools.h to be used by any ARM-targetting tools. > > Added: > cfe/trunk/test/Driver/arm-arch-darwin.c (with props) > Modified: > cfe/trunk/lib/Driver/ToolChain.cpp > cfe/trunk/lib/Driver/Tools.cpp > cfe/trunk/lib/Driver/Tools.h > > Modified: cfe/trunk/lib/Driver/ToolChain.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChain.cpp?rev=197153&r1=197152&r2=197153&view=diff > ============================================================================== > --- cfe/trunk/lib/Driver/ToolChain.cpp (original) > +++ cfe/trunk/lib/Driver/ToolChain.cpp Thu Dec 12 07:27:11 2013 > @@ -159,118 +159,6 @@ ObjCRuntime ToolChain::getDefaultObjCRun > VersionTuple()); > } > > -/// getARMTargetCPU - Get the (LLVM) name of the ARM cpu we are targeting. > -// > -// FIXME: tblgen this. > -static const char *getARMTargetCPU(const ArgList &Args, > - const llvm::Triple &Triple) { > - // For Darwin targets, the -arch option (which is translated to a > - // corresponding -march option) should determine the architecture > - // (and the Mach-O slice) regardless of any -mcpu options. > - if (!Triple.isOSDarwin()) { > - // FIXME: Warn on inconsistent use of -mcpu and -march. > - // If we have -mcpu=, use that. > - if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) > - return A->getValue(); > - } > - > - StringRef MArch; > - if (Arg *A = Args.getLastArg(options::OPT_march_EQ)) { > - // Otherwise, if we have -march= choose the base CPU for that arch. > - MArch = A->getValue(); > - } else { > - // Otherwise, use the Arch from the triple. > - MArch = Triple.getArchName(); > - } > - > - if (Triple.getOS() == llvm::Triple::NetBSD) { > - if (MArch == "armv6") > - return "arm1176jzf-s"; > - } > - > - const char *result = llvm::StringSwitch<const char *>(MArch) > - .Cases("armv2", "armv2a","arm2") > - .Case("armv3", "arm6") > - .Case("armv3m", "arm7m") > - .Case("armv4", "strongarm") > - .Case("armv4t", "arm7tdmi") > - .Case("thumbv4t", "arm7tdmi") > - .Cases("armv5", "armv5t", "arm10tdmi") > - .Cases("thumbv5", "thumbv5t", "arm10tdmi") > - .Cases("armv5e", "armv5te", "arm1022e") > - .Cases("thumbv5e", "thumbv5te", "arm1022e") > - .Case("armv5tej", "arm926ej-s") > - .Case("thumbv5tej", "arm926ej-s") > - .Cases("armv6", "armv6k", "arm1136jf-s") > - .Cases("thumbv6", "thumbv6k", "arm1136jf-s") > - .Case("armv6j", "arm1136j-s") > - .Case("thumbv6j", "arm1136j-s") > - .Cases("armv6z", "armv6zk", "arm1176jzf-s") > - .Cases("thumbv6z", "thumbv6zk", "arm1176jzf-s") > - .Case("armv6t2", "arm1156t2-s") > - .Case("thumbv6t2", "arm1156t2-s") > - .Cases("armv6m", "armv6-m", "cortex-m0") > - .Case("thumbv6m", "cortex-m0") > - .Cases("armv7", "armv7a", "armv7-a", "cortex-a8") > - .Cases("thumbv7", "thumbv7a", "cortex-a8") > - .Cases("armv7l", "armv7-l", "cortex-a8") > - .Cases("armv7f", "armv7-f", "cortex-a9-mp") > - .Cases("armv7s", "armv7-s", "swift") > - .Cases("armv7r", "armv7-r", "cortex-r4") > - .Case("thumbv7r", "cortex-r4") > - .Cases("armv7m", "armv7-m", "cortex-m3") > - .Case("thumbv7m", "cortex-m3") > - .Cases("armv7em", "armv7e-m", "cortex-m4") > - .Case("thumbv7em", "cortex-m4") > - .Cases("armv8", "armv8a", "armv8-a", "cortex-a53") > - .Cases("thumbv8", "thumbv8a", "cortex-a53") > - .Case("ep9312", "ep9312") > - .Case("iwmmxt", "iwmmxt") > - .Case("xscale", "xscale") > - // If all else failed, return the most base CPU with thumb interworking > - // supported by LLVM. > - .Default(0); > - > - if (result) > - return result; > - > - return > - Triple.getEnvironment() == llvm::Triple::GNUEABIHF > - ? "arm1176jzf-s" > - : "arm7tdmi"; > -} > - > -/// getLLVMArchSuffixForARM - Get the LLVM arch name to use for a particular > -/// CPU. > -// > -// FIXME: This is redundant with -mcpu, why does LLVM use this. > -// FIXME: tblgen this, or kill it! > -static const char *getLLVMArchSuffixForARM(StringRef CPU) { > - return llvm::StringSwitch<const char *>(CPU) > - .Case("strongarm", "v4") > - .Cases("arm7tdmi", "arm7tdmi-s", "arm710t", "v4t") > - .Cases("arm720t", "arm9", "arm9tdmi", "v4t") > - .Cases("arm920", "arm920t", "arm922t", "v4t") > - .Cases("arm940t", "ep9312","v4t") > - .Cases("arm10tdmi", "arm1020t", "v5") > - .Cases("arm9e", "arm926ej-s", "arm946e-s", "v5e") > - .Cases("arm966e-s", "arm968e-s", "arm10e", "v5e") > - .Cases("arm1020e", "arm1022e", "xscale", "iwmmxt", "v5e") > - .Cases("arm1136j-s", "arm1136jf-s", "arm1176jz-s", "v6") > - .Cases("arm1176jzf-s", "mpcorenovfp", "mpcore", "v6") > - .Cases("arm1156t2-s", "arm1156t2f-s", "v6t2") > - .Cases("cortex-a5", "cortex-a7", "cortex-a8", "v7") > - .Cases("cortex-a9", "cortex-a12", "cortex-a15", "krait", "v7") > - .Cases("cortex-r4", "cortex-r5", "v7r") > - .Case("cortex-m0", "v6m") > - .Case("cortex-m3", "v7m") > - .Case("cortex-m4", "v7em") > - .Case("cortex-a9-mp", "v7f") > - .Case("swift", "v7s") > - .Cases("cortex-a53", "cortex-a57", "v8") > - .Default(""); > -} > - > std::string ToolChain::ComputeLLVMTriple(const ArgList &Args, > types::ID InputType) const { > switch (getTriple().getArch()) { > @@ -299,8 +187,9 @@ std::string ToolChain::ComputeLLVMTriple > // Thumb2 is the default for V7 on Darwin. > // > // FIXME: Thumb should just be another -target-feaure, not in the triple. > - StringRef Suffix = > - getLLVMArchSuffixForARM(getARMTargetCPU(Args, Triple)); > + StringRef Suffix = Triple.isOSDarwin() > + ? > tools::arm::getLLVMArchSuffixForARM(tools::arm::getARMCPUForMArch(Args, > Triple)) > + : > tools::arm::getLLVMArchSuffixForARM(tools::arm::getARMTargetCPU(Args, > Triple)); > bool ThumbDefault = Suffix.startswith("v6m") || Suffix.startswith("v7m") > || > Suffix.startswith("v7em") || > (Suffix.startswith("v7") && getTriple().isOSDarwin()); > > Modified: cfe/trunk/lib/Driver/Tools.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=197153&r1=197152&r2=197153&view=diff > ============================================================================== > --- cfe/trunk/lib/Driver/Tools.cpp (original) > +++ cfe/trunk/lib/Driver/Tools.cpp Thu Dec 12 07:27:11 2013 > @@ -442,123 +442,6 @@ void Clang::AddPreprocessingOptions(Comp > getToolChain().AddClangSystemIncludeArgs(Args, CmdArgs); > } > > -/// getLLVMArchSuffixForARM - Get the LLVM arch name to use for a particular > -/// CPU. > -// > -// FIXME: This is redundant with -mcpu, why does LLVM use this. > -// FIXME: tblgen this, or kill it! > -static const char *getLLVMArchSuffixForARM(StringRef CPU) { > - return llvm::StringSwitch<const char *>(CPU) > - .Case("strongarm", "v4") > - .Cases("arm7tdmi", "arm7tdmi-s", "arm710t", "v4t") > - .Cases("arm720t", "arm9", "arm9tdmi", "v4t") > - .Cases("arm920", "arm920t", "arm922t", "v4t") > - .Cases("arm940t", "ep9312","v4t") > - .Cases("arm10tdmi", "arm1020t", "v5") > - .Cases("arm9e", "arm926ej-s", "arm946e-s", "v5e") > - .Cases("arm966e-s", "arm968e-s", "arm10e", "v5e") > - .Cases("arm1020e", "arm1022e", "xscale", "iwmmxt", "v5e") > - .Cases("arm1136j-s", "arm1136jf-s", "arm1176jz-s", "v6") > - .Cases("arm1176jzf-s", "mpcorenovfp", "mpcore", "v6") > - .Cases("arm1156t2-s", "arm1156t2f-s", "v6t2") > - .Cases("cortex-a5", "cortex-a7", "cortex-a8", "v7") > - .Cases("cortex-a9", "cortex-a12", "cortex-a15", "krait", "v7") > - .Cases("cortex-r4", "cortex-r5", "v7r") > - .Case("cortex-m0", "v6m") > - .Case("cortex-m3", "v7m") > - .Case("cortex-m4", "v7em") > - .Case("cortex-a9-mp", "v7f") > - .Case("swift", "v7s") > - .Cases("cortex-a53", "cortex-a57", "v8") > - .Default(""); > -} > - > -/// getARMTargetCPU - Get the (LLVM) name of the ARM cpu we are targeting. > -// > -// FIXME: tblgen this. > -static std::string getARMTargetCPU(const ArgList &Args, > - const llvm::Triple &Triple) { > - // FIXME: Warn on inconsistent use of -mcpu and -march. > - > - // If we have -mcpu=, use that. > - if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { > - StringRef MCPU = A->getValue(); > - // Handle -mcpu=native. > - if (MCPU == "native") > - return llvm::sys::getHostCPUName(); > - else > - return MCPU; > - } > - > - StringRef MArch; > - if (Arg *A = Args.getLastArg(options::OPT_march_EQ)) { > - // Otherwise, if we have -march= choose the base CPU for that arch. > - MArch = A->getValue(); > - } else { > - // Otherwise, use the Arch from the triple. > - MArch = Triple.getArchName(); > - } > - > - if (Triple.getOS() == llvm::Triple::NetBSD) { > - if (MArch == "armv6") > - return "arm1176jzf-s"; > - } > - > - // Handle -march=native. > - std::string NativeMArch; > - if (MArch == "native") { > - std::string CPU = llvm::sys::getHostCPUName(); > - if (CPU != "generic") { > - // Translate the native cpu into the architecture. The switch below > will > - // then chose the minimum cpu for that arch. > - NativeMArch = std::string("arm") + getLLVMArchSuffixForARM(CPU); > - MArch = NativeMArch; > - } > - } > - > - return llvm::StringSwitch<const char *>(MArch) > - .Cases("armv2", "armv2a","arm2") > - .Case("armv3", "arm6") > - .Case("armv3m", "arm7m") > - .Case("armv4", "strongarm") > - .Case("armv4t", "arm7tdmi") > - .Case("thumbv4t", "arm7tdmi") > - .Cases("armv5", "armv5t", "arm10tdmi") > - .Cases("thumbv5", "thumbv5t", "arm10tdmi") > - .Cases("armv5e", "armv5te", "arm1022e") > - .Cases("thumbv5e", "thumbv5te", "arm1022e") > - .Case("armv5tej", "arm926ej-s") > - .Case("thumbv5tej", "arm926ej-s") > - .Cases("armv6", "armv6k", "arm1136jf-s") > - .Cases("thumbv6", "thumbv6k", "arm1136jf-s") > - .Case("armv6j", "arm1136j-s") > - .Case("thumbv6j", "arm1136j-s") > - .Cases("armv6z", "armv6zk", "arm1176jzf-s") > - .Cases("thumbv6z", "thumbv6zk", "arm1176jzf-s") > - .Case("armv6t2", "arm1156t2-s") > - .Case("thumbv6t2", "arm1156t2-s") > - .Cases("armv6m", "armv6-m", "cortex-m0") > - .Case("thumbv6m", "cortex-m0") > - .Cases("armv7", "armv7a", "armv7-a", "cortex-a8") > - .Cases("thumbv7", "thumbv7a", "cortex-a8") > - .Cases("armv7em", "armv7e-m", "cortex-m4") > - .Case("thumbv7em", "cortex-m4") > - .Cases("armv7f", "armv7-f", "cortex-a9-mp") > - .Cases("armv7s", "armv7-s", "swift") > - .Cases("armv7r", "armv7-r", "cortex-r4") > - .Case("thumbv7r", "cortex-r4") > - .Cases("armv7m", "armv7-m", "cortex-m3") > - .Case("thumbv7m", "cortex-m3") > - .Cases("armv8", "armv8a", "armv8-a", "cortex-a53") > - .Cases("thumbv8", "thumbv8a", "cortex-a53") > - .Case("ep9312", "ep9312") > - .Case("iwmmxt", "iwmmxt") > - .Case("xscale", "xscale") > - // If all else failed, return the most base CPU with thumb interworking > - // supported by LLVM. > - .Default("arm7tdmi"); > -} > - > /// getAArch64TargetCPU - Get the (LLVM) name of the AArch64 cpu we are > targeting. > // > // FIXME: tblgen this. > @@ -747,7 +630,7 @@ StringRef tools::arm::getARMFloatABI(con > // > // FIXME: Factor out an ARM class so we can cache the arch somewhere. > std::string ArchName = > - getLLVMArchSuffixForARM(getARMTargetCPU(Args, Triple)); > + arm::getLLVMArchSuffixForARM(arm::getARMTargetCPU(Args, Triple)); > if (StringRef(ArchName).startswith("v6") || > StringRef(ArchName).startswith("v7")) > FloatABI = "softfp"; > @@ -775,7 +658,7 @@ StringRef tools::arm::getARMFloatABI(con > break; > case llvm::Triple::Android: { > std::string ArchName = > - getLLVMArchSuffixForARM(getARMTargetCPU(Args, Triple)); > + arm::getLLVMArchSuffixForARM(arm::getARMTargetCPU(Args, Triple)); > if (StringRef(ArchName).startswith("v7")) > FloatABI = "softfp"; > else > @@ -849,7 +732,7 @@ void Clang::AddARMTargetArgs(const ArgLi > // Get the effective triple, which takes into account the deployment > target. > std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args); > llvm::Triple Triple(TripleStr); > - std::string CPUName = getARMTargetCPU(Args, Triple); > + std::string CPUName = arm::getARMTargetCPU(Args, Triple); > > // Select the ABI to use. > // > @@ -1366,7 +1249,7 @@ static std::string getCPUName(const ArgL > > case llvm::Triple::arm: > case llvm::Triple::thumb: > - return getARMTargetCPU(Args, T); > + return arm::getARMTargetCPU(Args, T); > > case llvm::Triple::mips: > case llvm::Triple::mipsel: > @@ -4568,6 +4451,137 @@ void hexagon::Link::ConstructJob(Compila > } > // Hexagon tools end. > > +/// getARMCPUForMArch - Get the (LLVM) name of the minimum ARM CPU for the > arch we are targeting > +// > +// FIXME: tblgen this. > +const char *arm::getARMCPUForMArch(const ArgList &Args, > + const llvm::Triple &Triple) { > + StringRef MArch; > + if (Arg *A = Args.getLastArg(options::OPT_march_EQ)) { > + // Otherwise, if we have -march= choose the base CPU for that arch. > + MArch = A->getValue(); > + } else { > + // Otherwise, use the Arch from the triple. > + MArch = Triple.getArchName(); > + } > + > + // Handle -march=native. > + std::string NativeMArch; > + if (MArch == "native") { > + std::string CPU = llvm::sys::getHostCPUName(); > + if (CPU != "generic") { > + // Translate the native cpu into the architecture. The switch below > will > + // then chose the minimum cpu for that arch. > + NativeMArch = std::string("arm") + arm::getLLVMArchSuffixForARM(CPU); > + MArch = NativeMArch; > + } > + } > + > + if (Triple.getOS() == llvm::Triple::NetBSD) { > + if (MArch == "armv6") > + return "arm1176jzf-s"; > + } > + > + const char *result = llvm::StringSwitch<const char *>(MArch) > + .Cases("armv2", "armv2a","arm2") > + .Case("armv3", "arm6") > + .Case("armv3m", "arm7m") > + .Case("armv4", "strongarm") > + .Case("armv4t", "arm7tdmi") > + .Case("thumbv4t", "arm7tdmi") > + .Cases("armv5", "armv5t", "arm10tdmi") > + .Cases("thumbv5", "thumbv5t", "arm10tdmi") > + .Cases("armv5e", "armv5te", "arm1022e") > + .Cases("thumbv5e", "thumbv5te", "arm1022e") > + .Case("armv5tej", "arm926ej-s") > + .Case("thumbv5tej", "arm926ej-s") > + .Cases("armv6", "armv6k", "arm1136jf-s") > + .Cases("thumbv6", "thumbv6k", "arm1136jf-s") > + .Case("armv6j", "arm1136j-s") > + .Case("thumbv6j", "arm1136j-s") > + .Cases("armv6z", "armv6zk", "arm1176jzf-s") > + .Cases("thumbv6z", "thumbv6zk", "arm1176jzf-s") > + .Case("armv6t2", "arm1156t2-s") > + .Case("thumbv6t2", "arm1156t2-s") > + .Cases("armv6m", "armv6-m", "cortex-m0") > + .Case("thumbv6m", "cortex-m0") > + .Cases("armv7", "armv7a", "armv7-a", "cortex-a8") > + .Cases("thumbv7", "thumbv7a", "cortex-a8") > + .Cases("armv7l", "armv7-l", "cortex-a8") > + .Cases("armv7f", "armv7-f", "cortex-a9-mp") > + .Cases("armv7s", "armv7-s", "swift") > + .Cases("armv7r", "armv7-r", "cortex-r4") > + .Case("thumbv7r", "cortex-r4") > + .Cases("armv7m", "armv7-m", "cortex-m3") > + .Case("thumbv7m", "cortex-m3") > + .Cases("armv7em", "armv7e-m", "cortex-m4") > + .Cases("thumbv7em", "thumbv7e-m", "cortex-m4") > + .Cases("armv8", "armv8a", "armv8-a", "cortex-a53") > + .Cases("thumbv8", "thumbv8a", "cortex-a53") > + .Case("ep9312", "ep9312") > + .Case("iwmmxt", "iwmmxt") > + .Case("xscale", "xscale") > + // If all else failed, return the most base CPU with thumb interworking > + // supported by LLVM. > + .Default(0); > + > + if (result) > + return result; > + > + return > + Triple.getEnvironment() == llvm::Triple::GNUEABIHF > + ? "arm1176jzf-s" > + : "arm7tdmi"; > +} > + > +/// getARMTargetCPU - Get the (LLVM) name of the ARM cpu we are targeting. > +const char *arm::getARMTargetCPU(const ArgList &Args, > + const llvm::Triple &Triple) { > + // FIXME: Warn on inconsistent use of -mcpu and -march. > + // If we have -mcpu=, use that. > + if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { > + StringRef MCPU = A->getValue(); > + // Handle -mcpu=native. > + if (MCPU == "native") > + return llvm::sys::getHostCPUName().c_str(); > + else > + return MCPU.str().c_str(); > + } > + > + return getARMCPUForMArch(Args, Triple); > +} > + > +/// getLLVMArchSuffixForARM - Get the LLVM arch name to use for a particular > +/// CPU. > +// > +// FIXME: This is redundant with -mcpu, why does LLVM use this. > +// FIXME: tblgen this, or kill it! > +const char *arm::getLLVMArchSuffixForARM(StringRef CPU) { > + return llvm::StringSwitch<const char *>(CPU) > + .Case("strongarm", "v4") > + .Cases("arm7tdmi", "arm7tdmi-s", "arm710t", "v4t") > + .Cases("arm720t", "arm9", "arm9tdmi", "v4t") > + .Cases("arm920", "arm920t", "arm922t", "v4t") > + .Cases("arm940t", "ep9312","v4t") > + .Cases("arm10tdmi", "arm1020t", "v5") > + .Cases("arm9e", "arm926ej-s", "arm946e-s", "v5e") > + .Cases("arm966e-s", "arm968e-s", "arm10e", "v5e") > + .Cases("arm1020e", "arm1022e", "xscale", "iwmmxt", "v5e") > + .Cases("arm1136j-s", "arm1136jf-s", "arm1176jz-s", "v6") > + .Cases("arm1176jzf-s", "mpcorenovfp", "mpcore", "v6") > + .Cases("arm1156t2-s", "arm1156t2f-s", "v6t2") > + .Cases("cortex-a5", "cortex-a7", "cortex-a8", "v7") > + .Cases("cortex-a9", "cortex-a12", "cortex-a15", "krait", "v7") > + .Cases("cortex-r4", "cortex-r5", "v7r") > + .Case("cortex-m0", "v6m") > + .Case("cortex-m3", "v7m") > + .Case("cortex-m4", "v7em") > + .Case("cortex-a9-mp", "v7f") > + .Case("swift", "v7s") > + .Cases("cortex-a53", "cortex-a57", "v8") > + .Default(""); > +} > + > llvm::Triple::ArchType darwin::getArchTypeForDarwinArchName(StringRef Str) { > // See arch(3) and llvm-gcc's driver-driver.c. We don't implement support > for > // archs which Darwin doesn't use. > @@ -6045,7 +6059,7 @@ void netbsd::Assemble::ConstructJob(Comp > // Pass the target CPU to GNU as for ARM, since the source code might > // not have the correct .cpu annotation. > if (getToolChain().getArch() == llvm::Triple::arm) { > - std::string MArch(getARMTargetCPU(Args, getToolChain().getTriple())); > + std::string MArch(arm::getARMTargetCPU(Args, > getToolChain().getTriple())); > CmdArgs.push_back(Args.MakeArgString("-mcpu=" + MArch)); > } > > > Modified: cfe/trunk/lib/Driver/Tools.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.h?rev=197153&r1=197152&r2=197153&view=diff > ============================================================================== > --- cfe/trunk/lib/Driver/Tools.h (original) > +++ cfe/trunk/lib/Driver/Tools.h Thu Dec 12 07:27:11 2013 > @@ -201,6 +201,13 @@ namespace hexagon { > }; > } // end namespace hexagon. > > +namespace arm { > + const char* getARMTargetCPU(const llvm::opt::ArgList &Args, > + const llvm::Triple &Triple); > + const char* getARMCPUForMArch(const llvm::opt::ArgList &Args, > + const llvm::Triple &Triple); > + const char* getLLVMArchSuffixForARM(StringRef CPU); > +} > > namespace darwin { > llvm::Triple::ArchType getArchTypeForDarwinArchName(StringRef Str); > > Added: cfe/trunk/test/Driver/arm-arch-darwin.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/arm-arch-darwin.c?rev=197153&view=auto > ============================================================================== > --- cfe/trunk/test/Driver/arm-arch-darwin.c (added) > +++ cfe/trunk/test/Driver/arm-arch-darwin.c Thu Dec 12 07:27:11 2013 > @@ -0,0 +1,6 @@ > +// On Darwin, arch should override CPU for triple purposes > +// RUN: %clang -target armv7m-apple-darwin -arch armv7m -mcpu=cortex-m4 -### > -c %s 2>&1 | FileCheck -check-prefix=CHECK-V7M-DARWIN %s > +// CHECK-V7M-DARWIN: "-cc1"{{.*}} "-triple" "thumbv7m-{{.*}} "-target-cpu" > "cortex-m4" > +// RUN: %clang -target armv7m -arch armv7m -mcpu=cortex-m4 -### -c %s 2>&1 | > FileCheck -check-prefix=CHECK-V7M-OVERRIDDEN %s > +// CHECK-V7M-OVERRIDDEN: "-cc1"{{.*}} "-triple" "thumbv7em-{{.*}} > "-target-cpu" "cortex-m4" > + > > Propchange: cfe/trunk/test/Driver/arm-arch-darwin.c > ------------------------------------------------------------------------------ > svn:eol-style = native > > Propchange: cfe/trunk/test/Driver/arm-arch-darwin.c > ------------------------------------------------------------------------------ > svn:keywords = Rev Date Author URL Id > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
