r282757 - [Myriad] Silently ignore -fno-split-dwarf-inlining

2016-09-29 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Thu Sep 29 14:59:12 2016
New Revision: 282757

URL: http://llvm.org/viewvc/llvm-project?rev=282757&view=rev
Log:
[Myriad] Silently ignore -fno-split-dwarf-inlining

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=282757&r1=282756&r2=282757&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Thu Sep 29 14:59:12 2016
@@ -11003,12 +11003,14 @@ void tools::SHAVE::Compiler::ConstructJo
   // Append all -I, -iquote, -isystem paths, defines/undefines,
   // 'f' flags, optimize flags, and warning options.
   // These are spelled the same way in clang and moviCompile.
-  Args.AddAllArgs(CmdArgs, {options::OPT_I_Group, options::OPT_clang_i_Group,
-options::OPT_std_EQ, options::OPT_D, 
options::OPT_U,
-options::OPT_f_Group, options::OPT_f_clang_Group,
-options::OPT_g_Group, options::OPT_M_Group,
-options::OPT_O_Group, options::OPT_W_Group,
-options::OPT_mcpu_EQ});
+  Args.AddAllArgsExcept(
+  CmdArgs,
+  {options::OPT_I_Group, options::OPT_clang_i_Group, options::OPT_std_EQ,
+   options::OPT_D, options::OPT_U, options::OPT_f_Group,
+   options::OPT_f_clang_Group, options::OPT_g_Group, options::OPT_M_Group,
+   options::OPT_O_Group, options::OPT_W_Group, options::OPT_mcpu_EQ},
+  {options::OPT_fno_split_dwarf_inlining});
+  Args.hasArg(options::OPT_fno_split_dwarf_inlining); // Claim it if present.
 
   // If we're producing a dependency file, and assembly is the final action,
   // then the name of the target in the dependency file should be the '.o'

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=282757&r1=282756&r2=282757&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Thu Sep 29 14:59:12 2016
@@ -50,8 +50,9 @@
 // RUN:   | FileCheck %s -check-prefix=INCLUDES
 // INCLUDES: "-iquote" "quotepath" "-isystem" "syspath"
 
+// -fno-split-dwarf-inlining is consumed but not passed to moviCompile.
 // RUN: %clang -target shave-myriad -c -### %s -g -fno-inline-functions \
-// RUN: -fno-inline-functions-called-once -Os -Wall -MF dep.d \
+// RUN: -fno-inline-functions-called-once -Os -Wall -MF dep.d 
-fno-split-dwarf-inlining \
 // RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
 // PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" 
"-fno-inline-functions-called-once"
 // PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r283601 - Visually align table def with respective enum. NFC

2016-10-07 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Fri Oct  7 16:02:38 2016
New Revision: 283601

URL: http://llvm.org/viewvc/llvm-project?rev=283601&view=rev
Log:
Visually align table def with respective enum. NFC

'warn_attribute_wrong_decl_type' has to stay in sync with
'enum AttributeDeclKind' which is much easier when they line up.

Modified:
cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td

Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=283601&r1=283600&r2=283601&view=diff
==
--- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Fri Oct  7 16:02:38 
2016
@@ -2567,25 +2567,49 @@ def err_ifunc_resolver_return : Error<
 def err_ifunc_resolver_params : Error<
   "ifunc resolver function must have no parameters">;
 def warn_attribute_wrong_decl_type : Warning<
-  "%0 attribute only applies to %select{functions|unions|"
-  "variables and functions|"
-  "functions, variables, and Objective-C interfaces|"
-  "functions and methods|parameters|"
-  "functions, methods and blocks|functions, methods, and classes|"
-  "functions, methods, and parameters|classes|enums|variables|methods|"
-  "fields and global variables|structs|parameters and typedefs|variables and 
typedefs|"
-  "thread-local variables|variables and fields|variables, data members and tag 
types|"
-  "types and namespaces|Objective-C interfaces|methods and properties|"
-  "struct or union|struct, union or class|types|"
-  "Objective-C instance methods|init methods of interface or class extension 
declarations|"
-  "variables, functions and classes|"
-  "functions, variables, classes, and Objective-C interfaces|"
-  "Objective-C protocols|variables with static or thread storage duration|"
-  "functions and global variables|structs, unions, and typedefs|structs and 
typedefs|"
-  "interface or protocol declarations|kernel functions|non-K&R-style 
functions|"
-  "variables, enums, fields and typedefs|functions, methods, enums, and 
classes|"
-  "structs, classes, variables, functions, and inline namespaces|"
-  "variables, functions, methods, types, enumerations, enumerators, labels, 
and non-static data members}1">,
+  "%0 attribute only applies to %select{"
+  "functions"
+  "|unions"
+  "|variables and functions"
+  "|functions, variables, and Objective-C interfaces"
+  "|functions and methods"
+  "|parameters"
+  "|functions, methods and blocks"
+  "|functions, methods, and classes"
+  "|functions, methods, and parameters"
+  "|classes"
+  "|enums"
+  "|variables"
+  "|methods"
+  "|fields and global variables"
+  "|structs"
+  "|parameters and typedefs"
+  "|variables and typedefs"
+  "|thread-local variables"
+  "|variables and fields"
+  "|variables, data members and tag types"
+  "|types and namespaces"
+  "|Objective-C interfaces"
+  "|methods and properties"
+  "|struct or union"
+  "|struct, union or class"
+  "|types"
+  "|Objective-C instance methods"
+  "|init methods of interface or class extension declarations"
+  "|variables, functions and classes"
+  "|functions, variables, classes, and Objective-C interfaces"
+  "|Objective-C protocols"
+  "|variables with static or thread storage duration"
+  "|functions and global variables"
+  "|structs, unions, and typedefs"
+  "|structs and typedefs"
+  "|interface or protocol declarations"
+  "|kernel functions"
+  "|non-K&R-style functions"
+  "|variables, enums, fields and typedefs"
+  "|functions, methods, enums, and classes"
+  "|structs, classes, variables, functions, and inline namespaces"
+  "|variables, functions, methods, types, enumerations, enumerators, labels, 
and non-static data members}1">,
   InGroup;
 def err_attribute_wrong_decl_type : Error;
 def warn_type_attribute_wrong_type : Warning<


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r284272 - Implement no_sanitize_address for global vars

2016-10-14 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Fri Oct 14 14:55:09 2016
New Revision: 284272

URL: http://llvm.org/viewvc/llvm-project?rev=284272&view=rev
Log:
Implement no_sanitize_address for global vars

Modified:
cfe/trunk/include/clang/Basic/Attr.td
cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
cfe/trunk/include/clang/Sema/AttributeList.h
cfe/trunk/lib/CodeGen/SanitizerMetadata.cpp
cfe/trunk/lib/Sema/SemaDeclAttr.cpp
cfe/trunk/test/CodeGen/asan-globals.cpp
cfe/trunk/test/SemaCXX/attr-no-sanitize-address.cpp
cfe/trunk/test/SemaCXX/attr-no-sanitize.cpp

Modified: cfe/trunk/include/clang/Basic/Attr.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=284272&r1=284271&r2=284272&view=diff
==
--- cfe/trunk/include/clang/Basic/Attr.td (original)
+++ cfe/trunk/include/clang/Basic/Attr.td Fri Oct 14 14:55:09 2016
@@ -1705,7 +1705,8 @@ def X86ForceAlignArgPointer : Inheritabl
 def NoSanitize : InheritableAttr {
   let Spellings = [GNU<"no_sanitize">, CXX11<"clang", "no_sanitize">];
   let Args = [VariadicStringArgument<"Sanitizers">];
-  let Subjects = SubjectList<[Function, ObjCMethod], ErrorDiag>;
+  let Subjects = SubjectList<[Function, ObjCMethod, GlobalVar], ErrorDiag,
+"ExpectedFunctionMethodOrGlobalVar">;
   let Documentation = [NoSanitizeDocs];
   let AdditionalMembers = [{
 SanitizerMask getMask() const {
@@ -1727,7 +1728,8 @@ def NoSanitizeSpecific : InheritableAttr
GCC<"no_sanitize_address">,
GCC<"no_sanitize_thread">,
GNU<"no_sanitize_memory">];
-  let Subjects = SubjectList<[Function], ErrorDiag>;
+  let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
+"ExpectedFunctionGlobalVarMethodOrProperty">;
   let Documentation = [NoSanitizeAddressDocs, NoSanitizeThreadDocs,
NoSanitizeMemoryDocs];
   let ASTNode = 0;

Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=284272&r1=284271&r2=284272&view=diff
==
--- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Fri Oct 14 14:55:09 
2016
@@ -2577,6 +2577,7 @@ def warn_attribute_wrong_decl_type : War
   "|functions, methods and blocks"
   "|functions, methods, and classes"
   "|functions, methods, and parameters"
+  "|functions, methods, and global variables"
   "|classes"
   "|enums"
   "|variables"

Modified: cfe/trunk/include/clang/Sema/AttributeList.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/AttributeList.h?rev=284272&r1=284271&r2=284272&view=diff
==
--- cfe/trunk/include/clang/Sema/AttributeList.h (original)
+++ cfe/trunk/include/clang/Sema/AttributeList.h Fri Oct 14 14:55:09 2016
@@ -891,6 +891,7 @@ enum AttributeDeclKind {
   ExpectedFunctionMethodOrBlock,
   ExpectedFunctionMethodOrClass,
   ExpectedFunctionMethodOrParameter,
+  ExpectedFunctionMethodOrGlobalVar,
   ExpectedClass,
   ExpectedEnum,
   ExpectedVariable,

Modified: cfe/trunk/lib/CodeGen/SanitizerMetadata.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/SanitizerMetadata.cpp?rev=284272&r1=284271&r2=284272&view=diff
==
--- cfe/trunk/lib/CodeGen/SanitizerMetadata.cpp (original)
+++ cfe/trunk/lib/CodeGen/SanitizerMetadata.cpp Fri Oct 14 14:55:09 2016
@@ -63,7 +63,13 @@ void SanitizerMetadata::reportGlobalToAS
   std::string QualName;
   llvm::raw_string_ostream OS(QualName);
   D.printQualifiedName(OS);
-  reportGlobalToASan(GV, D.getLocation(), OS.str(), D.getType(), IsDynInit);
+
+  bool IsBlacklisted = false;
+  for (auto Attr : D.specific_attrs())
+if (Attr->getMask() & SanitizerKind::Address)
+  IsBlacklisted = true;
+  reportGlobalToASan(GV, D.getLocation(), OS.str(), D.getType(), IsDynInit,
+ IsBlacklisted);
 }
 
 void SanitizerMetadata::disableSanitizerForGlobal(llvm::GlobalVariable *GV) {

Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=284272&r1=284271&r2=284272&view=diff
==
--- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Fri Oct 14 14:55:09 2016
@@ -5313,9 +5313,15 @@ static void handleDeprecatedAttr(Sema &S
 !(Attr.hasScope() && Attr.getScopeName()->isStr("gnu")))
   S.Diag(Attr.getLoc(), diag::ext_cxx14_attr) << Attr.getName();
 
-  D->addAttr(::new (S.Context) DeprecatedAttr(Attr.getRange(), S.Context, Str,
-   Replacement,
-

r281071 - Myriad: nominally "support" ASAN.

2016-09-09 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Fri Sep  9 13:20:49 2016
New Revision: 281071

URL: http://llvm.org/viewvc/llvm-project?rev=281071&view=rev
Log:
Myriad: nominally "support" ASAN.

Doesn't work, but needs to be enabled in order to get there.

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/lib/Driver/ToolChains.h
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/sanitizer-ld.c

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=281071&r1=281070&r2=281071&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Fri Sep  9 13:20:49 2016
@@ -5042,6 +5042,10 @@ Tool *MyriadToolChain::buildLinker() con
   return new tools::Myriad::Linker(*this);
 }
 
+SanitizerMask MyriadToolChain::getSupportedSanitizers() const {
+  return SanitizerKind::Address;
+}
+
 WebAssembly::WebAssembly(const Driver &D, const llvm::Triple &Triple,
  const llvm::opt::ArgList &Args)
   : ToolChain(D, Triple, Args) {

Modified: cfe/trunk/lib/Driver/ToolChains.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=281071&r1=281070&r2=281071&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.h (original)
+++ cfe/trunk/lib/Driver/ToolChains.h Fri Sep  9 13:20:49 2016
@@ -1147,6 +1147,7 @@ public:
   llvm::opt::ArgStringList &CC1Args) const override;
   Tool *SelectTool(const JobAction &JA) const override;
   unsigned GetDefaultDwarfVersion() const override { return 2; }
+  SanitizerMask getSupportedSanitizers() const override;
 
 protected:
   Tool *buildLinker() const override;

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=281071&r1=281070&r2=281071&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Fri Sep  9 13:20:49 2016
@@ -3081,11 +3081,15 @@ static void linkSanitizerRuntimeDeps(con
   // Force linking against the system libraries sanitizers depends on
   // (see PR15823 why this is necessary).
   CmdArgs.push_back("--no-as-needed");
-  CmdArgs.push_back("-lpthread");
-  CmdArgs.push_back("-lrt");
+  // There's no libpthread or librt on RTEMS.
+  if (TC.getTriple().getOS() != llvm::Triple::RTEMS) {
+CmdArgs.push_back("-lpthread");
+CmdArgs.push_back("-lrt");
+  }
   CmdArgs.push_back("-lm");
-  // There's no libdl on FreeBSD.
-  if (TC.getTriple().getOS() != llvm::Triple::FreeBSD)
+  // There's no libdl on FreeBSD or RTEMS.
+  if (TC.getTriple().getOS() != llvm::Triple::FreeBSD &&
+  TC.getTriple().getOS() != llvm::Triple::RTEMS)
 CmdArgs.push_back("-ldl");
 }
 
@@ -11055,9 +11059,12 @@ void tools::Myriad::Linker::ConstructJob
 
   TC.AddFilePathLibArgs(Args, CmdArgs);
 
+  bool NeedsSanitizerDeps = addSanitizerRuntimes(TC, Args, CmdArgs);
   AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
 
   if (UseDefaultLibs) {
+if (NeedsSanitizerDeps)
+  linkSanitizerRuntimeDeps(TC, CmdArgs);
 if (C.getDriver().CCCIsCXX())
   CmdArgs.push_back("-lstdc++");
 if (T.getOS() == llvm::Triple::RTEMS) {

Modified: cfe/trunk/test/Driver/sanitizer-ld.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/sanitizer-ld.c?rev=281071&r1=281070&r2=281071&view=diff
==
--- cfe/trunk/test/Driver/sanitizer-ld.c (original)
+++ cfe/trunk/test/Driver/sanitizer-ld.c Fri Sep  9 13:20:49 2016
@@ -151,6 +151,15 @@
 // CHECK-ASAN-ANDROID-SHARED: libclang_rt.asan-arm-android.so"
 // CHECK-ASAN-ANDROID-SHARED-NOT: "-lpthread"
 
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -target sparcel-myriad-rtems-elf -fsanitize=address \
+// RUN: --sysroot=%S/Inputs/basic_myriad_tree \
+// RUN:   | FileCheck --check-prefix=CHECK-ASAN-MYRIAD %s
+//
+// CHECK-ASAN-MYRIAD: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
+// CHECK-ASAN-MYRIAD-NOT: "-lc"
+// CHECK-ASAN-MYRIAD: libclang_rt.asan-sparcel.a"
+
 // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
 // RUN: -target x86_64-unknown-linux -stdlib=platform -lstdc++ \
 // RUN: -fsanitize=thread \


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r284617 - [Myriad] Find libc++ headers next to clang binary

2016-10-19 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Oct 19 12:30:40 2016
New Revision: 284617

URL: http://llvm.org/viewvc/llvm-project?rev=284617&view=rev
Log:
[Myriad] Find libc++ headers next to clang binary

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=284617&r1=284616&r2=284617&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Wed Oct 19 12:30:40 2016
@@ -5130,15 +5130,19 @@ void MyriadToolChain::AddClangCXXStdlibI
   DriverArgs.hasArg(options::OPT_nostdincxx))
 return;
 
-  // Only libstdc++, for now.
-  StringRef LibDir = GCCInstallation.getParentLibPath();
-  const GCCVersion &Version = GCCInstallation.getVersion();
-  StringRef TripleStr = GCCInstallation.getTriple().str();
-  const Multilib &Multilib = GCCInstallation.getMultilib();
-
-  addLibStdCXXIncludePaths(
-  LibDir.str() + "/../" + TripleStr.str() + "/include/c++/" + Version.Text,
-  "", TripleStr, "", "", Multilib.includeSuffix(), DriverArgs, CC1Args);
+  if (GetCXXStdlibType(DriverArgs) == ToolChain::CST_Libcxx) {
+std::string Path(getDriver().getInstalledDir());
+Path += "/../include/c++/v1";
+addSystemInclude(DriverArgs, CC1Args, Path);
+  } else {
+StringRef LibDir = GCCInstallation.getParentLibPath();
+const GCCVersion &Version = GCCInstallation.getVersion();
+StringRef TripleStr = GCCInstallation.getTriple().str();
+const Multilib &Multilib = GCCInstallation.getMultilib();
+addLibStdCXXIncludePaths(
+LibDir.str() + "/../" + TripleStr.str() + "/include/c++/" + 
Version.Text,
+"", TripleStr, "", "", Multilib.includeSuffix(), DriverArgs, CC1Args);
+  }
 }
 
 // MyriadToolChain handles several triples:

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=284617&r1=284616&r2=284617&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Wed Oct 19 12:30:40 2016
@@ -69,8 +69,11 @@
 // RUN:   | FileCheck %s -check-prefix=PREPROCESS
 // PREPROCESS: "-E" "-DMYRIAD2" "-I" "foo"
 
-// RUN: %clang -target sparc-myriad -### --driver-mode=g++ %s 2>&1 | FileCheck 
%s --check-prefix=STDLIBCXX
-// STDLIBCXX: "-lstdc++" "-lc" "-lgcc"
+// RUN: %clang -target sparc-myriad -### --driver-mode=g++ %s 2>&1 | FileCheck 
%s --check-prefix=LIBSTDCXX
+// LIBSTDCXX: "-lstdc++" "-lc" "-lgcc"
+
+// RUN: %clang -stdlib=libc++ -### -target sparcel-myriad -S -x c++ %s 2>&1 | 
FileCheck %s -check-prefix=LIBCXX
+// LIBCXX: "-internal-isystem" "{{.*}}/../include/c++/v1"
 
 // RUN: %clang -target sparc-myriad -### -nostdlib %s 2>&1 | FileCheck %s 
--check-prefix=NOSTDLIB
 // NOSTDLIB-NOT: crtbegin.o


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r285140 - [Myriad] Find libc++ adjacent to libstdc++

2016-10-25 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Tue Oct 25 18:02:30 2016
New Revision: 285140

URL: http://llvm.org/viewvc/llvm-project?rev=285140&view=rev
Log:
[Myriad] Find libc++ adjacent to libstdc++

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=285140&r1=285139&r2=285140&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Tue Oct 25 18:02:30 2016
@@ -5169,18 +5169,13 @@ MyriadToolChain::MyriadToolChain(const D
   }
 
   if (GCCInstallation.isValid()) {
-// The contents of LibDir are independent of the version of gcc.
-// This contains libc, libg, libm, libstdc++, libssp.
-// The 'ma1x00' and 'nofpu' variants are irrelevant.
-SmallString<128> LibDir(GCCInstallation.getParentLibPath());
-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());
 addPathIfExists(D, CompilerSupportDir, getFilePaths());
   }
+  // libstd++ and libc++ must both be found in this one place.
+  addPathIfExists(D, D.Dir + "/../sparc-myriad-elf/lib", getFilePaths());
 }
 
 MyriadToolChain::~MyriadToolChain() {}

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=285140&r1=285139&r2=285140&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue Oct 25 18:02:30 2016
@@ -11313,6 +11313,8 @@ void tools::Myriad::Linker::ConstructJob
   !Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles);
   bool UseDefaultLibs =
   !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs);
+  // Silence warning if the args contain both -nostdlib and -stdlib=.
+  Args.getLastArg(options::OPT_stdlib_EQ);
 
   if (T.getArch() == llvm::Triple::sparc)
 CmdArgs.push_back("-EB");
@@ -11353,19 +11355,25 @@ void tools::Myriad::Linker::ConstructJob
   if (UseDefaultLibs) {
 if (NeedsSanitizerDeps)
   linkSanitizerRuntimeDeps(TC, CmdArgs);
-if (C.getDriver().CCCIsCXX())
-  CmdArgs.push_back("-lstdc++");
+if (C.getDriver().CCCIsCXX()) {
+  if (TC.GetCXXStdlibType(Args) == ToolChain::CST_Libcxx) {
+CmdArgs.push_back("-lc++");
+CmdArgs.push_back("-lc++abi");
+  } else
+CmdArgs.push_back("-lstdc++");
+}
 if (T.getOS() == llvm::Triple::RTEMS) {
   CmdArgs.push_back("--start-group");
   CmdArgs.push_back("-lc");
+  CmdArgs.push_back("-lgcc"); // circularly dependent on rtems
   // You must provide your own "-L" option to enable finding these.
   CmdArgs.push_back("-lrtemscpu");
   CmdArgs.push_back("-lrtemsbsp");
   CmdArgs.push_back("--end-group");
 } else {
   CmdArgs.push_back("-lc");
+  CmdArgs.push_back("-lgcc");
 }
-CmdArgs.push_back("-lgcc");
   }
   if (UseStartfiles) {
 CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtend.o")));

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=285140&r1=285139&r2=285140&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Tue Oct 25 18:02:30 2016
@@ -1,10 +1,11 @@
 // RUN: %clang -no-canonical-prefixes -### -target sparc-myriad-rtems-elf %s \
+// RUN: -ccc-install-dir %S/Inputs/basic_myriad_tree/bin \
 // RUN: --gcc-toolchain=%S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s 
-check-prefix=LINK_WITH_RTEMS
 // LINK_WITH_RTEMS: Inputs{{.*}}crti.o
 // LINK_WITH_RTEMS: Inputs{{.*}}crtbegin.o
-// LINK_WITH_RTEMS: 
"-L{{.*}}Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/../../..{{/|}}../sparc-myriad-elf/lib"
 // LINK_WITH_RTEMS: 
"-L{{.*}}Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2"
-// LINK_WITH_RTEMS: "--start-group" "-lc" "-lrtemscpu" "-lrtemsbsp" 
"--end-group" "-lgcc"
+// LINK_WITH_RTEMS: 
"-L{{.*}}Inputs/basic_myriad_tree/bin/../sparc-myriad-elf/lib"
+// LINK_WITH_RTEMS: "--start-group" "-lc" "-lgcc" "-lrtemscpu" "-lrtemsbsp" 
"--end-group"
 // LINK_WITH_RTEMS: Inputs{{.*}}crtend.o
 // LINK_WITH_RTEMS: Inputs{{.*}}crtn.o
 


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r285144 - [Myriad] add empty file to simulated bin dir

2016-10-25 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Tue Oct 25 18:59:11 2016
New Revision: 285144

URL: http://llvm.org/viewvc/llvm-project?rev=285144&view=rev
Log:
[Myriad] add empty file to simulated bin dir

Added:
cfe/trunk/test/Driver/Inputs/basic_myriad_tree/bin/
cfe/trunk/test/Driver/Inputs/basic_myriad_tree/bin/.keep

Added: cfe/trunk/test/Driver/Inputs/basic_myriad_tree/bin/.keep
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/basic_myriad_tree/bin/.keep?rev=285144&view=auto
==
(empty)


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D26286: [Sparc]: correct the ATOMIC_LLONG_LOCK_FREE macro

2016-11-03 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added a reviewer: jyknight.
dougk added a subscriber: cfe-commits.

https://reviews.llvm.org/D26286

Files:
  lib/Basic/Targets.cpp
  test/Preprocessor/init.c


Index: test/Preprocessor/init.c
===
--- test/Preprocessor/init.c
+++ test/Preprocessor/init.c
@@ -6913,6 +6913,7 @@
 // SPARC:#define __FLT_MIN_EXP__ (-125)
 // SPARC:#define __FLT_MIN__ 1.17549435e-38F
 // SPARC:#define __FLT_RADIX__ 2
+// SPARC:#define __GCC_ATOMIC_LLONG_LOCK_FREE 1
 // SPARC:#define __INT16_C_SUFFIX__
 // SPARC:#define __INT16_FMTd__ "hd"
 // SPARC:#define __INT16_FMTi__ "hi"
Index: lib/Basic/Targets.cpp
===
--- lib/Basic/Targets.cpp
+++ lib/Basic/Targets.cpp
@@ -6797,7 +6797,10 @@
   PtrDiffType = SignedLong;
   break;
 }
-MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64;
+// Up to 32 bits are lock-free atomic, but we're willing to do atomic ops
+// on up to 64 bits.
+MaxAtomicPromoteWidth = 64;
+MaxAtomicInlineWidth = 32;
   }
 
   void getTargetDefines(const LangOptions &Opts,


Index: test/Preprocessor/init.c
===
--- test/Preprocessor/init.c
+++ test/Preprocessor/init.c
@@ -6913,6 +6913,7 @@
 // SPARC:#define __FLT_MIN_EXP__ (-125)
 // SPARC:#define __FLT_MIN__ 1.17549435e-38F
 // SPARC:#define __FLT_RADIX__ 2
+// SPARC:#define __GCC_ATOMIC_LLONG_LOCK_FREE 1
 // SPARC:#define __INT16_C_SUFFIX__
 // SPARC:#define __INT16_FMTd__ "hd"
 // SPARC:#define __INT16_FMTi__ "hi"
Index: lib/Basic/Targets.cpp
===
--- lib/Basic/Targets.cpp
+++ lib/Basic/Targets.cpp
@@ -6797,7 +6797,10 @@
   PtrDiffType = SignedLong;
   break;
 }
-MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64;
+// Up to 32 bits are lock-free atomic, but we're willing to do atomic ops
+// on up to 64 bits.
+MaxAtomicPromoteWidth = 64;
+MaxAtomicInlineWidth = 32;
   }
 
   void getTargetDefines(const LangOptions &Opts,
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D26286: [Sparc]: correct the ATOMIC_LLONG_LOCK_FREE macro

2016-11-03 Thread Douglas Katzman via cfe-commits
dougk updated this revision to Diff 76879.
dougk added a comment.

fix atomics-inlining test


https://reviews.llvm.org/D26286

Files:
  lib/Basic/Targets.cpp
  test/CodeGen/atomics-inlining.c
  test/Preprocessor/init.c


Index: test/Preprocessor/init.c
===
--- test/Preprocessor/init.c
+++ test/Preprocessor/init.c
@@ -6913,6 +6913,7 @@
 // SPARC:#define __FLT_MIN_EXP__ (-125)
 // SPARC:#define __FLT_MIN__ 1.17549435e-38F
 // SPARC:#define __FLT_RADIX__ 2
+// SPARC:#define __GCC_ATOMIC_LLONG_LOCK_FREE 1
 // SPARC:#define __INT16_C_SUFFIX__
 // SPARC:#define __INT16_FMTd__ "hd"
 // SPARC:#define __INT16_FMTi__ "hi"
Index: test/CodeGen/atomics-inlining.c
===
--- test/CodeGen/atomics-inlining.c
+++ test/CodeGen/atomics-inlining.c
@@ -3,7 +3,8 @@
 // RUN: %clang_cc1 -triple powerpc64-linux-gnu -emit-llvm %s -o - | FileCheck 
%s -check-prefix=PPC64
 // RUN: %clang_cc1 -triple mipsel-linux-gnu -emit-llvm %s -o - | FileCheck %s 
-check-prefix=MIPS32
 // RUN: %clang_cc1 -triple mips64el-linux-gnu -emit-llvm %s -o - | FileCheck 
%s -check-prefix=MIPS64
-// RUN: %clang_cc1 -triple sparc-unknown-eabi -emit-llvm %s -o - | FileCheck 
%s -check-prefix=SPARC
+// RUN: %clang_cc1 -triple sparc-unknown-eabi -emit-llvm %s -o - | FileCheck 
%s -check-prefix=SPARCV8 -check-prefix=SPARC
+// RUN: %clang_cc1 -triple sparcv9-unknown-eabi -emit-llvm %s -o - | FileCheck 
%s -check-prefix=SPARCV9 -check-prefix=SPARC
 
 unsigned char c1, c2;
 unsigned short s1, s2;
@@ -99,8 +100,10 @@
 // SPARC: store atomic i16 {{.*}}, i16* @s1 seq_cst
 // SPARC: = load atomic i32, i32* @i1 seq_cst
 // SPARC: store atomic i32 {{.*}}, i32* @i1 seq_cst
-// SPARC: = load atomic i64, i64* @ll1 seq_cst
-// SPARC: store atomic i64 {{.*}}, i64* @ll1 seq_cst
-// SPARC: call void @__atomic_load(i32 100, i8* getelementptr inbounds ([100 x 
i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], 
[100 x i8]* @a2, i32 0, i32 0)
-// SPARC: call void @__atomic_store(i32 100, i8* getelementptr inbounds ([100 
x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], 
[100 x i8]* @a2, i32 0, i32 0)
+// SPARCV8: call i64 @__atomic_load_8(i8* bitcast (i64* @ll1 to i8*)
+// SPARCV8: call void @__atomic_store_8(i8* bitcast (i64* @ll1 to i8*), i64
+// SPARCV9: load atomic i64, i64* @ll1 seq_cst, align 8
+// SPARCV9: store atomic i64 %7, i64* @ll1 seq_cst, align 8
+// SPARCV8: call void @__atomic_load(i32 100, i8* getelementptr inbounds ([100 
x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], 
[100 x i8]* @a2, i32 0, i32 0)
+// SPARCV8: call void @__atomic_store(i32 100, i8* getelementptr inbounds 
([100 x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x 
i8], [100 x i8]* @a2, i32 0, i32 0)
 }
Index: lib/Basic/Targets.cpp
===
--- lib/Basic/Targets.cpp
+++ lib/Basic/Targets.cpp
@@ -6797,7 +6797,10 @@
   PtrDiffType = SignedLong;
   break;
 }
-MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64;
+// Up to 32 bits are lock-free atomic, but we're willing to do atomic ops
+// on up to 64 bits.
+MaxAtomicPromoteWidth = 64;
+MaxAtomicInlineWidth = 32;
   }
 
   void getTargetDefines(const LangOptions &Opts,


Index: test/Preprocessor/init.c
===
--- test/Preprocessor/init.c
+++ test/Preprocessor/init.c
@@ -6913,6 +6913,7 @@
 // SPARC:#define __FLT_MIN_EXP__ (-125)
 // SPARC:#define __FLT_MIN__ 1.17549435e-38F
 // SPARC:#define __FLT_RADIX__ 2
+// SPARC:#define __GCC_ATOMIC_LLONG_LOCK_FREE 1
 // SPARC:#define __INT16_C_SUFFIX__
 // SPARC:#define __INT16_FMTd__ "hd"
 // SPARC:#define __INT16_FMTi__ "hi"
Index: test/CodeGen/atomics-inlining.c
===
--- test/CodeGen/atomics-inlining.c
+++ test/CodeGen/atomics-inlining.c
@@ -3,7 +3,8 @@
 // RUN: %clang_cc1 -triple powerpc64-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=PPC64
 // RUN: %clang_cc1 -triple mipsel-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=MIPS32
 // RUN: %clang_cc1 -triple mips64el-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=MIPS64
-// RUN: %clang_cc1 -triple sparc-unknown-eabi -emit-llvm %s -o - | FileCheck %s -check-prefix=SPARC
+// RUN: %clang_cc1 -triple sparc-unknown-eabi -emit-llvm %s -o - | FileCheck %s -check-prefix=SPARCV8 -check-prefix=SPARC
+// RUN: %clang_cc1 -triple sparcv9-unknown-eabi -emit-llvm %s -o - | FileCheck %s -check-prefix=SPARCV9 -check-prefix=SPARC
 
 unsigned char c1, c2;
 unsigned short s1, s2;
@@ -99,8 +100,10 @@
 // SPARC: store atomic i16 {{.*}}, i16* @s1 seq_cst
 // SPARC: = load atomic i32, i32* @i1 seq_cst
 // SPARC: store atomic i32 {{.*}}, i32* @i1 seq_cst
-// SPARC: = load atomic i64, i64* @ll1 seq_cst
-// SPARC:

Re: r284272 - Implement no_sanitize_address for global vars

2016-11-08 Thread Douglas Katzman via cfe-commits
oh, sorry for missing this email.
I'll say "no" - I was hoping you'd audit it!

jyknight looked at it and gave me the suggestion to fail the attribute
parsing if, in the non-deprecated syntax, _any_ of the no_sanitize
modifiers are inapplicable to global vars.

On Tue, Oct 25, 2016 at 7:19 PM, Kostya Serebryany  wrote:

> ping
>
> On Mon, Oct 17, 2016 at 5:57 PM, Kostya Serebryany  wrote:
>
>> Did you code-review this?
>> (sorry if I missed it)
>>
>> On Fri, Oct 14, 2016 at 12:55 PM, Douglas Katzman via cfe-commits <
>> cfe-commits@lists.llvm.org> wrote:
>>
>>> Author: dougk
>>> Date: Fri Oct 14 14:55:09 2016
>>> New Revision: 284272
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=284272&view=rev
>>> Log:
>>> Implement no_sanitize_address for global vars
>>>
>>> Modified:
>>> cfe/trunk/include/clang/Basic/Attr.td
>>> cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
>>> cfe/trunk/include/clang/Sema/AttributeList.h
>>> cfe/trunk/lib/CodeGen/SanitizerMetadata.cpp
>>> cfe/trunk/lib/Sema/SemaDeclAttr.cpp
>>> cfe/trunk/test/CodeGen/asan-globals.cpp
>>> cfe/trunk/test/SemaCXX/attr-no-sanitize-address.cpp
>>> cfe/trunk/test/SemaCXX/attr-no-sanitize.cpp
>>>
>>> Modified: cfe/trunk/include/clang/Basic/Attr.td
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/
>>> Basic/Attr.td?rev=284272&r1=284271&r2=284272&view=diff
>>> 
>>> ==
>>> --- cfe/trunk/include/clang/Basic/Attr.td (original)
>>> +++ cfe/trunk/include/clang/Basic/Attr.td Fri Oct 14 14:55:09 2016
>>> @@ -1705,7 +1705,8 @@ def X86ForceAlignArgPointer : Inheritabl
>>>  def NoSanitize : InheritableAttr {
>>>let Spellings = [GNU<"no_sanitize">, CXX11<"clang", "no_sanitize">];
>>>let Args = [VariadicStringArgument<"Sanitizers">];
>>> -  let Subjects = SubjectList<[Function, ObjCMethod], ErrorDiag>;
>>> +  let Subjects = SubjectList<[Function, ObjCMethod, GlobalVar],
>>> ErrorDiag,
>>> +"ExpectedFunctionMethodOrGlobalVar">;
>>>let Documentation = [NoSanitizeDocs];
>>>let AdditionalMembers = [{
>>>  SanitizerMask getMask() const {
>>> @@ -1727,7 +1728,8 @@ def NoSanitizeSpecific : InheritableAttr
>>> GCC<"no_sanitize_address">,
>>> GCC<"no_sanitize_thread">,
>>> GNU<"no_sanitize_memory">];
>>> -  let Subjects = SubjectList<[Function], ErrorDiag>;
>>> +  let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
>>> +"ExpectedFunctionGlobalVarMethodOrProperty">;
>>>let Documentation = [NoSanitizeAddressDocs, NoSanitizeThreadDocs,
>>> NoSanitizeMemoryDocs];
>>>let ASTNode = 0;
>>>
>>> Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/
>>> Basic/DiagnosticSemaKinds.td?rev=284272&r1=284271&r2=284272&view=diff
>>> 
>>> ==
>>> --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
>>> +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Fri Oct 14
>>> 14:55:09 2016
>>> @@ -2577,6 +2577,7 @@ def warn_attribute_wrong_decl_type : War
>>>"|functions, methods and blocks"
>>>"|functions, methods, and classes"
>>>"|functions, methods, and parameters"
>>> +  "|functions, methods, and global variables"
>>>"|classes"
>>>"|enums"
>>>"|variables"
>>>
>>> Modified: cfe/trunk/include/clang/Sema/AttributeList.h
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/
>>> Sema/AttributeList.h?rev=284272&r1=284271&r2=284272&view=diff
>>> 
>>> ==
>>> --- cfe/trunk/include/clang/Sema/AttributeList.h (original)
>>> +++ cfe/trunk/include/clang/Sema/AttributeList.h Fri Oct 14 14:55:09
>>> 2016
>>> @@ -891,6 +891,7 @@ enum AttributeDeclKind {
>>>ExpectedFunctio

[PATCH] D26286: [Sparc]: correct the ATOMIC_LLONG_LOCK_FREE macro

2016-11-09 Thread Douglas Katzman via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL286376: [Sparc] LLONG is not lock-free atomic on v8 
(authored by dougk).

Changed prior to commit:
  https://reviews.llvm.org/D26286?vs=76879&id=77353#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D26286

Files:
  cfe/trunk/lib/Basic/Targets.cpp
  cfe/trunk/test/CodeGen/atomics-inlining.c
  cfe/trunk/test/Preprocessor/init.c


Index: cfe/trunk/test/CodeGen/atomics-inlining.c
===
--- cfe/trunk/test/CodeGen/atomics-inlining.c
+++ cfe/trunk/test/CodeGen/atomics-inlining.c
@@ -3,7 +3,8 @@
 // RUN: %clang_cc1 -triple powerpc64-linux-gnu -emit-llvm %s -o - | FileCheck 
%s -check-prefix=PPC64
 // RUN: %clang_cc1 -triple mipsel-linux-gnu -emit-llvm %s -o - | FileCheck %s 
-check-prefix=MIPS32
 // RUN: %clang_cc1 -triple mips64el-linux-gnu -emit-llvm %s -o - | FileCheck 
%s -check-prefix=MIPS64
-// RUN: %clang_cc1 -triple sparc-unknown-eabi -emit-llvm %s -o - | FileCheck 
%s -check-prefix=SPARC
+// RUN: %clang_cc1 -triple sparc-unknown-eabi -emit-llvm %s -o - | FileCheck 
%s -check-prefix=SPARCV8 -check-prefix=SPARC
+// RUN: %clang_cc1 -triple sparcv9-unknown-eabi -emit-llvm %s -o - | FileCheck 
%s -check-prefix=SPARCV9 -check-prefix=SPARC
 
 unsigned char c1, c2;
 unsigned short s1, s2;
@@ -99,8 +100,10 @@
 // SPARC: store atomic i16 {{.*}}, i16* @s1 seq_cst
 // SPARC: = load atomic i32, i32* @i1 seq_cst
 // SPARC: store atomic i32 {{.*}}, i32* @i1 seq_cst
-// SPARC: = load atomic i64, i64* @ll1 seq_cst
-// SPARC: store atomic i64 {{.*}}, i64* @ll1 seq_cst
-// SPARC: call void @__atomic_load(i32 100, i8* getelementptr inbounds ([100 x 
i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], 
[100 x i8]* @a2, i32 0, i32 0)
-// SPARC: call void @__atomic_store(i32 100, i8* getelementptr inbounds ([100 
x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], 
[100 x i8]* @a2, i32 0, i32 0)
+// SPARCV8: call i64 @__atomic_load_8(i8* bitcast (i64* @ll1 to i8*)
+// SPARCV8: call void @__atomic_store_8(i8* bitcast (i64* @ll1 to i8*), i64
+// SPARCV9: load atomic i64, i64* @ll1 seq_cst, align 8
+// SPARCV9: store atomic i64 %7, i64* @ll1 seq_cst, align 8
+// SPARCV8: call void @__atomic_load(i32 100, i8* getelementptr inbounds ([100 
x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], 
[100 x i8]* @a2, i32 0, i32 0)
+// SPARCV8: call void @__atomic_store(i32 100, i8* getelementptr inbounds 
([100 x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x 
i8], [100 x i8]* @a2, i32 0, i32 0)
 }
Index: cfe/trunk/test/Preprocessor/init.c
===
--- cfe/trunk/test/Preprocessor/init.c
+++ cfe/trunk/test/Preprocessor/init.c
@@ -6913,6 +6913,7 @@
 // SPARC:#define __FLT_MIN_EXP__ (-125)
 // SPARC:#define __FLT_MIN__ 1.17549435e-38F
 // SPARC:#define __FLT_RADIX__ 2
+// SPARC:#define __GCC_ATOMIC_LLONG_LOCK_FREE 1
 // SPARC:#define __INT16_C_SUFFIX__
 // SPARC:#define __INT16_FMTd__ "hd"
 // SPARC:#define __INT16_FMTi__ "hi"
Index: cfe/trunk/lib/Basic/Targets.cpp
===
--- cfe/trunk/lib/Basic/Targets.cpp
+++ cfe/trunk/lib/Basic/Targets.cpp
@@ -6803,7 +6803,10 @@
   PtrDiffType = SignedLong;
   break;
 }
-MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64;
+// Up to 32 bits are lock-free atomic, but we're willing to do atomic ops
+// on up to 64 bits.
+MaxAtomicPromoteWidth = 64;
+MaxAtomicInlineWidth = 32;
   }
 
   void getTargetDefines(const LangOptions &Opts,


Index: cfe/trunk/test/CodeGen/atomics-inlining.c
===
--- cfe/trunk/test/CodeGen/atomics-inlining.c
+++ cfe/trunk/test/CodeGen/atomics-inlining.c
@@ -3,7 +3,8 @@
 // RUN: %clang_cc1 -triple powerpc64-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=PPC64
 // RUN: %clang_cc1 -triple mipsel-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=MIPS32
 // RUN: %clang_cc1 -triple mips64el-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=MIPS64
-// RUN: %clang_cc1 -triple sparc-unknown-eabi -emit-llvm %s -o - | FileCheck %s -check-prefix=SPARC
+// RUN: %clang_cc1 -triple sparc-unknown-eabi -emit-llvm %s -o - | FileCheck %s -check-prefix=SPARCV8 -check-prefix=SPARC
+// RUN: %clang_cc1 -triple sparcv9-unknown-eabi -emit-llvm %s -o - | FileCheck %s -check-prefix=SPARCV9 -check-prefix=SPARC
 
 unsigned char c1, c2;
 unsigned short s1, s2;
@@ -99,8 +100,10 @@
 // SPARC: store atomic i16 {{.*}}, i16* @s1 seq_cst
 // SPARC: = load atomic i32, i32* @i1 seq_cst
 // SPARC: store atomic i32 {{.*}}, i32* @i1 seq_cst
-// SPARC: = load atomic i64, i64* @ll1 seq_cst
-// SPARC: store atomic i64 {{.*}}, i64* @ll1 seq_cst
-// SPARC: call void @__atomic_load(i32 100, i8* getelementptr inbounds ([100 x i8], [100 x

r286376 - [Sparc] LLONG is not lock-free atomic on v8

2016-11-09 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Nov  9 09:43:51 2016
New Revision: 286376

URL: http://llvm.org/viewvc/llvm-project?rev=286376&view=rev
Log:
[Sparc] LLONG is not lock-free atomic on v8

Differential Revision: https://reviews.llvm.org/D26286

Modified:
cfe/trunk/lib/Basic/Targets.cpp
cfe/trunk/test/CodeGen/atomics-inlining.c
cfe/trunk/test/Preprocessor/init.c

Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=286376&r1=286375&r2=286376&view=diff
==
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Wed Nov  9 09:43:51 2016
@@ -6803,7 +6803,10 @@ public:
   PtrDiffType = SignedLong;
   break;
 }
-MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64;
+// Up to 32 bits are lock-free atomic, but we're willing to do atomic ops
+// on up to 64 bits.
+MaxAtomicPromoteWidth = 64;
+MaxAtomicInlineWidth = 32;
   }
 
   void getTargetDefines(const LangOptions &Opts,

Modified: cfe/trunk/test/CodeGen/atomics-inlining.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/atomics-inlining.c?rev=286376&r1=286375&r2=286376&view=diff
==
--- cfe/trunk/test/CodeGen/atomics-inlining.c (original)
+++ cfe/trunk/test/CodeGen/atomics-inlining.c Wed Nov  9 09:43:51 2016
@@ -3,7 +3,8 @@
 // RUN: %clang_cc1 -triple powerpc64-linux-gnu -emit-llvm %s -o - | FileCheck 
%s -check-prefix=PPC64
 // RUN: %clang_cc1 -triple mipsel-linux-gnu -emit-llvm %s -o - | FileCheck %s 
-check-prefix=MIPS32
 // RUN: %clang_cc1 -triple mips64el-linux-gnu -emit-llvm %s -o - | FileCheck 
%s -check-prefix=MIPS64
-// RUN: %clang_cc1 -triple sparc-unknown-eabi -emit-llvm %s -o - | FileCheck 
%s -check-prefix=SPARC
+// RUN: %clang_cc1 -triple sparc-unknown-eabi -emit-llvm %s -o - | FileCheck 
%s -check-prefix=SPARCV8 -check-prefix=SPARC
+// RUN: %clang_cc1 -triple sparcv9-unknown-eabi -emit-llvm %s -o - | FileCheck 
%s -check-prefix=SPARCV9 -check-prefix=SPARC
 
 unsigned char c1, c2;
 unsigned short s1, s2;
@@ -99,8 +100,10 @@ void test1(void) {
 // SPARC: store atomic i16 {{.*}}, i16* @s1 seq_cst
 // SPARC: = load atomic i32, i32* @i1 seq_cst
 // SPARC: store atomic i32 {{.*}}, i32* @i1 seq_cst
-// SPARC: = load atomic i64, i64* @ll1 seq_cst
-// SPARC: store atomic i64 {{.*}}, i64* @ll1 seq_cst
-// SPARC: call void @__atomic_load(i32 100, i8* getelementptr inbounds ([100 x 
i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], 
[100 x i8]* @a2, i32 0, i32 0)
-// SPARC: call void @__atomic_store(i32 100, i8* getelementptr inbounds ([100 
x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], 
[100 x i8]* @a2, i32 0, i32 0)
+// SPARCV8: call i64 @__atomic_load_8(i8* bitcast (i64* @ll1 to i8*)
+// SPARCV8: call void @__atomic_store_8(i8* bitcast (i64* @ll1 to i8*), i64
+// SPARCV9: load atomic i64, i64* @ll1 seq_cst, align 8
+// SPARCV9: store atomic i64 %7, i64* @ll1 seq_cst, align 8
+// SPARCV8: call void @__atomic_load(i32 100, i8* getelementptr inbounds ([100 
x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], 
[100 x i8]* @a2, i32 0, i32 0)
+// SPARCV8: call void @__atomic_store(i32 100, i8* getelementptr inbounds 
([100 x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x 
i8], [100 x i8]* @a2, i32 0, i32 0)
 }

Modified: cfe/trunk/test/Preprocessor/init.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/init.c?rev=286376&r1=286375&r2=286376&view=diff
==
--- cfe/trunk/test/Preprocessor/init.c (original)
+++ cfe/trunk/test/Preprocessor/init.c Wed Nov  9 09:43:51 2016
@@ -6913,6 +6913,7 @@
 // SPARC:#define __FLT_MIN_EXP__ (-125)
 // SPARC:#define __FLT_MIN__ 1.17549435e-38F
 // SPARC:#define __FLT_RADIX__ 2
+// SPARC:#define __GCC_ATOMIC_LLONG_LOCK_FREE 1
 // SPARC:#define __INT16_C_SUFFIX__
 // SPARC:#define __INT16_FMTd__ "hd"
 // SPARC:#define __INT16_FMTi__ "hi"


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r284272 - Implement no_sanitize_address for global vars

2016-11-09 Thread Douglas Katzman via cfe-commits
will do.  I'll initiate a review for the original change and a new one for
the suggestions.

The ExpectedFunctionGlobalVarMethodOrProperty diagnostic was essentially a
copy-and-paste from here:

def Alias : Attr {
  let Spellings = [GCC<"alias">];
  let Args = [StringArgument<"Aliasee">];
  let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
 "ExpectedFunctionGlobalVarMethodOrProperty">;
  let Documentation = [Undocumented];
}

I guess that one's wrong?  That'll teach me to look at existing code.
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D26454: Implement no_sanitize_address for global vars

2016-11-09 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added a reviewer: aaron.ballman.
dougk added a subscriber: cfe-commits.

This was already submitted as r284272.

Regarding the use of Attr as a local variable name, I would prefer to remain 
consistent with the existing code in CodeGenFunction.cpp which was not touched 
by this patch.

line 720:  for (auto Attr : D->specific_attrs())

but I'm certainly not opposed to changing both places.


https://reviews.llvm.org/D26454

Files:
  include/clang/Basic/Attr.td
  include/clang/Basic/DiagnosticSemaKinds.td
  include/clang/Sema/AttributeList.h
  lib/CodeGen/SanitizerMetadata.cpp
  lib/Sema/SemaDeclAttr.cpp
  test/CodeGen/asan-globals.cpp
  test/SemaCXX/attr-no-sanitize-address.cpp
  test/SemaCXX/attr-no-sanitize.cpp

Index: test/SemaCXX/attr-no-sanitize.cpp
===
--- test/SemaCXX/attr-no-sanitize.cpp
+++ test/SemaCXX/attr-no-sanitize.cpp
@@ -2,8 +2,6 @@
 // RUN: not %clang_cc1 -std=c++11 -ast-dump %s | FileCheck --check-prefix=DUMP %s
 // RUN: not %clang_cc1 -std=c++11 -ast-print %s | FileCheck --check-prefix=PRINT %s
 
-int v1 __attribute__((no_sanitize("address"))); // expected-error{{'no_sanitize' attribute only applies to functions and methods}}
-
 int f1() __attribute__((no_sanitize)); // expected-error{{'no_sanitize' attribute takes at least 1 argument}}
 
 int f2() __attribute__((no_sanitize(1))); // expected-error{{'no_sanitize' attribute requires a string}}
Index: test/SemaCXX/attr-no-sanitize-address.cpp
===
--- test/SemaCXX/attr-no-sanitize-address.cpp
+++ test/SemaCXX/attr-no-sanitize-address.cpp
@@ -21,9 +21,6 @@
   return x;
 }
 
-int noanal_test_var NO_SANITIZE_ADDRESS; // \
-  // expected-error {{'no_sanitize_address' attribute only applies to functions}}
-
 class NoanalFoo {
  private:
   int test_field NO_SANITIZE_ADDRESS; // \
Index: test/CodeGen/asan-globals.cpp
===
--- test/CodeGen/asan-globals.cpp
+++ test/CodeGen/asan-globals.cpp
@@ -7,6 +7,7 @@
 
 int global;
 int dyn_init_global = global;
+int __attribute__((no_sanitize("address"))) attributed_global;
 int blacklisted_global;
 
 void func() {
@@ -14,24 +15,26 @@
   const char *literal = "Hello, world!";
 }
 
-// CHECK: !llvm.asan.globals = !{![[EXTRA_GLOBAL:[0-9]+]], ![[GLOBAL:[0-9]+]], ![[DYN_INIT_GLOBAL:[0-9]+]], ![[BLACKLISTED_GLOBAL:[0-9]+]], ![[STATIC_VAR:[0-9]+]], ![[LITERAL:[0-9]+]]}
+// CHECK: !llvm.asan.globals = !{![[EXTRA_GLOBAL:[0-9]+]], ![[GLOBAL:[0-9]+]], ![[DYN_INIT_GLOBAL:[0-9]+]], ![[ATTR_GLOBAL:[0-9]+]], ![[BLACKLISTED_GLOBAL:[0-9]+]], ![[STATIC_VAR:[0-9]+]], ![[LITERAL:[0-9]+]]}
 // CHECK: ![[EXTRA_GLOBAL]] = !{{{.*}} ![[EXTRA_GLOBAL_LOC:[0-9]+]], !"extra_global", i1 false, i1 false}
 // CHECK: ![[EXTRA_GLOBAL_LOC]] = !{!"{{.*}}extra-source.cpp", i32 1, i32 5}
 // CHECK: ![[GLOBAL]] = !{{{.*}} ![[GLOBAL_LOC:[0-9]+]], !"global", i1 false, i1 false}
 // CHECK: ![[GLOBAL_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 8, i32 5}
 // CHECK: ![[DYN_INIT_GLOBAL]] = !{{{.*}} ![[DYN_INIT_LOC:[0-9]+]], !"dyn_init_global", i1 true, i1 false}
 // CHECK: ![[DYN_INIT_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 9, i32 5}
+// CHECK: ![[ATTR_GLOBAL]] = !{{{.*}}, null, null, i1 false, i1 true}
 // CHECK: ![[BLACKLISTED_GLOBAL]] = !{{{.*}}, null, null, i1 false, i1 true}
 // CHECK: ![[STATIC_VAR]] = !{{{.*}} ![[STATIC_LOC:[0-9]+]], !"static_var", i1 false, i1 false}
-// CHECK: ![[STATIC_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 13, i32 14}
+// CHECK: ![[STATIC_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 14, i32 14}
 // CHECK: ![[LITERAL]] = !{{{.*}} ![[LITERAL_LOC:[0-9]+]], !"", i1 false, i1 false}
-// CHECK: ![[LITERAL_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 14, i32 25}
+// CHECK: ![[LITERAL_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 15, i32 25}
 
-// BLACKLIST-SRC: !llvm.asan.globals = !{![[EXTRA_GLOBAL:[0-9]+]], ![[GLOBAL:[0-9]+]], ![[DYN_INIT_GLOBAL:[0-9]+]], ![[BLACKLISTED_GLOBAL:[0-9]+]], ![[STATIC_VAR:[0-9]+]], ![[LITERAL:[0-9]+]]}
+// BLACKLIST-SRC: !llvm.asan.globals = !{![[EXTRA_GLOBAL:[0-9]+]], ![[GLOBAL:[0-9]+]], ![[DYN_INIT_GLOBAL:[0-9]+]], ![[ATTR_GLOBAL:[0-9]+]], ![[BLACKLISTED_GLOBAL:[0-9]+]], ![[STATIC_VAR:[0-9]+]], ![[LITERAL:[0-9]+]]}
 // BLACKLIST-SRC: ![[EXTRA_GLOBAL]] = !{{{.*}} ![[EXTRA_GLOBAL_LOC:[0-9]+]], !"extra_global", i1 false, i1 false}
 // BLACKLIST-SRC: ![[EXTRA_GLOBAL_LOC]] = !{!"{{.*}}extra-source.cpp", i32 1, i32 5}
 // BLACKLIST-SRC: ![[GLOBAL]] = !{{{.*}} null, null, i1 false, i1 true}
 // BLACKLIST-SRC: ![[DYN_INIT_GLOBAL]] = !{{{.*}} null, null, i1 true, i1 true}
+// BLACKLIST-SRC: ![[ATTR_GLOBAL]] = !{{{.*}}, null, null, i1 false, i1 true}
 // BLACKLIST-SRC: ![[BLACKLISTED_GLOBAL]] = !{{{.*}}, null, null, i1 false, i1 true}
 // BLACKLIST-SRC: ![[STATIC_VAR]] = !{{{.*}} null, null, i1 false, i1 true}
 // BLACKLIST-SRC: ![[LITERAL]] = !{{{.*}} null, null, i1 false, i1 true}
Index: lib/Sema/Se

r286380 - [Sparc] Unbreak test

2016-11-09 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Nov  9 11:02:07 2016
New Revision: 286380

URL: http://llvm.org/viewvc/llvm-project?rev=286380&view=rev
Log:
[Sparc] Unbreak test

Modified:
cfe/trunk/test/CodeGen/atomics-inlining.c

Modified: cfe/trunk/test/CodeGen/atomics-inlining.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/atomics-inlining.c?rev=286380&r1=286379&r2=286380&view=diff
==
--- cfe/trunk/test/CodeGen/atomics-inlining.c (original)
+++ cfe/trunk/test/CodeGen/atomics-inlining.c Wed Nov  9 11:02:07 2016
@@ -103,7 +103,7 @@ void test1(void) {
 // SPARCV8: call i64 @__atomic_load_8(i8* bitcast (i64* @ll1 to i8*)
 // SPARCV8: call void @__atomic_store_8(i8* bitcast (i64* @ll1 to i8*), i64
 // SPARCV9: load atomic i64, i64* @ll1 seq_cst, align 8
-// SPARCV9: store atomic i64 %7, i64* @ll1 seq_cst, align 8
+// SPARCV9: store atomic i64 {{.*}}, i64* @ll1 seq_cst, align 8
 // SPARCV8: call void @__atomic_load(i32 100, i8* getelementptr inbounds ([100 
x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], 
[100 x i8]* @a2, i32 0, i32 0)
 // SPARCV8: call void @__atomic_store(i32 100, i8* getelementptr inbounds 
([100 x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x 
i8], [100 x i8]* @a2, i32 0, i32 0)
 }


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D26459: Fix mismatched enum value name and diagnostic text.

2016-11-09 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added a reviewer: aaron.ballman.
dougk added a subscriber: cfe-commits.
Herald added a subscriber: aemerson.

ExpectedFunctionGlobalVarMethodOrProperty would previously say "functions and 
global variables" instead of "functions, methods, properties, and global 
variables"

The newly added ExpectedFunctionOrGlobalVariable says "functions and global 
variables"


https://reviews.llvm.org/D26459

Files:
  include/clang/Basic/Attr.td
  include/clang/Basic/DiagnosticSemaKinds.td
  include/clang/Sema/AttributeList.h


Index: include/clang/Sema/AttributeList.h
===
--- include/clang/Sema/AttributeList.h
+++ include/clang/Sema/AttributeList.h
@@ -885,6 +885,7 @@
   ExpectedFunction,
   ExpectedUnion,
   ExpectedVariableOrFunction,
+  ExpectedFunctionOrGlobalVar,
   ExpectedFunctionVariableOrObjCInterface,
   ExpectedFunctionOrMethod,
   ExpectedParameter,
Index: include/clang/Basic/DiagnosticSemaKinds.td
===
--- include/clang/Basic/DiagnosticSemaKinds.td
+++ include/clang/Basic/DiagnosticSemaKinds.td
@@ -2597,6 +2597,7 @@
   "functions"
   "|unions"
   "|variables and functions"
+  "|functions and global variables"
   "|functions, variables, and Objective-C interfaces"
   "|functions and methods"
   "|parameters"
@@ -2627,7 +2628,7 @@
   "|functions, variables, classes, and Objective-C interfaces"
   "|Objective-C protocols"
   "|variables with static or thread storage duration"
-  "|functions and global variables"
+  "|functions, methods, properties, and global variables"
   "|structs, unions, and typedefs"
   "|structs and typedefs"
   "|interface or protocol declarations"
Index: include/clang/Basic/Attr.td
===
--- include/clang/Basic/Attr.td
+++ include/clang/Basic/Attr.td
@@ -382,7 +382,7 @@
   let Spellings = [GCC<"alias">];
   let Args = [StringArgument<"Aliasee">];
   let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
- "ExpectedFunctionGlobalVarMethodOrProperty">;
+ "ExpectedFunctionOrGlobalVar">;
   let Documentation = [Undocumented];
 }
 
@@ -1746,7 +1746,7 @@
GCC<"no_sanitize_thread">,
GNU<"no_sanitize_memory">];
   let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
-"ExpectedFunctionGlobalVarMethodOrProperty">;
+"ExpectedFunctionOrGlobalVar">;
   let Documentation = [NoSanitizeAddressDocs, NoSanitizeThreadDocs,
NoSanitizeMemoryDocs];
   let ASTNode = 0;


Index: include/clang/Sema/AttributeList.h
===
--- include/clang/Sema/AttributeList.h
+++ include/clang/Sema/AttributeList.h
@@ -885,6 +885,7 @@
   ExpectedFunction,
   ExpectedUnion,
   ExpectedVariableOrFunction,
+  ExpectedFunctionOrGlobalVar,
   ExpectedFunctionVariableOrObjCInterface,
   ExpectedFunctionOrMethod,
   ExpectedParameter,
Index: include/clang/Basic/DiagnosticSemaKinds.td
===
--- include/clang/Basic/DiagnosticSemaKinds.td
+++ include/clang/Basic/DiagnosticSemaKinds.td
@@ -2597,6 +2597,7 @@
   "functions"
   "|unions"
   "|variables and functions"
+  "|functions and global variables"
   "|functions, variables, and Objective-C interfaces"
   "|functions and methods"
   "|parameters"
@@ -2627,7 +2628,7 @@
   "|functions, variables, classes, and Objective-C interfaces"
   "|Objective-C protocols"
   "|variables with static or thread storage duration"
-  "|functions and global variables"
+  "|functions, methods, properties, and global variables"
   "|structs, unions, and typedefs"
   "|structs and typedefs"
   "|interface or protocol declarations"
Index: include/clang/Basic/Attr.td
===
--- include/clang/Basic/Attr.td
+++ include/clang/Basic/Attr.td
@@ -382,7 +382,7 @@
   let Spellings = [GCC<"alias">];
   let Args = [StringArgument<"Aliasee">];
   let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
- "ExpectedFunctionGlobalVarMethodOrProperty">;
+ "ExpectedFunctionOrGlobalVar">;
   let Documentation = [Undocumented];
 }
 
@@ -1746,7 +1746,7 @@
GCC<"no_sanitize_thread">,
GNU<"no_sanitize_memory">];
   let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
-"ExpectedFunctionGlobalVarMethodOrProperty">;
+"ExpectedFunctionOrGlobalVar">;
   let Documentation = [NoSanitizeAddressDocs, NoSanitizeThreadDocs,
NoSanitizeMemoryDocs];
   let ASTNode = 0;
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D26459: Fix mismatched enum value name and diagnostic text.

2016-11-09 Thread Douglas Katzman via cfe-commits
dougk updated this revision to Diff 77367.
dougk added a comment.

inadvertent omission of attr-section.c test


https://reviews.llvm.org/D26459

Files:
  include/clang/Basic/Attr.td
  include/clang/Basic/DiagnosticSemaKinds.td
  include/clang/Sema/AttributeList.h
  test/Sema/attr-section.c


Index: test/Sema/attr-section.c
===
--- test/Sema/attr-section.c
+++ test/Sema/attr-section.c
@@ -10,7 +10,7 @@
 
 // PR6007
 void test() {
-  __attribute__((section("NEAR,x"))) int n1; // expected-error {{'section' 
attribute only applies to functions and global variables}}
+  __attribute__((section("NEAR,x"))) int n1; // expected-error {{'section' 
attribute only applies to functions, methods, properties, and global variables}}
   __attribute__((section("NEAR,x"))) static int n2; // ok.
 }
 
@@ -18,4 +18,4 @@
 void __attribute__((section("foo,zed"))) test2(void); // expected-note 
{{previous attribute is here}}
 void __attribute__((section("bar,zed"))) test2(void) {} // expected-warning 
{{section does not match previous declaration}}
 
-enum __attribute__((section("NEAR,x"))) e { one }; // expected-error 
{{'section' attribute only applies to functions and global variables}}
+enum __attribute__((section("NEAR,x"))) e { one }; // expected-error 
{{'section' attribute only applies to functions, methods, properties, and 
global variables}}
Index: include/clang/Sema/AttributeList.h
===
--- include/clang/Sema/AttributeList.h
+++ include/clang/Sema/AttributeList.h
@@ -885,6 +885,7 @@
   ExpectedFunction,
   ExpectedUnion,
   ExpectedVariableOrFunction,
+  ExpectedFunctionOrGlobalVar,
   ExpectedFunctionVariableOrObjCInterface,
   ExpectedFunctionOrMethod,
   ExpectedParameter,
Index: include/clang/Basic/DiagnosticSemaKinds.td
===
--- include/clang/Basic/DiagnosticSemaKinds.td
+++ include/clang/Basic/DiagnosticSemaKinds.td
@@ -2597,6 +2597,7 @@
   "functions"
   "|unions"
   "|variables and functions"
+  "|functions and global variables"
   "|functions, variables, and Objective-C interfaces"
   "|functions and methods"
   "|parameters"
@@ -2627,7 +2628,7 @@
   "|functions, variables, classes, and Objective-C interfaces"
   "|Objective-C protocols"
   "|variables with static or thread storage duration"
-  "|functions and global variables"
+  "|functions, methods, properties, and global variables"
   "|structs, unions, and typedefs"
   "|structs and typedefs"
   "|interface or protocol declarations"
Index: include/clang/Basic/Attr.td
===
--- include/clang/Basic/Attr.td
+++ include/clang/Basic/Attr.td
@@ -382,7 +382,7 @@
   let Spellings = [GCC<"alias">];
   let Args = [StringArgument<"Aliasee">];
   let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
- "ExpectedFunctionGlobalVarMethodOrProperty">;
+ "ExpectedFunctionOrGlobalVar">;
   let Documentation = [Undocumented];
 }
 
@@ -1746,7 +1746,7 @@
GCC<"no_sanitize_thread">,
GNU<"no_sanitize_memory">];
   let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
-"ExpectedFunctionGlobalVarMethodOrProperty">;
+"ExpectedFunctionOrGlobalVar">;
   let Documentation = [NoSanitizeAddressDocs, NoSanitizeThreadDocs,
NoSanitizeMemoryDocs];
   let ASTNode = 0;


Index: test/Sema/attr-section.c
===
--- test/Sema/attr-section.c
+++ test/Sema/attr-section.c
@@ -10,7 +10,7 @@
 
 // PR6007
 void test() {
-  __attribute__((section("NEAR,x"))) int n1; // expected-error {{'section' attribute only applies to functions and global variables}}
+  __attribute__((section("NEAR,x"))) int n1; // expected-error {{'section' attribute only applies to functions, methods, properties, and global variables}}
   __attribute__((section("NEAR,x"))) static int n2; // ok.
 }
 
@@ -18,4 +18,4 @@
 void __attribute__((section("foo,zed"))) test2(void); // expected-note {{previous attribute is here}}
 void __attribute__((section("bar,zed"))) test2(void) {} // expected-warning {{section does not match previous declaration}}
 
-enum __attribute__((section("NEAR,x"))) e { one }; // expected-error {{'section' attribute only applies to functions and global variables}}
+enum __attribute__((section("NEAR,x"))) e { one }; // expected-error {{'section' attribute only applies to functions, methods, properties, and global variables}}
Index: include/clang/Sema/AttributeList.h
===
--- include/clang/Sema/AttributeList.h
+++ include/clang/Sema/AttributeList.h
@@ -885,6 +885,7 @@
   ExpectedFunction,
   ExpectedUnion,
   ExpectedVariableOrFunction,
+  ExpectedFunctionOrGlobalVar,
   ExpectedFunctionVariableOrObjC

[PATCH] D26454: Implement no_sanitize_address for global vars

2016-11-09 Thread Douglas Katzman via cfe-commits
dougk added a comment.

Also note: In this change, the diagnostic messages are correct; it's the enum 
name that's bad. The diagnostic message is wrong for the 'section' attribute, 
which is fixed by https://reviews.llvm.org/D26459


https://reviews.llvm.org/D26454



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r286599 - Fix mismatched enum value name and diagnostic text.

2016-11-11 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Fri Nov 11 10:51:40 2016
New Revision: 286599

URL: http://llvm.org/viewvc/llvm-project?rev=286599&view=rev
Log:
Fix mismatched enum value name and diagnostic text.

ExpectedFunctionGlobalVarMethodOrProperty
would previously say "functions and global variables"
instead of "functions, methods, properties, and global variables"

The newly added ExpectedFunctionOrGlobalVariable
says "functions and global variables"

Differential Revision: https://reviews.llvm.org/D26459

Modified:
cfe/trunk/include/clang/Basic/Attr.td
cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
cfe/trunk/include/clang/Sema/AttributeList.h
cfe/trunk/test/Sema/attr-section.c

Modified: cfe/trunk/include/clang/Basic/Attr.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=286599&r1=286598&r2=286599&view=diff
==
--- cfe/trunk/include/clang/Basic/Attr.td (original)
+++ cfe/trunk/include/clang/Basic/Attr.td Fri Nov 11 10:51:40 2016
@@ -382,7 +382,7 @@ def Alias : Attr {
   let Spellings = [GCC<"alias">];
   let Args = [StringArgument<"Aliasee">];
   let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
- "ExpectedFunctionGlobalVarMethodOrProperty">;
+ "ExpectedFunctionOrGlobalVar">;
   let Documentation = [Undocumented];
 }
 
@@ -1746,7 +1746,7 @@ def NoSanitizeSpecific : InheritableAttr
GCC<"no_sanitize_thread">,
GNU<"no_sanitize_memory">];
   let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
-"ExpectedFunctionGlobalVarMethodOrProperty">;
+"ExpectedFunctionOrGlobalVar">;
   let Documentation = [NoSanitizeAddressDocs, NoSanitizeThreadDocs,
NoSanitizeMemoryDocs];
   let ASTNode = 0;

Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=286599&r1=286598&r2=286599&view=diff
==
--- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Fri Nov 11 10:51:40 
2016
@@ -2599,6 +2599,7 @@ def warn_attribute_wrong_decl_type : War
   "functions"
   "|unions"
   "|variables and functions"
+  "|functions and global variables"
   "|functions, variables, and Objective-C interfaces"
   "|functions and methods"
   "|parameters"
@@ -2629,7 +2630,7 @@ def warn_attribute_wrong_decl_type : War
   "|functions, variables, classes, and Objective-C interfaces"
   "|Objective-C protocols"
   "|variables with static or thread storage duration"
-  "|functions and global variables"
+  "|functions, methods, properties, and global variables"
   "|structs, unions, and typedefs"
   "|structs and typedefs"
   "|interface or protocol declarations"

Modified: cfe/trunk/include/clang/Sema/AttributeList.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/AttributeList.h?rev=286599&r1=286598&r2=286599&view=diff
==
--- cfe/trunk/include/clang/Sema/AttributeList.h (original)
+++ cfe/trunk/include/clang/Sema/AttributeList.h Fri Nov 11 10:51:40 2016
@@ -885,6 +885,7 @@ enum AttributeDeclKind {
   ExpectedFunction,
   ExpectedUnion,
   ExpectedVariableOrFunction,
+  ExpectedFunctionOrGlobalVar,
   ExpectedFunctionVariableOrObjCInterface,
   ExpectedFunctionOrMethod,
   ExpectedParameter,

Modified: cfe/trunk/test/Sema/attr-section.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/attr-section.c?rev=286599&r1=286598&r2=286599&view=diff
==
--- cfe/trunk/test/Sema/attr-section.c (original)
+++ cfe/trunk/test/Sema/attr-section.c Fri Nov 11 10:51:40 2016
@@ -10,7 +10,7 @@ int y __attribute__((section(
 
 // PR6007
 void test() {
-  __attribute__((section("NEAR,x"))) int n1; // expected-error {{'section' 
attribute only applies to functions and global variables}}
+  __attribute__((section("NEAR,x"))) int n1; // expected-error {{'section' 
attribute only applies to functions, methods, properties, and global variables}}
   __attribute__((section("NEAR,x"))) static int n2; // ok.
 }
 
@@ -18,4 +18,4 @@ void test() {
 void __attribute__((section("foo,zed"))) test2(void); // expected-note 
{{previous attribute is here}}
 void __attribute__((section("bar,zed"))) test2(void) {} // expected-warning 
{{section does not match previous declaration}}
 
-enum __attribute__((section("NEAR,x"))) e { one }; // expected-error 
{{'section' attribute only applies to functions and global variables}}
+enum __attribute__((section("NEAR,x"))) e { one }; // expected-error 
{{'section' attribute only applies to functions, methods, properties, and 
global variables}}


_

[PATCH] D26459: Fix mismatched enum value name and diagnostic text.

2016-11-11 Thread Douglas Katzman via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL286599: Fix mismatched enum value name and diagnostic text. 
(authored by dougk).

Changed prior to commit:
  https://reviews.llvm.org/D26459?vs=77367&id=77624#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D26459

Files:
  cfe/trunk/include/clang/Basic/Attr.td
  cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
  cfe/trunk/include/clang/Sema/AttributeList.h
  cfe/trunk/test/Sema/attr-section.c


Index: cfe/trunk/test/Sema/attr-section.c
===
--- cfe/trunk/test/Sema/attr-section.c
+++ cfe/trunk/test/Sema/attr-section.c
@@ -10,12 +10,12 @@
 
 // PR6007
 void test() {
-  __attribute__((section("NEAR,x"))) int n1; // expected-error {{'section' 
attribute only applies to functions and global variables}}
+  __attribute__((section("NEAR,x"))) int n1; // expected-error {{'section' 
attribute only applies to functions, methods, properties, and global variables}}
   __attribute__((section("NEAR,x"))) static int n2; // ok.
 }
 
 // pr9356
 void __attribute__((section("foo,zed"))) test2(void); // expected-note 
{{previous attribute is here}}
 void __attribute__((section("bar,zed"))) test2(void) {} // expected-warning 
{{section does not match previous declaration}}
 
-enum __attribute__((section("NEAR,x"))) e { one }; // expected-error 
{{'section' attribute only applies to functions and global variables}}
+enum __attribute__((section("NEAR,x"))) e { one }; // expected-error 
{{'section' attribute only applies to functions, methods, properties, and 
global variables}}
Index: cfe/trunk/include/clang/Sema/AttributeList.h
===
--- cfe/trunk/include/clang/Sema/AttributeList.h
+++ cfe/trunk/include/clang/Sema/AttributeList.h
@@ -885,6 +885,7 @@
   ExpectedFunction,
   ExpectedUnion,
   ExpectedVariableOrFunction,
+  ExpectedFunctionOrGlobalVar,
   ExpectedFunctionVariableOrObjCInterface,
   ExpectedFunctionOrMethod,
   ExpectedParameter,
Index: cfe/trunk/include/clang/Basic/Attr.td
===
--- cfe/trunk/include/clang/Basic/Attr.td
+++ cfe/trunk/include/clang/Basic/Attr.td
@@ -382,7 +382,7 @@
   let Spellings = [GCC<"alias">];
   let Args = [StringArgument<"Aliasee">];
   let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
- "ExpectedFunctionGlobalVarMethodOrProperty">;
+ "ExpectedFunctionOrGlobalVar">;
   let Documentation = [Undocumented];
 }
 
@@ -1746,7 +1746,7 @@
GCC<"no_sanitize_thread">,
GNU<"no_sanitize_memory">];
   let Subjects = SubjectList<[Function, GlobalVar], ErrorDiag,
-"ExpectedFunctionGlobalVarMethodOrProperty">;
+"ExpectedFunctionOrGlobalVar">;
   let Documentation = [NoSanitizeAddressDocs, NoSanitizeThreadDocs,
NoSanitizeMemoryDocs];
   let ASTNode = 0;
Index: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
===
--- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
+++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
@@ -2599,6 +2599,7 @@
   "functions"
   "|unions"
   "|variables and functions"
+  "|functions and global variables"
   "|functions, variables, and Objective-C interfaces"
   "|functions and methods"
   "|parameters"
@@ -2629,7 +2630,7 @@
   "|functions, variables, classes, and Objective-C interfaces"
   "|Objective-C protocols"
   "|variables with static or thread storage duration"
-  "|functions and global variables"
+  "|functions, methods, properties, and global variables"
   "|structs, unions, and typedefs"
   "|structs and typedefs"
   "|interface or protocol declarations"


Index: cfe/trunk/test/Sema/attr-section.c
===
--- cfe/trunk/test/Sema/attr-section.c
+++ cfe/trunk/test/Sema/attr-section.c
@@ -10,12 +10,12 @@
 
 // PR6007
 void test() {
-  __attribute__((section("NEAR,x"))) int n1; // expected-error {{'section' attribute only applies to functions and global variables}}
+  __attribute__((section("NEAR,x"))) int n1; // expected-error {{'section' attribute only applies to functions, methods, properties, and global variables}}
   __attribute__((section("NEAR,x"))) static int n2; // ok.
 }
 
 // pr9356
 void __attribute__((section("foo,zed"))) test2(void); // expected-note {{previous attribute is here}}
 void __attribute__((section("bar,zed"))) test2(void) {} // expected-warning {{section does not match previous declaration}}
 
-enum __attribute__((section("NEAR,x"))) e { one }; // expected-error {{'section' attribute only applies to functions and global variables}}
+enum __attribute__((section("NEAR,x"))) e { one }; // expected-error {{'section' attribute only applies to functions, methods, properties, and global variabl

[PATCH] D26454: Implement no_sanitize_address for global vars

2016-11-11 Thread Douglas Katzman via cfe-commits
dougk updated this revision to Diff 77658.
dougk marked 2 inline comments as done.
dougk added a comment.

changes per Aaron Ballman


https://reviews.llvm.org/D26454

Files:
  lib/CodeGen/SanitizerMetadata.cpp
  lib/Sema/SemaDeclAttr.cpp
  test/CodeGen/asan-globals.cpp
  test/SemaCXX/attr-no-sanitize-address.cpp

Index: test/SemaCXX/attr-no-sanitize-address.cpp
===
--- test/SemaCXX/attr-no-sanitize-address.cpp
+++ test/SemaCXX/attr-no-sanitize-address.cpp
@@ -16,8 +16,11 @@
 int noanal_testfn(int y) NO_SANITIZE_ADDRESS;
 
 int noanal_testfn(int y) {
+  // Test the deprecated spelling of no_sanitize("address")
   int x NO_SANITIZE_ADDRESS = y; // \
-// expected-error {{'no_sanitize_address' attribute only applies to functions}}
+// expected-error {{'no_sanitize_address' attribute only applies to functions and global variables}}
+  int x2 __attribute__((no_sanitize("address"))) = y; // \
+// expected-error {{'no_sanitize' attribute only applies to functions, methods, and global variables}}
   return x;
 }
 
Index: test/CodeGen/asan-globals.cpp
===
--- test/CodeGen/asan-globals.cpp
+++ test/CodeGen/asan-globals.cpp
@@ -7,7 +7,8 @@
 
 int global;
 int dyn_init_global = global;
-int __attribute__((no_sanitize("address"))) attributed_global;
+int __attribute__((no_sanitize("address"))) attributed_global1;
+int __attribute__((no_sanitize_address)) attributed_global2;
 int blacklisted_global;
 
 void func() {
@@ -15,26 +16,28 @@
   const char *literal = "Hello, world!";
 }
 
-// CHECK: !llvm.asan.globals = !{![[EXTRA_GLOBAL:[0-9]+]], ![[GLOBAL:[0-9]+]], ![[DYN_INIT_GLOBAL:[0-9]+]], ![[ATTR_GLOBAL:[0-9]+]], ![[BLACKLISTED_GLOBAL:[0-9]+]], ![[STATIC_VAR:[0-9]+]], ![[LITERAL:[0-9]+]]}
+// CHECK: !llvm.asan.globals = !{![[EXTRA_GLOBAL:[0-9]+]], ![[GLOBAL:[0-9]+]], ![[DYN_INIT_GLOBAL:[0-9]+]], ![[ATTR_GLOBAL1:[0-9]+]], ![[ATTR_GLOBAL2:[0-9]+]], ![[BLACKLISTED_GLOBAL:[0-9]+]], ![[STATIC_VAR:[0-9]+]], ![[LITERAL:[0-9]+]]}
 // CHECK: ![[EXTRA_GLOBAL]] = !{{{.*}} ![[EXTRA_GLOBAL_LOC:[0-9]+]], !"extra_global", i1 false, i1 false}
 // CHECK: ![[EXTRA_GLOBAL_LOC]] = !{!"{{.*}}extra-source.cpp", i32 1, i32 5}
 // CHECK: ![[GLOBAL]] = !{{{.*}} ![[GLOBAL_LOC:[0-9]+]], !"global", i1 false, i1 false}
 // CHECK: ![[GLOBAL_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 8, i32 5}
 // CHECK: ![[DYN_INIT_GLOBAL]] = !{{{.*}} ![[DYN_INIT_LOC:[0-9]+]], !"dyn_init_global", i1 true, i1 false}
 // CHECK: ![[DYN_INIT_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 9, i32 5}
-// CHECK: ![[ATTR_GLOBAL]] = !{{{.*}}, null, null, i1 false, i1 true}
+// CHECK: ![[ATTR_GLOBAL1]] = !{{{.*}}, null, null, i1 false, i1 true}
+// CHECK: ![[ATTR_GLOBAL2]] = !{{{.*}}, null, null, i1 false, i1 true}
 // CHECK: ![[BLACKLISTED_GLOBAL]] = !{{{.*}}, null, null, i1 false, i1 true}
 // CHECK: ![[STATIC_VAR]] = !{{{.*}} ![[STATIC_LOC:[0-9]+]], !"static_var", i1 false, i1 false}
-// CHECK: ![[STATIC_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 14, i32 14}
+// CHECK: ![[STATIC_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 15, i32 14}
 // CHECK: ![[LITERAL]] = !{{{.*}} ![[LITERAL_LOC:[0-9]+]], !"", i1 false, i1 false}
-// CHECK: ![[LITERAL_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 15, i32 25}
+// CHECK: ![[LITERAL_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 16, i32 25}
 
-// BLACKLIST-SRC: !llvm.asan.globals = !{![[EXTRA_GLOBAL:[0-9]+]], ![[GLOBAL:[0-9]+]], ![[DYN_INIT_GLOBAL:[0-9]+]], ![[ATTR_GLOBAL:[0-9]+]], ![[BLACKLISTED_GLOBAL:[0-9]+]], ![[STATIC_VAR:[0-9]+]], ![[LITERAL:[0-9]+]]}
+// BLACKLIST-SRC: !llvm.asan.globals = !{![[EXTRA_GLOBAL:[0-9]+]], ![[GLOBAL:[0-9]+]], ![[DYN_INIT_GLOBAL:[0-9]+]], ![[ATTR_GLOBAL1:[0-9]+]], ![[ATTR_GLOBAL2:[0-9]+]], ![[BLACKLISTED_GLOBAL:[0-9]+]], ![[STATIC_VAR:[0-9]+]], ![[LITERAL:[0-9]+]]}
 // BLACKLIST-SRC: ![[EXTRA_GLOBAL]] = !{{{.*}} ![[EXTRA_GLOBAL_LOC:[0-9]+]], !"extra_global", i1 false, i1 false}
 // BLACKLIST-SRC: ![[EXTRA_GLOBAL_LOC]] = !{!"{{.*}}extra-source.cpp", i32 1, i32 5}
 // BLACKLIST-SRC: ![[GLOBAL]] = !{{{.*}} null, null, i1 false, i1 true}
 // BLACKLIST-SRC: ![[DYN_INIT_GLOBAL]] = !{{{.*}} null, null, i1 true, i1 true}
-// BLACKLIST-SRC: ![[ATTR_GLOBAL]] = !{{{.*}}, null, null, i1 false, i1 true}
+// BLACKLIST-SRC: ![[ATTR_GLOBAL1]] = !{{{.*}}, null, null, i1 false, i1 true}
+// BLACKLIST-SRC: ![[ATTR_GLOBAL2]] = !{{{.*}}, null, null, i1 false, i1 true}
 // BLACKLIST-SRC: ![[BLACKLISTED_GLOBAL]] = !{{{.*}}, null, null, i1 false, i1 true}
 // BLACKLIST-SRC: ![[STATIC_VAR]] = !{{{.*}} null, null, i1 false, i1 true}
 // BLACKLIST-SRC: ![[LITERAL]] = !{{{.*}} null, null, i1 false, i1 true}
Index: lib/Sema/SemaDeclAttr.cpp
===
--- lib/Sema/SemaDeclAttr.cpp
+++ lib/Sema/SemaDeclAttr.cpp
@@ -5319,9 +5319,9 @@
 !(Attr.hasScope() && Attr.getScopeName()->isStr("gnu")))
   S.Diag(Attr.getLoc(), diag::ext_cxx14_attr) << Attr.getName();

[PATCH] D26454: Implement no_sanitize_address for global vars

2016-11-14 Thread Douglas Katzman via cfe-commits
dougk updated this revision to Diff 77815.
dougk marked an inline comment as done.
dougk added a comment.

add a sentence about the change in AddressSanitizer.rst


https://reviews.llvm.org/D26454

Files:
  docs/AddressSanitizer.rst
  lib/CodeGen/SanitizerMetadata.cpp
  lib/Sema/SemaDeclAttr.cpp
  test/CodeGen/asan-globals.cpp
  test/SemaCXX/attr-no-sanitize-address.cpp

Index: test/SemaCXX/attr-no-sanitize-address.cpp
===
--- test/SemaCXX/attr-no-sanitize-address.cpp
+++ test/SemaCXX/attr-no-sanitize-address.cpp
@@ -16,8 +16,11 @@
 int noanal_testfn(int y) NO_SANITIZE_ADDRESS;
 
 int noanal_testfn(int y) {
+  // Test the deprecated spelling of no_sanitize("address")
   int x NO_SANITIZE_ADDRESS = y; // \
-// expected-error {{'no_sanitize_address' attribute only applies to functions}}
+// expected-error {{'no_sanitize_address' attribute only applies to functions and global variables}}
+  int x2 __attribute__((no_sanitize("address"))) = y; // \
+// expected-error {{'no_sanitize' attribute only applies to functions, methods, and global variables}}
   return x;
 }
 
Index: test/CodeGen/asan-globals.cpp
===
--- test/CodeGen/asan-globals.cpp
+++ test/CodeGen/asan-globals.cpp
@@ -7,7 +7,8 @@
 
 int global;
 int dyn_init_global = global;
-int __attribute__((no_sanitize("address"))) attributed_global;
+int __attribute__((no_sanitize("address"))) attributed_global1;
+int __attribute__((no_sanitize_address)) attributed_global2;
 int blacklisted_global;
 
 void func() {
@@ -15,26 +16,28 @@
   const char *literal = "Hello, world!";
 }
 
-// CHECK: !llvm.asan.globals = !{![[EXTRA_GLOBAL:[0-9]+]], ![[GLOBAL:[0-9]+]], ![[DYN_INIT_GLOBAL:[0-9]+]], ![[ATTR_GLOBAL:[0-9]+]], ![[BLACKLISTED_GLOBAL:[0-9]+]], ![[STATIC_VAR:[0-9]+]], ![[LITERAL:[0-9]+]]}
+// CHECK: !llvm.asan.globals = !{![[EXTRA_GLOBAL:[0-9]+]], ![[GLOBAL:[0-9]+]], ![[DYN_INIT_GLOBAL:[0-9]+]], ![[ATTR_GLOBAL1:[0-9]+]], ![[ATTR_GLOBAL2:[0-9]+]], ![[BLACKLISTED_GLOBAL:[0-9]+]], ![[STATIC_VAR:[0-9]+]], ![[LITERAL:[0-9]+]]}
 // CHECK: ![[EXTRA_GLOBAL]] = !{{{.*}} ![[EXTRA_GLOBAL_LOC:[0-9]+]], !"extra_global", i1 false, i1 false}
 // CHECK: ![[EXTRA_GLOBAL_LOC]] = !{!"{{.*}}extra-source.cpp", i32 1, i32 5}
 // CHECK: ![[GLOBAL]] = !{{{.*}} ![[GLOBAL_LOC:[0-9]+]], !"global", i1 false, i1 false}
 // CHECK: ![[GLOBAL_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 8, i32 5}
 // CHECK: ![[DYN_INIT_GLOBAL]] = !{{{.*}} ![[DYN_INIT_LOC:[0-9]+]], !"dyn_init_global", i1 true, i1 false}
 // CHECK: ![[DYN_INIT_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 9, i32 5}
-// CHECK: ![[ATTR_GLOBAL]] = !{{{.*}}, null, null, i1 false, i1 true}
+// CHECK: ![[ATTR_GLOBAL1]] = !{{{.*}}, null, null, i1 false, i1 true}
+// CHECK: ![[ATTR_GLOBAL2]] = !{{{.*}}, null, null, i1 false, i1 true}
 // CHECK: ![[BLACKLISTED_GLOBAL]] = !{{{.*}}, null, null, i1 false, i1 true}
 // CHECK: ![[STATIC_VAR]] = !{{{.*}} ![[STATIC_LOC:[0-9]+]], !"static_var", i1 false, i1 false}
-// CHECK: ![[STATIC_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 14, i32 14}
+// CHECK: ![[STATIC_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 15, i32 14}
 // CHECK: ![[LITERAL]] = !{{{.*}} ![[LITERAL_LOC:[0-9]+]], !"", i1 false, i1 false}
-// CHECK: ![[LITERAL_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 15, i32 25}
+// CHECK: ![[LITERAL_LOC]] = !{!"{{.*}}asan-globals.cpp", i32 16, i32 25}
 
-// BLACKLIST-SRC: !llvm.asan.globals = !{![[EXTRA_GLOBAL:[0-9]+]], ![[GLOBAL:[0-9]+]], ![[DYN_INIT_GLOBAL:[0-9]+]], ![[ATTR_GLOBAL:[0-9]+]], ![[BLACKLISTED_GLOBAL:[0-9]+]], ![[STATIC_VAR:[0-9]+]], ![[LITERAL:[0-9]+]]}
+// BLACKLIST-SRC: !llvm.asan.globals = !{![[EXTRA_GLOBAL:[0-9]+]], ![[GLOBAL:[0-9]+]], ![[DYN_INIT_GLOBAL:[0-9]+]], ![[ATTR_GLOBAL1:[0-9]+]], ![[ATTR_GLOBAL2:[0-9]+]], ![[BLACKLISTED_GLOBAL:[0-9]+]], ![[STATIC_VAR:[0-9]+]], ![[LITERAL:[0-9]+]]}
 // BLACKLIST-SRC: ![[EXTRA_GLOBAL]] = !{{{.*}} ![[EXTRA_GLOBAL_LOC:[0-9]+]], !"extra_global", i1 false, i1 false}
 // BLACKLIST-SRC: ![[EXTRA_GLOBAL_LOC]] = !{!"{{.*}}extra-source.cpp", i32 1, i32 5}
 // BLACKLIST-SRC: ![[GLOBAL]] = !{{{.*}} null, null, i1 false, i1 true}
 // BLACKLIST-SRC: ![[DYN_INIT_GLOBAL]] = !{{{.*}} null, null, i1 true, i1 true}
-// BLACKLIST-SRC: ![[ATTR_GLOBAL]] = !{{{.*}}, null, null, i1 false, i1 true}
+// BLACKLIST-SRC: ![[ATTR_GLOBAL1]] = !{{{.*}}, null, null, i1 false, i1 true}
+// BLACKLIST-SRC: ![[ATTR_GLOBAL2]] = !{{{.*}}, null, null, i1 false, i1 true}
 // BLACKLIST-SRC: ![[BLACKLISTED_GLOBAL]] = !{{{.*}}, null, null, i1 false, i1 true}
 // BLACKLIST-SRC: ![[STATIC_VAR]] = !{{{.*}} null, null, i1 false, i1 true}
 // BLACKLIST-SRC: ![[LITERAL]] = !{{{.*}} null, null, i1 false, i1 true}
Index: lib/Sema/SemaDeclAttr.cpp
===
--- lib/Sema/SemaDeclAttr.cpp
+++ lib/Sema/SemaDeclAttr.cpp
@@ -5319,9 +5319,9 @@
 !(Attr.hasScope() && Attr.getScopeName()->isStr("gnu")))
   S.Di

r247052 - [Shave]: add a -MT option to moviCompile if there wasn't one

2015-09-08 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Tue Sep  8 14:29:55 2015
New Revision: 247052

URL: http://llvm.org/viewvc/llvm-project?rev=247052&view=rev
Log:
[Shave]: add a -MT option to moviCompile if there wasn't one

Differential Revision: http://reviews.llvm.org/D12622

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/shave-toolchain.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=247052&r1=247051&r2=247052&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue Sep  8 14:29:55 2015
@@ -9669,15 +9669,27 @@ void tools::SHAVE::Compiler::ConstructJo
   // Append all -I, -iquote, -isystem paths, defines/undefines,
   // 'f' flags, optimize flags, and warning options.
   // These are spelled the same way in clang and moviCompile.
-  Args.AddAllArgs(CmdArgs,
-  {options::OPT_I_Group, options::OPT_clang_i_Group,
-   options::OPT_D, options::OPT_U,
-   options::OPT_f_Group,
-   options::OPT_f_clang_Group,
-   options::OPT_g_Group,
-   options::OPT_M_Group,
-   options::OPT_O_Group,
-   options::OPT_W_Group});
+  Args.AddAllArgs(CmdArgs, {options::OPT_I_Group, options::OPT_clang_i_Group,
+options::OPT_D, options::OPT_U,
+options::OPT_f_Group, options::OPT_f_clang_Group,
+options::OPT_g_Group, options::OPT_M_Group,
+options::OPT_O_Group, options::OPT_W_Group});
+
+  // If we're producing a dependency file, and assembly is the final action,
+  // then the name of the target in the dependency file should be the '.o'
+  // file, not the '.s' file produced by this step. For example, instead of
+  //  /tmp/mumble.s: mumble.c .../someheader.h
+  // the filename on the lefthand side should be "mumble.o"
+  if (Args.getLastArg(options::OPT_MF) && !Args.getLastArg(options::OPT_MT) &&
+  C.getActions().size() == 1 &&
+  C.getActions()[0]->getKind() == Action::AssembleJobClass) {
+Arg *A = Args.getLastArg(options::OPT_o);
+if (A) {
+  CmdArgs.push_back("-MT");
+  CmdArgs.push_back(Args.MakeArgString(A->getValue()));
+}
+  }
+
   CmdArgs.push_back("-fno-exceptions"); // Always do this even if unspecified.
 
   CmdArgs.push_back(II.getFilename());

Modified: cfe/trunk/test/Driver/shave-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/shave-toolchain.c?rev=247052&r1=247051&r2=247052&view=diff
==
--- cfe/trunk/test/Driver/shave-toolchain.c (original)
+++ cfe/trunk/test/Driver/shave-toolchain.c Tue Sep  8 14:29:55 2015
@@ -26,3 +26,7 @@
 // RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
 // PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" 
"-fno-inline-functions-called-once"
 // PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"
+
+// RUN: %clang -target shave -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=MDMF
+// MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D12622: [Shave]: add a -MT option to moviCompile if there wasn't one

2015-09-08 Thread Douglas Katzman via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL247052: [Shave]: add a -MT option to moviCompile if there 
wasn't one (authored by dougk).

Changed prior to commit:
  http://reviews.llvm.org/D12622?vs=34006&id=34239#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D12622

Files:
  cfe/trunk/lib/Driver/Tools.cpp
  cfe/trunk/test/Driver/shave-toolchain.c

Index: cfe/trunk/test/Driver/shave-toolchain.c
===
--- cfe/trunk/test/Driver/shave-toolchain.c
+++ cfe/trunk/test/Driver/shave-toolchain.c
@@ -26,3 +26,7 @@
 // RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
 // PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" 
"-fno-inline-functions-called-once"
 // PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"
+
+// RUN: %clang -target shave -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=MDMF
+// MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
Index: cfe/trunk/lib/Driver/Tools.cpp
===
--- cfe/trunk/lib/Driver/Tools.cpp
+++ cfe/trunk/lib/Driver/Tools.cpp
@@ -9669,15 +9669,27 @@
   // Append all -I, -iquote, -isystem paths, defines/undefines,
   // 'f' flags, optimize flags, and warning options.
   // These are spelled the same way in clang and moviCompile.
-  Args.AddAllArgs(CmdArgs,
-  {options::OPT_I_Group, options::OPT_clang_i_Group,
-   options::OPT_D, options::OPT_U,
-   options::OPT_f_Group,
-   options::OPT_f_clang_Group,
-   options::OPT_g_Group,
-   options::OPT_M_Group,
-   options::OPT_O_Group,
-   options::OPT_W_Group});
+  Args.AddAllArgs(CmdArgs, {options::OPT_I_Group, options::OPT_clang_i_Group,
+options::OPT_D, options::OPT_U,
+options::OPT_f_Group, options::OPT_f_clang_Group,
+options::OPT_g_Group, options::OPT_M_Group,
+options::OPT_O_Group, options::OPT_W_Group});
+
+  // If we're producing a dependency file, and assembly is the final action,
+  // then the name of the target in the dependency file should be the '.o'
+  // file, not the '.s' file produced by this step. For example, instead of
+  //  /tmp/mumble.s: mumble.c .../someheader.h
+  // the filename on the lefthand side should be "mumble.o"
+  if (Args.getLastArg(options::OPT_MF) && !Args.getLastArg(options::OPT_MT) &&
+  C.getActions().size() == 1 &&
+  C.getActions()[0]->getKind() == Action::AssembleJobClass) {
+Arg *A = Args.getLastArg(options::OPT_o);
+if (A) {
+  CmdArgs.push_back("-MT");
+  CmdArgs.push_back(Args.MakeArgString(A->getValue()));
+}
+  }
+
   CmdArgs.push_back("-fno-exceptions"); // Always do this even if unspecified.
 
   CmdArgs.push_back(II.getFilename());


Index: cfe/trunk/test/Driver/shave-toolchain.c
===
--- cfe/trunk/test/Driver/shave-toolchain.c
+++ cfe/trunk/test/Driver/shave-toolchain.c
@@ -26,3 +26,7 @@
 // RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
 // PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" "-fno-inline-functions-called-once"
 // PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"
+
+// RUN: %clang -target shave -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=MDMF
+// MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
Index: cfe/trunk/lib/Driver/Tools.cpp
===
--- cfe/trunk/lib/Driver/Tools.cpp
+++ cfe/trunk/lib/Driver/Tools.cpp
@@ -9669,15 +9669,27 @@
   // Append all -I, -iquote, -isystem paths, defines/undefines,
   // 'f' flags, optimize flags, and warning options.
   // These are spelled the same way in clang and moviCompile.
-  Args.AddAllArgs(CmdArgs,
-  {options::OPT_I_Group, options::OPT_clang_i_Group,
-   options::OPT_D, options::OPT_U,
-   options::OPT_f_Group,
-   options::OPT_f_clang_Group,
-   options::OPT_g_Group,
-   options::OPT_M_Group,
-   options::OPT_O_Group,
-   options::OPT_W_Group});
+  Args.AddAllArgs(CmdArgs, {options::OPT_I_Group, options::OPT_clang_i_Group,
+options::OPT_D, options::OPT_U,
+options::OPT_f_Group, options::OPT_f_clang_Group,
+options::OPT_g_Group, options::OPT_M_Group,
+options::OPT_O_Group, options::OPT_W_Group});
+
+  // If we're producing a dependency file, and assembly is the final action,
+  // then the name of the target in the dependency file should be the '.o'
+  // file, not the '.s' file produced by this 

r247474 - [Shave]: pass -isystem dirs and "-Wa," args to moviAsm

2015-09-11 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Fri Sep 11 16:13:46 2015
New Revision: 247474

URL: http://llvm.org/viewvc/llvm-project?rev=247474&view=rev
Log:
[Shave]: pass -isystem dirs and "-Wa," args to moviAsm

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/shave-toolchain.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=247474&r1=247473&r2=247474&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Fri Sep 11 16:13:46 2015
@@ -9716,13 +9716,14 @@ void tools::SHAVE::Assembler::ConstructJ
   assert(Output.getType() == types::TY_Object);
 
   CmdArgs.push_back("-no6thSlotCompression");
-  CmdArgs.push_back("-cv:myriad2"); // Chip Version ?
+  CmdArgs.push_back("-cv:myriad2"); // Chip Version
   CmdArgs.push_back("-noSPrefixing");
   CmdArgs.push_back("-a"); // Mystery option.
-  for (auto Arg : Args.filtered(options::OPT_I)) {
-Arg->claim();
+  Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, 
options::OPT_Xassembler);
+  for (const Arg *A : Args.filtered(options::OPT_I, options::OPT_isystem)) {
+A->claim();
 CmdArgs.push_back(
-Args.MakeArgString(std::string("-i:") + Arg->getValue(0)));
+Args.MakeArgString(std::string("-i:") + A->getValue(0)));
   }
   CmdArgs.push_back("-elf"); // Output format.
   CmdArgs.push_back(II.getFilename());

Modified: cfe/trunk/test/Driver/shave-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/shave-toolchain.c?rev=247474&r1=247473&r2=247474&view=diff
==
--- cfe/trunk/test/Driver/shave-toolchain.c (original)
+++ cfe/trunk/test/Driver/shave-toolchain.c Fri Sep 11 16:13:46 2015
@@ -8,10 +8,11 @@
 // As such, we test only for a trailing quote in its rendering.
 // The same goes for "moviAsm".
 
-// RUN: %clang -target shave -c -### %s -Icommon 2>&1 \
+// RUN: %clang -target shave -c -### %s -isystem somewhere -Icommon 
-Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
-// MOVICOMPILE: moviCompile" "-DMYRIAD2" "-mcpu=myriad2" "-S" "-I" "common"
-// MOVICOMPILE: moviAsm" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" 
"-a" "-i:common" "-elf"
+// MOVICOMPILE: moviCompile" "-DMYRIAD2" "-mcpu=myriad2" "-S" "-isystem" 
"somewhere" "-I" "common"
+// MOVICOMPILE: moviAsm" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" 
"-a"
+// MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
 
 // RUN: %clang -target shave -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=DEFINES


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D12541: [Sparc][Shave]: Empower the toolchain formerly known as SHAVE to do more.

2015-09-14 Thread Douglas Katzman via cfe-commits
dougk updated the summary for this revision.
dougk updated this revision to Diff 34682.
dougk added a comment.

Changes per review - but only a minimally correct change to finding the 
libraries. Using multilibs remains as a future task.
Also renamed SHAVE::Linker to Myriad::Linker.


http://reviews.llvm.org/D12541

Files:
  lib/Driver/Driver.cpp
  lib/Driver/ToolChains.cpp
  lib/Driver/ToolChains.h
  lib/Driver/Tools.cpp
  lib/Driver/Tools.h
  test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtbegin.o
  test/Driver/shave-toolchain.c

Index: test/Driver/shave-toolchain.c
===
--- test/Driver/shave-toolchain.c
+++ test/Driver/shave-toolchain.c
@@ -1,3 +1,9 @@
+// RUN: %clang -no-canonical-prefixes -### -target sparc-myriad-rtems-elf %s \
+// RUN: -B %S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s -check-prefix=LINK_WITH_RTEMS
+// LINK_WITH_RTEMS: crti.o
+// LINK_WITH_RTEMS: crtbegin.o
+// LINK_WITH_RTEMS: -lrtems
+
 // Ensure that '-target shave' picks a different compiler.
 // Also check that '-I' is turned into '-i:' for the assembler.
 
@@ -8,26 +14,26 @@
 // As such, we test only for a trailing quote in its rendering.
 // The same goes for "moviAsm".
 
-// RUN: %clang -target shave -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
 // MOVICOMPILE: moviCompile" "-DMYRIAD2" "-mcpu=myriad2" "-S" "-isystem" "somewhere" "-I" "common"
 // MOVICOMPILE: moviAsm" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" "-a"
 // MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
 
-// RUN: %clang -target shave -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=DEFINES
 // DEFINES: "-D" "EFINE_ME" "-U" "NDEFINE_ME"
 
-// RUN: %clang -target shave -c -### %s -Icommon -iquote quotepath -isystem syspath 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -Icommon -iquote quotepath -isystem syspath 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=INCLUDES
 // INCLUDES: "-iquote" "quotepath" "-isystem" "syspath"
 
-// RUN: %clang -target shave -c -### %s -g -fno-inline-functions \
+// RUN: %clang -target shave-myriad -c -### %s -g -fno-inline-functions \
 // RUN: -fno-inline-functions-called-once -Os -Wall -MF dep.d \
 // RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
 // PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" "-fno-inline-functions-called-once"
 // PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"
 
-// RUN: %clang -target shave -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
+// RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MDMF
 // MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
Index: lib/Driver/Tools.h
===
--- lib/Driver/Tools.h
+++ lib/Driver/Tools.h
@@ -794,6 +794,23 @@
 };
 } // end namespace SHAVE
 
+/// The Myriad toolchain uses tools that are in two different namespaces.
+/// The Compiler and Linker as defined above are in the SHAVE namespace,
+/// whereas the linker, which accepts code for a mixture of Sparc and SHAVE,
+/// is in the Myriad namespace.
+namespace Myriad {
+class LLVM_LIBRARY_VISIBILITY Linker : public GnuTool {
+public:
+  Linker(const ToolChain &TC) : GnuTool("shave::Linker", "ld", TC) {}
+  bool hasIntegratedCPP() const override { return false; }
+  bool isLinkJob() const override { return true; }
+  void ConstructJob(Compilation &C, const JobAction &JA,
+const InputInfo &Output, const InputInfoList &Inputs,
+const llvm::opt::ArgList &TCArgs,
+const char *LinkingOutput) const override;
+};
+} // end namespace Myriad
+
 } // end namespace tools
 } // end namespace driver
 } // end namespace clang
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -9735,3 +9735,78 @@
   C.addCommand(llvm::make_unique(JA, *this, Args.MakeArgString(Exec),
   CmdArgs, Inputs));
 }
+
+void tools::Myriad::Linker::ConstructJob(Compilation &C, const JobAction &JA,
+ const InputInfo &Output,
+ const InputInfoList &Inputs,
+ const ArgList &Args,
+ const char *LinkingOutput) const {
+  const auto &TC =
+  static_cast(getToolChain());
+  const llvm::Triple &T = TC.getTriple();
+  ArgStringList CmdArgs;
+  bool UseStartfiles = !Args.hasArg(options::OPT_nostartfiles);
+
+  std::string StartFilesDir, BuiltinLibDir;
+  TC.getCompilerSupportDir(Start

[PATCH] D12845: [Sparc]: Myriad toolchain should assume -gdwarf-3 in cc1 invocation

2015-09-14 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added reviewers: jyknight, chandlerc.
dougk added a subscriber: cfe-commits.
Herald added a subscriber: jyknight.

Avoid generating spurious complaints from moviDebug.

Incidental change: rename 'test/Driver/shave-toolchain.c' to 
'myriad-toolchain.c'

http://reviews.llvm.org/D12845

Files:
  lib/Driver/ToolChains.cpp
  lib/Driver/ToolChains.h
  test/Driver/myriad-toolchain.c
  test/Driver/shave-toolchain.c

Index: test/Driver/shave-toolchain.c
===
--- test/Driver/shave-toolchain.c
+++ /dev/null
@@ -1,39 +0,0 @@
-// RUN: %clang -no-canonical-prefixes -### -target sparc-myriad-rtems-elf %s \
-// RUN: -B %S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s -check-prefix=LINK_WITH_RTEMS
-// LINK_WITH_RTEMS: crti.o
-// LINK_WITH_RTEMS: crtbegin.o
-// LINK_WITH_RTEMS: -lrtems
-
-// Ensure that '-target shave' picks a different compiler.
-// Also check that '-I' is turned into '-i:' for the assembler.
-
-// Note that since we don't know where movi tools are installed,
-// the driver may or may not find a full path to them.
-// That is, the 0th argument will be "/path/to/my/moviCompile"
-// or just "moviCompile" depending on whether moviCompile is found.
-// As such, we test only for a trailing quote in its rendering.
-// The same goes for "moviAsm".
-
-// RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
-// MOVICOMPILE: moviCompile" "-DMYRIAD2" "-mcpu=myriad2" "-S" "-isystem" "somewhere" "-I" "common"
-// MOVICOMPILE: moviAsm" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" "-a"
-// MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
-
-// RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=DEFINES
-// DEFINES: "-D" "EFINE_ME" "-U" "NDEFINE_ME"
-
-// RUN: %clang -target shave-myriad -c -### %s -Icommon -iquote quotepath -isystem syspath 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=INCLUDES
-// INCLUDES: "-iquote" "quotepath" "-isystem" "syspath"
-
-// RUN: %clang -target shave-myriad -c -### %s -g -fno-inline-functions \
-// RUN: -fno-inline-functions-called-once -Os -Wall -MF dep.d \
-// RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
-// PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" "-fno-inline-functions-called-once"
-// PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"
-
-// RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=MDMF
-// MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
Index: test/Driver/myriad-toolchain.c
===
--- /dev/null
+++ test/Driver/myriad-toolchain.c
@@ -0,0 +1,43 @@
+// RUN: %clang -no-canonical-prefixes -### -target sparc-myriad -c %s 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=GDWARF3
+// GDWARF3: "-gdwarf-3"
+
+// RUN: %clang -no-canonical-prefixes -### -target sparc-myriad-rtems-elf %s \
+// RUN: -B %S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s -check-prefix=LINK_WITH_RTEMS
+// LINK_WITH_RTEMS: crti.o
+// LINK_WITH_RTEMS: crtbegin.o
+// LINK_WITH_RTEMS: -lrtems
+
+// Ensure that '-target shave' picks a different compiler.
+// Also check that '-I' is turned into '-i:' for the assembler.
+
+// Note that since we don't know where movi tools are installed,
+// the driver may or may not find a full path to them.
+// That is, the 0th argument will be "/path/to/my/moviCompile"
+// or just "moviCompile" depending on whether moviCompile is found.
+// As such, we test only for a trailing quote in its rendering.
+// The same goes for "moviAsm".
+
+// RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
+// MOVICOMPILE: moviCompile" "-DMYRIAD2" "-mcpu=myriad2" "-S" "-isystem" "somewhere" "-I" "common"
+// MOVICOMPILE: moviAsm" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" "-a"
+// MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
+
+// RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=DEFINES
+// DEFINES: "-D" "EFINE_ME" "-U" "NDEFINE_ME"
+
+// RUN: %clang -target shave-myriad -c -### %s -Icommon -iquote quotepath -isystem syspath 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=INCLUDES
+// INCLUDES: "-iquote" "quotepath" "-isystem" "syspath"
+
+// RUN: %clang -target shave-myriad -c -### %s -g -fno-inline-functions \
+// RUN: -fno-inline-functions-called-once -Os -Wall -MF dep.d \
+// RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
+// PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" "-fno-inline-functions-called-once"
+// PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"
+
+// RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
+//

Re: [PATCH] D12845: [Sparc]: Myriad toolchain should assume -gdwarf-3 in cc1 invocation

2015-09-14 Thread Douglas Katzman via cfe-commits
dougk added a comment.

This patch is wrong. Fixes are pending.


http://reviews.llvm.org/D12845



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r247611 - Driver should forward at most one gdwarf-N flag to cc1as.

2015-09-14 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Mon Sep 14 15:31:28 2015
New Revision: 247611

URL: http://llvm.org/viewvc/llvm-project?rev=247611&view=rev
Log:
Driver should forward at most one gdwarf-N flag to cc1as.

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/integrated-as.s

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=247611&r1=247610&r2=247611&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Mon Sep 14 15:31:28 2015
@@ -3769,14 +3769,12 @@ void Clang::ConstructJob(Compilation &C,
   Triple.getOS() == llvm::Triple::Solaris)
 CmdArgs.push_back("-gdwarf-2");
   SplitDwarfArg = nullptr;
-} else if (A->getOption().matches(options::OPT_gdwarf_2))
-  CmdArgs.push_back("-gdwarf-2");
-else if (A->getOption().matches(options::OPT_gdwarf_3))
-  CmdArgs.push_back("-gdwarf-3");
-else if (A->getOption().matches(options::OPT_gdwarf_4))
-  CmdArgs.push_back("-gdwarf-4");
-else if (!A->getOption().matches(options::OPT_g0) &&
- !A->getOption().matches(options::OPT_ggdb0)) {
+} else if (A->getOption().matches(options::OPT_gdwarf_2) ||
+   A->getOption().matches(options::OPT_gdwarf_3) ||
+   A->getOption().matches(options::OPT_gdwarf_4)) {
+  A->render(Args, CmdArgs);
+} else if (!A->getOption().matches(options::OPT_g0) &&
+   !A->getOption().matches(options::OPT_ggdb0)) {
   // Default is dwarf-2 for Darwin, OpenBSD, FreeBSD and Solaris.
   const llvm::Triple &Triple = getToolChain().getTriple();
   if (Triple.isOSDarwin() || Triple.getOS() == llvm::Triple::OpenBSD ||
@@ -5550,12 +5548,9 @@ void ClangAs::ConstructJob(Compilation &
   if (!A->getOption().matches(options::OPT_g0))
 CmdArgs.push_back("-g");
 
-if (Args.hasArg(options::OPT_gdwarf_2))
-  CmdArgs.push_back("-gdwarf-2");
-if (Args.hasArg(options::OPT_gdwarf_3))
-  CmdArgs.push_back("-gdwarf-3");
-if (Args.hasArg(options::OPT_gdwarf_4))
-  CmdArgs.push_back("-gdwarf-4");
+if (Arg *A = Args.getLastArg(options::OPT_gdwarf_2, options::OPT_gdwarf_3,
+ options::OPT_gdwarf_4))
+  A->render(Args, CmdArgs);
 
 // Add the -fdebug-compilation-dir flag if needed.
 addDebugCompDirArg(Args, CmdArgs);

Modified: cfe/trunk/test/Driver/integrated-as.s
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/integrated-as.s?rev=247611&r1=247610&r2=247611&view=diff
==
--- cfe/trunk/test/Driver/integrated-as.s (original)
+++ cfe/trunk/test/Driver/integrated-as.s Mon Sep 14 15:31:28 2015
@@ -26,8 +26,9 @@
 // XA_INCLUDE2: cc1as
 // XA_INCLUDE2: "-Ifoo_dir"
 
-// RUN: %clang -### -c -integrated-as %s -gdwarf-2 2>&1 | FileCheck 
--check-prefix=DWARF2 %s
+// RUN: %clang -### -c -integrated-as %s -gdwarf-4 -gdwarf-2 2>&1 | FileCheck 
--check-prefix=DWARF2 %s
 // DWARF2: "-g" "-gdwarf-2"
+// DWARF2-NOT: "-gdwarf-4"
 
 // RUN: %clang -### -c -integrated-as %s -gdwarf-3 2>&1 | FileCheck 
--check-prefix=DWARF3 %s
 // DWARF3: "-g" "-gdwarf-3"


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D12541: [Sparc][Shave]: Empower the toolchain formerly known as SHAVE to do more.

2015-09-14 Thread Douglas Katzman via cfe-commits
dougk updated this revision to Diff 34729.
dougk added a comment.

Delete the overrides of getTool() and buildAssembler() in MyriadToolChain.


http://reviews.llvm.org/D12541

Files:
  lib/Driver/Driver.cpp
  lib/Driver/ToolChains.cpp
  lib/Driver/ToolChains.h
  lib/Driver/Tools.cpp
  lib/Driver/Tools.h
  test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtbegin.o
  test/Driver/shave-toolchain.c

Index: test/Driver/shave-toolchain.c
===
--- test/Driver/shave-toolchain.c
+++ test/Driver/shave-toolchain.c
@@ -1,3 +1,9 @@
+// RUN: %clang -no-canonical-prefixes -### -target sparc-myriad-rtems-elf %s \
+// RUN: -B %S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s -check-prefix=LINK_WITH_RTEMS
+// LINK_WITH_RTEMS: crti.o
+// LINK_WITH_RTEMS: crtbegin.o
+// LINK_WITH_RTEMS: -lrtems
+
 // Ensure that '-target shave' picks a different compiler.
 // Also check that '-I' is turned into '-i:' for the assembler.
 
@@ -8,26 +14,26 @@
 // As such, we test only for a trailing quote in its rendering.
 // The same goes for "moviAsm".
 
-// RUN: %clang -target shave -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
 // MOVICOMPILE: moviCompile" "-DMYRIAD2" "-mcpu=myriad2" "-S" "-isystem" "somewhere" "-I" "common"
 // MOVICOMPILE: moviAsm" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" "-a"
 // MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
 
-// RUN: %clang -target shave -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=DEFINES
 // DEFINES: "-D" "EFINE_ME" "-U" "NDEFINE_ME"
 
-// RUN: %clang -target shave -c -### %s -Icommon -iquote quotepath -isystem syspath 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -Icommon -iquote quotepath -isystem syspath 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=INCLUDES
 // INCLUDES: "-iquote" "quotepath" "-isystem" "syspath"
 
-// RUN: %clang -target shave -c -### %s -g -fno-inline-functions \
+// RUN: %clang -target shave-myriad -c -### %s -g -fno-inline-functions \
 // RUN: -fno-inline-functions-called-once -Os -Wall -MF dep.d \
 // RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
 // PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" "-fno-inline-functions-called-once"
 // PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"
 
-// RUN: %clang -target shave -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
+// RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MDMF
 // MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
Index: lib/Driver/Tools.h
===
--- lib/Driver/Tools.h
+++ lib/Driver/Tools.h
@@ -794,6 +794,23 @@
 };
 } // end namespace SHAVE
 
+/// The Myriad toolchain uses tools that are in two different namespaces.
+/// The Compiler and Assembler as defined above are in the SHAVE namespace,
+/// whereas the linker, which accepts code for a mixture of Sparc and SHAVE,
+/// is in the Myriad namespace.
+namespace Myriad {
+class LLVM_LIBRARY_VISIBILITY Linker : public GnuTool {
+public:
+  Linker(const ToolChain &TC) : GnuTool("shave::Linker", "ld", TC) {}
+  bool hasIntegratedCPP() const override { return false; }
+  bool isLinkJob() const override { return true; }
+  void ConstructJob(Compilation &C, const JobAction &JA,
+const InputInfo &Output, const InputInfoList &Inputs,
+const llvm::opt::ArgList &TCArgs,
+const char *LinkingOutput) const override;
+};
+} // end namespace Myriad
+
 } // end namespace tools
 } // end namespace driver
 } // end namespace clang
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -9735,3 +9735,78 @@
   C.addCommand(llvm::make_unique(JA, *this, Args.MakeArgString(Exec),
   CmdArgs, Inputs));
 }
+
+void tools::Myriad::Linker::ConstructJob(Compilation &C, const JobAction &JA,
+ const InputInfo &Output,
+ const InputInfoList &Inputs,
+ const ArgList &Args,
+ const char *LinkingOutput) const {
+  const auto &TC =
+  static_cast(getToolChain());
+  const llvm::Triple &T = TC.getTriple();
+  ArgStringList CmdArgs;
+  bool UseStartfiles = !Args.hasArg(options::OPT_nostartfiles);
+
+  std::string StartFilesDir, BuiltinLibDir;
+  TC.getCompilerSupportDir(StartFilesDir);
+  TC.getBuiltinLibDir(BuiltinLibDir);
+
+  CmdArgs.push_back("-EL"); // Endianness = little
+
+  // The remaining logic is most

Re: [PATCH] D12541: [Sparc][Shave]: Empower the toolchain formerly known as SHAVE to do more.

2015-09-17 Thread Douglas Katzman via cfe-commits
dougk updated this revision to Diff 34998.
dougk marked 3 inline comments as done.
dougk added a comment.

Use the same logic as Solaris::Solaris to die in the toolchain constructor if 
getArch() is unexpected.
Also don't hardcode -EL in linker.


http://reviews.llvm.org/D12541

Files:
  lib/Driver/Driver.cpp
  lib/Driver/ToolChains.cpp
  lib/Driver/ToolChains.h
  lib/Driver/Tools.cpp
  lib/Driver/Tools.h
  test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtbegin.o
  test/Driver/shave-toolchain.c

Index: test/Driver/shave-toolchain.c
===
--- test/Driver/shave-toolchain.c
+++ test/Driver/shave-toolchain.c
@@ -1,3 +1,9 @@
+// RUN: %clang -no-canonical-prefixes -### -target sparc-myriad-rtems-elf %s \
+// RUN: -B %S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s -check-prefix=LINK_WITH_RTEMS
+// LINK_WITH_RTEMS: crti.o
+// LINK_WITH_RTEMS: crtbegin.o
+// LINK_WITH_RTEMS: -lrtems
+
 // Ensure that '-target shave' picks a different compiler.
 // Also check that '-I' is turned into '-i:' for the assembler.
 
@@ -8,26 +14,26 @@
 // As such, we test only for a trailing quote in its rendering.
 // The same goes for "moviAsm".
 
-// RUN: %clang -target shave -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
 // MOVICOMPILE: moviCompile" "-DMYRIAD2" "-mcpu=myriad2" "-S" "-isystem" "somewhere" "-I" "common"
 // MOVICOMPILE: moviAsm" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" "-a"
 // MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
 
-// RUN: %clang -target shave -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=DEFINES
 // DEFINES: "-D" "EFINE_ME" "-U" "NDEFINE_ME"
 
-// RUN: %clang -target shave -c -### %s -Icommon -iquote quotepath -isystem syspath 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -Icommon -iquote quotepath -isystem syspath 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=INCLUDES
 // INCLUDES: "-iquote" "quotepath" "-isystem" "syspath"
 
-// RUN: %clang -target shave -c -### %s -g -fno-inline-functions \
+// RUN: %clang -target shave-myriad -c -### %s -g -fno-inline-functions \
 // RUN: -fno-inline-functions-called-once -Os -Wall -MF dep.d \
 // RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
 // PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" "-fno-inline-functions-called-once"
 // PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"
 
-// RUN: %clang -target shave -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
+// RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MDMF
 // MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
Index: lib/Driver/Tools.h
===
--- lib/Driver/Tools.h
+++ lib/Driver/Tools.h
@@ -794,6 +794,23 @@
 };
 } // end namespace SHAVE
 
+/// The Myriad toolchain uses tools that are in two different namespaces.
+/// The Compiler and Assembler as defined above are in the SHAVE namespace,
+/// whereas the linker, which accepts code for a mixture of Sparc and SHAVE,
+/// is in the Myriad namespace.
+namespace Myriad {
+class LLVM_LIBRARY_VISIBILITY Linker : public GnuTool {
+public:
+  Linker(const ToolChain &TC) : GnuTool("shave::Linker", "ld", TC) {}
+  bool hasIntegratedCPP() const override { return false; }
+  bool isLinkJob() const override { return true; }
+  void ConstructJob(Compilation &C, const JobAction &JA,
+const InputInfo &Output, const InputInfoList &Inputs,
+const llvm::opt::ArgList &TCArgs,
+const char *LinkingOutput) const override;
+};
+} // end namespace Myriad
+
 } // end namespace tools
 } // end namespace driver
 } // end namespace clang
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -9735,3 +9735,81 @@
   C.addCommand(llvm::make_unique(JA, *this, Args.MakeArgString(Exec),
   CmdArgs, Inputs));
 }
+
+void tools::Myriad::Linker::ConstructJob(Compilation &C, const JobAction &JA,
+ const InputInfo &Output,
+ const InputInfoList &Inputs,
+ const ArgList &Args,
+ const char *LinkingOutput) const {
+  const auto &TC =
+  static_cast(getToolChain());
+  const llvm::Triple &T = TC.getTriple();
+  ArgStringList CmdArgs;
+  bool UseStartfiles = !Args.hasArg(options::OPT_nostartfiles);
+
+  std::string StartFilesDir, BuiltinLibDir;
+  TC.getCompilerSupportDir(StartFilesDir);
+  TC.getBuiltinLibDir(B

r247900 - createOutputFile should set Error to something if it returns null.

2015-09-17 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Thu Sep 17 11:45:12 2015
New Revision: 247900

URL: http://llvm.org/viewvc/llvm-project?rev=247900&view=rev
Log:
createOutputFile should set Error to something if it returns null.

This is not portably unit-testable because the only visible
effect is a change from one random message string to another.

Modified:
cfe/trunk/lib/Frontend/CompilerInstance.cpp

Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInstance.cpp?rev=247900&r1=247899&r2=247900&view=diff
==
--- cfe/trunk/lib/Frontend/CompilerInstance.cpp (original)
+++ cfe/trunk/lib/Frontend/CompilerInstance.cpp Thu Sep 17 11:45:12 2015
@@ -641,8 +641,10 @@ std::unique_ptr
   llvm::sys::fs::status(OutputPath, Status);
   if (llvm::sys::fs::exists(Status)) {
 // Fail early if we can't write to the final destination.
-if (!llvm::sys::fs::can_write(OutputPath))
+if (!llvm::sys::fs::can_write(OutputPath)) {
+  Error = std::make_error_code(std::errc::operation_not_permitted);
   return nullptr;
+}
 
 // Don't use a temporary if the output is a special file. This handles
 // things like '-o /dev/null'


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r247924 - [Shave]: Drive sparc-myriad-elf-ld directly rather than via gcc.

2015-09-17 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Thu Sep 17 14:56:40 2015
New Revision: 247924

URL: http://llvm.org/viewvc/llvm-project?rev=247924&view=rev
Log:
[Shave]: Drive sparc-myriad-elf-ld directly rather than via gcc.

Differential Revision: http://reviews.llvm.org/D12541

Added:
cfe/trunk/test/Driver/Inputs/basic_myriad_tree/
cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/
cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/
cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/

cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/

cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtbegin.o
Modified:
cfe/trunk/lib/Driver/Driver.cpp
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/lib/Driver/ToolChains.h
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/lib/Driver/Tools.h
cfe/trunk/test/Driver/shave-toolchain.c

Modified: cfe/trunk/lib/Driver/Driver.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=247924&r1=247923&r2=247924&view=diff
==
--- cfe/trunk/lib/Driver/Driver.cpp (original)
+++ cfe/trunk/lib/Driver/Driver.cpp Thu Sep 17 14:56:40 2015
@@ -2262,15 +2262,14 @@ const ToolChain &Driver::getToolChain(co
   case llvm::Triple::xcore:
 TC = new toolchains::XCoreToolChain(*this, Target, Args);
 break;
-  case llvm::Triple::shave:
-TC = new toolchains::SHAVEToolChain(*this, Target, Args);
-break;
   case llvm::Triple::wasm32:
   case llvm::Triple::wasm64:
 TC = new toolchains::WebAssembly(*this, Target, Args);
 break;
   default:
-if (Target.isOSBinFormatELF())
+if (Target.getVendor() == llvm::Triple::Myriad)
+  TC = new toolchains::MyriadToolChain(*this, Target, Args);
+else if (Target.isOSBinFormatELF())
   TC = new toolchains::Generic_ELF(*this, Target, Args);
 else if (Target.isOSBinFormatMachO())
   TC = new toolchains::MachO(*this, Target, Args);

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=247924&r1=247923&r2=247924&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Thu Sep 17 14:56:40 2015
@@ -1170,7 +1170,8 @@ static llvm::StringRef getGCCToolchainDi
 /// necessary because the driver doesn't store the final version of the target
 /// triple.
 void Generic_GCC::GCCInstallationDetector::init(
-const Driver &D, const llvm::Triple &TargetTriple, const ArgList &Args) {
+const Driver &D, const llvm::Triple &TargetTriple, const ArgList &Args,
+const ArrayRef ExtraTripleAliases) {
   llvm::Triple BiarchVariantTriple = TargetTriple.isArch32Bit()
  ? TargetTriple.get64BitArchVariant()
  : TargetTriple.get32BitArchVariant();
@@ -1218,6 +1219,8 @@ void Generic_GCC::GCCInstallationDetecto
   const std::string LibDir = Prefix + Suffix.str();
   if (!llvm::sys::fs::exists(LibDir))
 continue;
+  for (const StringRef Candidate : ExtraTripleAliases) // Try these first.
+ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, Candidate);
   for (const StringRef Candidate : CandidateTripleAliases)
 ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, Candidate);
 }
@@ -3920,9 +3923,33 @@ void XCoreToolChain::AddCXXStdlibLibArgs
   // We don't output any lib args. This is handled by xcc.
 }
 
-// SHAVEToolChain does not call Clang's C compiler.
-// We override SelectTool to avoid testing ShouldUseClangCompiler().
-Tool *SHAVEToolChain::SelectTool(const JobAction &JA) const {
+MyriadToolChain::MyriadToolChain(const Driver &D, const llvm::Triple &Triple,
+ const ArgList &Args)
+: Generic_GCC(D, Triple, Args) {
+  // If a target of 'sparc-myriad-elf' is specified to clang, it wants to use
+  // 'sparc-myriad--elf' (note the unknown OS) as the canonical triple.
+  // This won't work to find gcc. Instead we give the installation detector an
+  // extra triple, which is preferable to further hacks of the logic that at
+  // present is based solely on getArch(). In particular, it would be wrong to
+  // choose the myriad installation when targeting a non-myriad sparc install.
+  switch (Triple.getArch()) {
+  default:
+D.Diag(diag::err_target_unsupported_arch) << Triple.getArchName() << 
"myriad";
+  case llvm::Triple::sparc:
+  case llvm::Triple::sparcel:
+  case llvm::Triple::shave:
+GCCInstallation.init(D, Triple, Args, {"sparc-myriad-elf"});
+  }
+}
+
+MyriadToolChain::~MyriadToolChain() {}
+
+// MyriadToolChain handles several triples:
+//  {shave,sparc{,el}}-myriad-{rtems,unknown}-elf
+Tool *MyriadToolChain::SelectTool

Re: [PATCH] D12541: [Sparc][Shave]: Empower the toolchain formerly known as SHAVE to do more.

2015-09-17 Thread Douglas Katzman via cfe-commits
This revision was automatically updated to reflect the committed changes.
dougk marked 2 inline comments as done.
Closed by commit rL247924: [Shave]: Drive sparc-myriad-elf-ld directly rather 
than via gcc. (authored by dougk).

Changed prior to commit:
  http://reviews.llvm.org/D12541?vs=34998&id=35028#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D12541

Files:
  cfe/trunk/lib/Driver/Driver.cpp
  cfe/trunk/lib/Driver/ToolChains.cpp
  cfe/trunk/lib/Driver/ToolChains.h
  cfe/trunk/lib/Driver/Tools.cpp
  cfe/trunk/lib/Driver/Tools.h
  
cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtbegin.o
  cfe/trunk/test/Driver/shave-toolchain.c

Index: cfe/trunk/test/Driver/shave-toolchain.c
===
--- cfe/trunk/test/Driver/shave-toolchain.c
+++ cfe/trunk/test/Driver/shave-toolchain.c
@@ -1,3 +1,16 @@
+// RUN: %clang -no-canonical-prefixes -### -target sparc-myriad-rtems-elf %s \
+// RUN: -B %S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s -check-prefix=LINK_WITH_RTEMS
+// LINK_WITH_RTEMS: Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crti.o
+// LINK_WITH_RTEMS: Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtbegin.o
+// LINK_WITH_RTEMS: "-L{{.*}}Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/../../../../sparc-myriad-elf/lib"
+// LINK_WITH_RTEMS: "-L{{.*}}Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2"
+// LINK_WITH_RTEMS: "--start-group" "-lc" "-lrtemscpu" "-lrtemsbsp" "--end-group" "-lgcc"
+// LINK_WITH_RTEMS: Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtend.o
+// LINK_WITH_RTEMS: Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtn.o
+
+// RUN: %clang -### -target what-myriad %s 2>&1 | FileCheck %s -check-prefix=BAD_ARCH
+// BAD_ARCH: the target architecture 'what' is not supported by the target 'myriad'
+
 // Ensure that '-target shave' picks a different compiler.
 // Also check that '-I' is turned into '-i:' for the assembler.
 
@@ -8,26 +21,26 @@
 // As such, we test only for a trailing quote in its rendering.
 // The same goes for "moviAsm".
 
-// RUN: %clang -target shave -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
 // MOVICOMPILE: moviCompile" "-DMYRIAD2" "-mcpu=myriad2" "-S" "-isystem" "somewhere" "-I" "common"
 // MOVICOMPILE: moviAsm" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" "-a"
 // MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
 
-// RUN: %clang -target shave -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=DEFINES
 // DEFINES: "-D" "EFINE_ME" "-U" "NDEFINE_ME"
 
-// RUN: %clang -target shave -c -### %s -Icommon -iquote quotepath -isystem syspath 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -Icommon -iquote quotepath -isystem syspath 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=INCLUDES
 // INCLUDES: "-iquote" "quotepath" "-isystem" "syspath"
 
-// RUN: %clang -target shave -c -### %s -g -fno-inline-functions \
+// RUN: %clang -target shave-myriad -c -### %s -g -fno-inline-functions \
 // RUN: -fno-inline-functions-called-once -Os -Wall -MF dep.d \
 // RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
 // PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" "-fno-inline-functions-called-once"
 // PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"
 
-// RUN: %clang -target shave -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
+// RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MDMF
 // MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
Index: cfe/trunk/lib/Driver/ToolChains.h
===
--- cfe/trunk/lib/Driver/ToolChains.h
+++ cfe/trunk/lib/Driver/ToolChains.h
@@ -101,7 +101,8 @@
   public:
 GCCInstallationDetector() : IsValid(false) {}
 void init(const Driver &D, const llvm::Triple &TargetTriple,
-  const llvm::opt::ArgList &Args);
+  const llvm::opt::ArgList &Args,
+  const ArrayRef ExtraTripleAliases = {});
 
 /// \brief Check whether we detected a valid GCC install.
 bool isValid() const { return IsValid; }
@@ -918,21 +919,23 @@
llvm::opt::ArgStringList &CmdArgs) const override;
 };
 
-/// SHAVEToolChain - A tool chain using the compiler installed by the
-/// Movidius SDK into MV_TOOLS_DIR (which we assume will be copied to llvm's
-/// installation dir) to perform all subcommands.
-class LLVM_LIBRARY_VISIBILITY SHAVEToolChain : public Generic_GCC {
-public:
-  SHAVEToolChain(const Driver &D, const llvm::Triple &Triple,
- const llvm::opt::ArgList &Args);
-  ~SHAVEToolChain() override;
+/// MyriadToolChain 

r247926 - [Shave]: Rename test file from 'shave-' to 'myriad-'

2015-09-17 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Thu Sep 17 15:00:09 2015
New Revision: 247926

URL: http://llvm.org/viewvc/llvm-project?rev=247926&view=rev
Log:
[Shave]: Rename test file from 'shave-' to 'myriad-'

Added:
cfe/trunk/test/Driver/myriad-toolchain.c
  - copied, changed from r247924, cfe/trunk/test/Driver/shave-toolchain.c
Removed:
cfe/trunk/test/Driver/shave-toolchain.c

Copied: cfe/trunk/test/Driver/myriad-toolchain.c (from r247924, 
cfe/trunk/test/Driver/shave-toolchain.c)
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?p2=cfe/trunk/test/Driver/myriad-toolchain.c&p1=cfe/trunk/test/Driver/shave-toolchain.c&r1=247924&r2=247926&rev=247926&view=diff
==
(empty)

Removed: cfe/trunk/test/Driver/shave-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/shave-toolchain.c?rev=247925&view=auto
==
--- cfe/trunk/test/Driver/shave-toolchain.c (original)
+++ cfe/trunk/test/Driver/shave-toolchain.c (removed)
@@ -1,46 +0,0 @@
-// RUN: %clang -no-canonical-prefixes -### -target sparc-myriad-rtems-elf %s \
-// RUN: -B %S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s 
-check-prefix=LINK_WITH_RTEMS
-// LINK_WITH_RTEMS: 
Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crti.o
-// LINK_WITH_RTEMS: 
Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtbegin.o
-// LINK_WITH_RTEMS: 
"-L{{.*}}Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/../../../../sparc-myriad-elf/lib"
-// LINK_WITH_RTEMS: 
"-L{{.*}}Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2"
-// LINK_WITH_RTEMS: "--start-group" "-lc" "-lrtemscpu" "-lrtemsbsp" 
"--end-group" "-lgcc"
-// LINK_WITH_RTEMS: 
Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtend.o
-// LINK_WITH_RTEMS: 
Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtn.o
-
-// RUN: %clang -### -target what-myriad %s 2>&1 | FileCheck %s 
-check-prefix=BAD_ARCH
-// BAD_ARCH: the target architecture 'what' is not supported by the target 
'myriad'
-
-// Ensure that '-target shave' picks a different compiler.
-// Also check that '-I' is turned into '-i:' for the assembler.
-
-// Note that since we don't know where movi tools are installed,
-// the driver may or may not find a full path to them.
-// That is, the 0th argument will be "/path/to/my/moviCompile"
-// or just "moviCompile" depending on whether moviCompile is found.
-// As such, we test only for a trailing quote in its rendering.
-// The same goes for "moviAsm".
-
-// RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon 
-Wa,-yippee 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
-// MOVICOMPILE: moviCompile" "-DMYRIAD2" "-mcpu=myriad2" "-S" "-isystem" 
"somewhere" "-I" "common"
-// MOVICOMPILE: moviAsm" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" 
"-a"
-// MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
-
-// RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=DEFINES
-// DEFINES: "-D" "EFINE_ME" "-U" "NDEFINE_ME"
-
-// RUN: %clang -target shave-myriad -c -### %s -Icommon -iquote quotepath 
-isystem syspath 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=INCLUDES
-// INCLUDES: "-iquote" "quotepath" "-isystem" "syspath"
-
-// RUN: %clang -target shave-myriad -c -### %s -g -fno-inline-functions \
-// RUN: -fno-inline-functions-called-once -Os -Wall -MF dep.d \
-// RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
-// PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" 
"-fno-inline-functions-called-once"
-// PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"
-
-// RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=MDMF
-// MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r247932 - Try to unbreak windows compiler after r247926.

2015-09-17 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Thu Sep 17 15:25:09 2015
New Revision: 247932

URL: http://llvm.org/viewvc/llvm-project?rev=247932&view=rev
Log:
Try to unbreak windows compiler after r247926.

It might not like {} implicitly cast to an Arrayref.
That's the theory, since I can't test it.

Modified:
cfe/trunk/lib/Driver/ToolChains.h

Modified: cfe/trunk/lib/Driver/ToolChains.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=247932&r1=247931&r2=247932&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.h (original)
+++ cfe/trunk/lib/Driver/ToolChains.h Thu Sep 17 15:25:09 2015
@@ -102,7 +102,8 @@ public:
 GCCInstallationDetector() : IsValid(false) {}
 void init(const Driver &D, const llvm::Triple &TargetTriple,
   const llvm::opt::ArgList &Args,
-  const ArrayRef ExtraTripleAliases = {});
+  const ArrayRef ExtraTripleAliases =
+  ArrayRef());
 
 /// \brief Check whether we detected a valid GCC install.
 bool isValid() const { return IsValid; }


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r247948 - [Myriad]: add "/include" to standard search path

2015-09-17 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Thu Sep 17 16:20:16 2015
New Revision: 247948

URL: http://llvm.org/viewvc/llvm-project?rev=247948&view=rev
Log:
[Myriad]: add "/include" to standard search path

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/lib/Driver/ToolChains.h
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=247948&r1=247947&r2=247948&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Thu Sep 17 16:20:16 2015
@@ -3944,6 +3944,12 @@ MyriadToolChain::MyriadToolChain(const D
 
 MyriadToolChain::~MyriadToolChain() {}
 
+void MyriadToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
+ArgStringList &CC1Args) const {
+  if (!DriverArgs.hasArg(options::OPT_nostdinc))
+addSystemInclude(DriverArgs, CC1Args, getDriver().SysRoot + "/include");
+}
+
 // MyriadToolChain handles several triples:
 //  {shave,sparc{,el}}-myriad-{rtems,unknown}-elf
 Tool *MyriadToolChain::SelectTool(const JobAction &JA) const {

Modified: cfe/trunk/lib/Driver/ToolChains.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=247948&r1=247947&r2=247948&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.h (original)
+++ cfe/trunk/lib/Driver/ToolChains.h Thu Sep 17 16:20:16 2015
@@ -928,6 +928,9 @@ public:
   const llvm::opt::ArgList &Args);
   ~MyriadToolChain() override;
 
+  void
+  AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
+llvm::opt::ArgStringList &CC1Args) const override;
   Tool *SelectTool(const JobAction &JA) const override;
   void getCompilerSupportDir(std::string &Dir) const;
   void getBuiltinLibDir(std::string &Dir) const;

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=247948&r1=247947&r2=247948&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Thu Sep 17 16:20:16 2015
@@ -8,6 +8,15 @@
 // LINK_WITH_RTEMS: 
Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtend.o
 // LINK_WITH_RTEMS: 
Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtn.o
 
+// RUN: %clang -### -E -target sparc-myriad --sysroot=/yow %s 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=SLASH_INCLUDE
+// SLASH_INCLUDE: "-isysroot" "/yow" "-internal-isystem" "/yow/include"
+
+// RUN: %clang -### -E -target sparc-myriad --sysroot=/yow %s -nostdinc 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=NO_SLASH_INCLUDE
+// NO_SLASH_INCLUDE: "-isysroot" "/yow"
+// NO_SLASH_INCLUDE-NOT: "-internal-isystem" "/yow/include"
+
 // RUN: %clang -### -target what-myriad %s 2>&1 | FileCheck %s 
-check-prefix=BAD_ARCH
 // BAD_ARCH: the target architecture 'what' is not supported by the target 
'myriad'
 


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D10841: [Shave]: allow Clang to run the target linker.

2015-09-18 Thread Douglas Katzman via cfe-commits
dougk abandoned this revision.


Comment at: lib/Driver/Tools.cpp:9110
@@ +9109,3 @@
+
+  const char *ToolsRoot = ::getenv("MV_TOOLS_DIR");
+  // The version is numbered 'n.n.n.n' for arbitrary values that are opaque

jyknight wrote:
> Perhaps this should be a default plus a command-line argument, instead of an 
> environment variable?
How about if '--sysdir' provides the value, falling back to the environment 
var, and then a fixed default?
There is ample precedent for use of getenv() in some of the other toolchains.


Comment at: lib/Driver/Tools.cpp:9144
@@ +9143,3 @@
+ToolsRoot = "/usr/local/myriad/tools";
+ToolsVersion = "00.50.62.5";
+ToolsCommonDir = "/usr/local/mdk/tools/" + ToolsVersion + "/common";

jyknight wrote:
> Doesn't seem right to hardcode this particular version. Using a default for 
> ToolsRoot if MV_TOOLS_DIR isn't set sounds okay, but presumably should be 
> done up above before the loop.
> 
I could see a couple ways around hardcoding a version - if neither --sysroot 
nor MV_TOOLS_DIR is used, then the path is arbitrary anyway, so doesn't need a 
versioned subdir. And arguably is sysroot is given, then it could be an 
already-versioned pathname. Otoh, detecting the version works fine in that case.

For reference, the example sub-Makefile has hardcoded:
MV_TOOLS_VERSION ?= 00.50.62.5
MV_TOOLS_DIR ?= $(HOME)/WORK/Tools/Releases/General


Comment at: lib/Driver/Tools.cpp:9160
@@ +9159,3 @@
+  CmdArgs.push_back("-EL"); // Endianness = little
+  CmdArgs.push_back("-O9"); // Optimization
+  CmdArgs.push_back("--gc-sections");

jyknight wrote:
> "-O9"? That seems weird, and is not actually a thing.
This was cargo-cultism.   I've no objection to taking it out, but who's to say 
that their linker doesn't use it for something, as why else would they bother 
to put it in the examples?


http://reviews.llvm.org/D10841



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r247995 - Use None instead of an explicit constructor.

2015-09-18 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Fri Sep 18 10:23:16 2015
New Revision: 247995

URL: http://llvm.org/viewvc/llvm-project?rev=247995&view=rev
Log:
Use None instead of an explicit constructor.

And remove a needless 'const' since ArrayRef is immutable.
Both as suggested by dblaikie on cfe-commits.

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/lib/Driver/ToolChains.h

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=247995&r1=247994&r2=247995&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Fri Sep 18 10:23:16 2015
@@ -1171,7 +1171,7 @@ static llvm::StringRef getGCCToolchainDi
 /// triple.
 void Generic_GCC::GCCInstallationDetector::init(
 const Driver &D, const llvm::Triple &TargetTriple, const ArgList &Args,
-const ArrayRef ExtraTripleAliases) {
+ArrayRef ExtraTripleAliases) {
   llvm::Triple BiarchVariantTriple = TargetTriple.isArch32Bit()
  ? TargetTriple.get64BitArchVariant()
  : TargetTriple.get32BitArchVariant();

Modified: cfe/trunk/lib/Driver/ToolChains.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=247995&r1=247994&r2=247995&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.h (original)
+++ cfe/trunk/lib/Driver/ToolChains.h Fri Sep 18 10:23:16 2015
@@ -102,8 +102,7 @@ public:
 GCCInstallationDetector() : IsValid(false) {}
 void init(const Driver &D, const llvm::Triple &TargetTriple,
   const llvm::opt::ArgList &Args,
-  const ArrayRef ExtraTripleAliases =
-  ArrayRef());
+  ArrayRef ExtraTripleAliases = None);
 
 /// \brief Check whether we detected a valid GCC install.
 bool isValid() const { return IsValid; }


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D13221: Make CompilerInvocation's use of the debug options more understandable.

2015-09-28 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added reviewers: chandlerc, jyknight.
dougk added a subscriber: cfe-commits.

Both the Driver and the cc1 frontend play games with various combinations of 
'g' group options.
It would be nice if at least the frontend could be sane, leaving the decision 
of what OS favors dwarf version N totally in the driver's hands.

As such, the Driver never passes a bare '-g' option nor lets the 
CompilerInvocation assume a default dwarf level.
Instead, an explicit choices of debug info kind is conveyed from the driver 
directly into the CodeGen options, and similarly the dwarf level.

At present this breaks hundreds of driver tests because they're looking for 
particular strings, but if people think this is the right way to do things, 
those tests can be fixed (and perhaps there's a genuine breakage or two, which 
must be fixed).

http://reviews.llvm.org/D13221

Files:
  include/clang/Driver/Options.td
  include/clang/Driver/ToolChain.h
  lib/Driver/ToolChains.h
  lib/Driver/Tools.cpp
  lib/Frontend/CompilerInvocation.cpp

Index: lib/Frontend/CompilerInvocation.cpp
===
--- lib/Frontend/CompilerInvocation.cpp
+++ lib/Frontend/CompilerInvocation.cpp
@@ -393,37 +393,47 @@
   Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args) << Name;
   }
 
-  if (Args.hasArg(OPT_gline_tables_only)) {
-Opts.setDebugInfo(CodeGenOptions::DebugLineTablesOnly);
-  } else if (Args.hasArg(OPT_g_Flag) || Args.hasArg(OPT_gdwarf_2) ||
- Args.hasArg(OPT_gdwarf_3) || Args.hasArg(OPT_gdwarf_4)) {
-bool Default = false;
-// Until dtrace (via CTF) and LLDB can deal with distributed debug info,
-// Darwin and FreeBSD default to standalone/full debug info.
-if (llvm::Triple(TargetOpts.Triple).isOSDarwin() ||
-llvm::Triple(TargetOpts.Triple).isOSFreeBSD())
-  Default = true;
-
-if (Args.hasFlag(OPT_fstandalone_debug, OPT_fno_standalone_debug, Default))
-  Opts.setDebugInfo(CodeGenOptions::FullDebugInfo);
-else
-  Opts.setDebugInfo(CodeGenOptions::LimitedDebugInfo);
+  // There are three levels of user-requestable debug info (aside from "none",
+  // and not counting "location tracking only" which isn't user-requested).
+  // Use the last of the flags that set any of the three interesting levels.
+  // In the Driver, "limit-debug-info" is synonymous with "no-standalone-debug",
+  // but the "no" option name is very confusing as part of a multiway switch.
+  // Read "limit_debug_info" as "LimitedDebugInfo" and it makes perfect sense.
+  if (Arg *A = Args.getLastArg(OPT_fstandalone_debug, OPT_flimit_debug_info,
+   OPT_gline_tables_only)) {
+enum CodeGenOptions::DebugInfoKind Kind;
+switch (A->getOption().getID()) {
+case OPT_fstandalone_debug:
+  Kind = CodeGenOptions::FullDebugInfo;
+  break;
+case OPT_flimit_debug_info:
+  Kind = CodeGenOptions::LimitedDebugInfo;
+  break;
+default:
+  Kind = CodeGenOptions::DebugLineTablesOnly;
+  break;
+}
+Opts.setDebugInfo(Kind);
   }
-  Opts.DebugColumnInfo = Args.hasArg(OPT_dwarf_column_info);
-  if (Args.hasArg(OPT_gcodeview)) {
-Opts.EmitCodeView = true;
-Opts.DwarfVersion = 0;
-  } else if (Opts.getDebugInfo() != CodeGenOptions::NoDebugInfo) {
-// Default Dwarf version is 4 if we are generating debug information.
-Opts.DwarfVersion = 4;
+  // Dwarf Version is one of {0,2,3,4}. There is no explicit flag for 0.
+  // It is the assumed default regardless of whether debug info was requested,
+  // so the driver had better pick one if debug info is to be produced.
+  if (Arg *A = Args.getLastArg(OPT_gdwarf_4, OPT_gdwarf_3, OPT_gdwarf_2)) {
+switch (A->getOption().getID()) {
+case OPT_gdwarf_2:
+  Opts.DwarfVersion = 2;
+  break;
+case OPT_gdwarf_3:
+  Opts.DwarfVersion = 3;
+  break;
+default:
+  Opts.DwarfVersion = 4;
+  break;
+}
   }
+  Opts.DebugColumnInfo = Args.hasArg(OPT_dwarf_column_info);
+  Opts.EmitCodeView = Args.hasArg(OPT_gcodeview);
   Opts.SplitDwarfFile = Args.getLastArgValue(OPT_split_dwarf_file);
-  if (Args.hasArg(OPT_gdwarf_2))
-Opts.DwarfVersion = 2;
-  else if (Args.hasArg(OPT_gdwarf_3))
-Opts.DwarfVersion = 3;
-  else if (Args.hasArg(OPT_gdwarf_4))
-Opts.DwarfVersion = 4;
   Opts.DebugTypeExtRefs = Args.hasArg(OPT_dwarf_ext_refs);
 
   if (const Arg *A =
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -24,6 +24,7 @@
 #include "clang/Driver/SanitizerArgs.h"
 #include "clang/Driver/ToolChain.h"
 #include "clang/Driver/Util.h"
+#include "clang/Frontend/CodeGenOptions.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/StringExtras.h"
@@ -3797,43 +3798,70 @@
  : "-");
   }
 
-  // Use the l

Re: [PATCH] D13221: Make CompilerInvocation's use of the debug options more understandable.

2015-09-28 Thread Douglas Katzman via cfe-commits
dougk added a comment.

I think the best thing to do is introduce new cc1 arguments that control the 
Opts explicitly, and cease accepting the equivalent driver arguments in cc1.
I would propose '-gdwarf-version={2|3|4}' and 
'-gdebug-info-kind={line-tables|limited|full}'


http://reviews.llvm.org/D13221



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r248912 - Alias "-ggdbN" to "-gN" options, fixing some incompatibilities.

2015-09-30 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Sep 30 10:55:59 2015
New Revision: 248912

URL: http://llvm.org/viewvc/llvm-project?rev=248912&view=rev
Log:
Alias "-ggdbN" to "-gN" options, fixing some incompatibilities.

* assembling from a .s file mistook -ggdb0 for -g
* -ggdb1 is supposed to mean basically -g1, not -gN for N>1

Modified:
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/debug-options-as.c
cfe/trunk/test/Driver/debug-options.c

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=248912&r1=248911&r2=248912&view=diff
==
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Wed Sep 30 10:55:59 2015
@@ -1109,14 +1109,16 @@ def gline_tables_only : Flag<["-"], "gli
   HelpText<"Emit debug line number tables only">, Flags<[CC1Option]>;
 def gmlt : Flag<["-"], "gmlt">, Alias;
 def g0 : Flag<["-"], "g0">, Group;
-def g1 : Flag<["-"], "g1">, Group;
+def g1 : Flag<["-"], "g1">, Group, Alias;
 def g2 : Flag<["-"], "g2">, Group;
 def g3 : Flag<["-"], "g3">, Group;
 def ggdb : Flag<["-"], "ggdb">, Group;
-def ggdb0 : Flag<["-"], "ggdb0">, Group;
-def ggdb1 : Flag<["-"], "ggdb1">, Group;
-def ggdb2 : Flag<["-"], "ggdb2">, Group;
-def ggdb3 : Flag<["-"], "ggdb3">, Group;
+def ggdb0 : Flag<["-"], "ggdb0">, Alias;
+// Redirect ggdb1 to , not ,
+// because aliases of aliases aren't allowed.
+def ggdb1 : Flag<["-"], "ggdb1">, Alias;
+def ggdb2 : Flag<["-"], "ggdb2">, Alias;
+def ggdb3 : Flag<["-"], "ggdb3">, Alias;
 def gdwarf_2 : Flag<["-"], "gdwarf-2">, Group,
   HelpText<"Generate source-level debug information with dwarf version 2">, 
Flags<[CC1Option,CC1AsOption]>;
 def gdwarf_3 : Flag<["-"], "gdwarf-3">, Group,

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=248912&r1=248911&r2=248912&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Wed Sep 30 10:55:59 2015
@@ -3802,8 +3802,7 @@ void Clang::ConstructJob(Compilation &C,
   Args.ClaimAllArgs(options::OPT_g_Group);
   Arg *SplitDwarfArg = Args.getLastArg(options::OPT_gsplit_dwarf);
   if (Arg *A = Args.getLastArg(options::OPT_g_Group)) {
-if ((A->getOption().matches(options::OPT_gline_tables_only) ||
- A->getOption().matches(options::OPT_g1)) &&
+if (A->getOption().matches(options::OPT_gline_tables_only) &&
 (!SplitDwarfArg || A->getIndex() > SplitDwarfArg->getIndex())) {
   // FIXME: we should support specifying dwarf version with
   // -gline-tables-only.
@@ -3819,8 +3818,7 @@ void Clang::ConstructJob(Compilation &C,
A->getOption().matches(options::OPT_gdwarf_3) ||
A->getOption().matches(options::OPT_gdwarf_4)) {
   A->render(Args, CmdArgs);
-} else if (!A->getOption().matches(options::OPT_g0) &&
-   !A->getOption().matches(options::OPT_ggdb0)) {
+} else if (!A->getOption().matches(options::OPT_g0)) {
   // Default is dwarf-2 for Darwin, OpenBSD, FreeBSD and Solaris.
   const llvm::Triple &Triple = getToolChain().getTriple();
   if (Triple.isOSDarwin() || Triple.getOS() == llvm::Triple::OpenBSD ||

Modified: cfe/trunk/test/Driver/debug-options-as.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/debug-options-as.c?rev=248912&r1=248911&r2=248912&view=diff
==
--- cfe/trunk/test/Driver/debug-options-as.c (original)
+++ cfe/trunk/test/Driver/debug-options-as.c Wed Sep 30 10:55:59 2015
@@ -7,10 +7,16 @@
 // SAVE: "-cc1as"
 // SAVE-NOT: "-g"
 
+// Make sure that '-ggdb0' is not accidentally mistaken for '-g'
+// RUN: %clang -### -ggdb0 -c -integrated-as -x assembler %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=GGDB0 %s
+//
+// GGDB0: "-cc1as"
+// GGDB0-NOT: "-g"
+
 // Check to make sure clang with -g on a .s file gets passed.
 // rdar://9275556
-// RUN: touch %t.s
-// RUN: %clang -### -c -integrated-as -g %t.s 2>&1 \
+// RUN: %clang -### -c -integrated-as -g -x assembler %s 2>&1 \
 // RUN:   | FileCheck %s
 //
 // CHECK: "-cc1as"
@@ -18,8 +24,7 @@
 
 // Check to make sure clang with -g on a .s file gets passed 
-dwarf-debug-producer.
 // rdar://12955296
-// RUN: touch %t.s
-// RUN: %clang -### -c -integrated-as -g %t.s 2>&1 \
+// RUN: %clang -### -c -integrated-as -g -x assembler %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=P %s
 //
 // P: "-cc1as"

Modified: cfe/trunk/test/Driver/debug-options.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/debug-options.c?rev=248912&r1=248911&r2=248912&view=diff
==
--- cfe/trunk/test/Driver/debug-options.

r249138 - Fix bogus comment.

2015-10-02 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Fri Oct  2 09:41:38 2015
New Revision: 249138

URL: http://llvm.org/viewvc/llvm-project?rev=249138&view=rev
Log:
Fix bogus comment.

Modified:
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=249138&r1=249137&r2=249138&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Fri Oct  2 09:41:38 2015
@@ -402,7 +402,7 @@ void Clang::AddPreprocessingOptions(Comp
   {options::OPT_D, options::OPT_U, options::OPT_I_Group,
options::OPT_F, options::OPT_index_header_map});
 
-  // Add -Wp, and -Xassembler if using the preprocessor.
+  // Add -Wp, and -Xpreprocessor if using the preprocessor.
 
   // FIXME: There is a very unfortunate problem here, some troubled
   // souls abuse -Wp, to pass preprocessor options in gcc syntax. To


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r249166 - [Myriad]: Accept '-nostdlib' option

2015-10-02 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Fri Oct  2 13:39:08 2015
New Revision: 249166

URL: http://llvm.org/viewvc/llvm-project?rev=249166&view=rev
Log:
[Myriad]: Accept '-nostdlib' option

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=249166&r1=249165&r2=249166&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Fri Oct  2 13:39:08 2015
@@ -9760,6 +9760,8 @@ void tools::Myriad::Linker::ConstructJob
   const llvm::Triple &T = TC.getTriple();
   ArgStringList CmdArgs;
   bool UseStartfiles = !Args.hasArg(options::OPT_nostartfiles);
+  bool UseDefaultLibs = !Args.hasArg(options::OPT_nostdlib) &&
+!Args.hasArg(options::OPT_nodefaultlibs);
 
   std::string StartFilesDir, BuiltinLibDir;
   TC.getCompilerSupportDir(StartFilesDir);
@@ -9796,27 +9798,31 @@ void tools::Myriad::Linker::ConstructJob
 options::OPT_e, options::OPT_s, options::OPT_t,
 options::OPT_Z_Flag, options::OPT_r});
 
-  // The linker doesn't use these builtin paths unless directed to,
-  // because it was not compiled for support with sysroots, nor does
-  // it have a default of little-endian with FPU.
-  CmdArgs.push_back(Args.MakeArgString("-L" + BuiltinLibDir));
-  CmdArgs.push_back(Args.MakeArgString("-L" + StartFilesDir));
+  if (UseDefaultLibs) {
+// The linker doesn't use these builtin paths unless directed to,
+// because it was not compiled for support with sysroots, nor does
+// it have a default of little-endian with FPU.
+CmdArgs.push_back(Args.MakeArgString("-L" + BuiltinLibDir));
+CmdArgs.push_back(Args.MakeArgString("-L" + StartFilesDir));
+  }
 
   AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
 
-  if (T.getOS() == llvm::Triple::RTEMS) {
-CmdArgs.push_back("--start-group");
-CmdArgs.push_back("-lc");
-// You must provide your own "-L" option to enable finding these.
-CmdArgs.push_back("-lrtemscpu");
-CmdArgs.push_back("-lrtemsbsp");
-CmdArgs.push_back("--end-group");
-  } else {
-CmdArgs.push_back("-lc");
+  if (UseDefaultLibs) {
+if (T.getOS() == llvm::Triple::RTEMS) {
+  CmdArgs.push_back("--start-group");
+  CmdArgs.push_back("-lc");
+  // You must provide your own "-L" option to enable finding these.
+  CmdArgs.push_back("-lrtemscpu");
+  CmdArgs.push_back("-lrtemsbsp");
+  CmdArgs.push_back("--end-group");
+} else {
+  CmdArgs.push_back("-lc");
+}
+if (C.getDriver().CCCIsCXX())
+  CmdArgs.push_back("-lstdc++");
+CmdArgs.push_back("-lgcc");
   }
-  if (C.getDriver().CCCIsCXX())
-CmdArgs.push_back("-lstdc++");
-  CmdArgs.push_back("-lgcc");
   if (UseStartfiles) {
 CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crtend.o"));
 CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crtn.o"));

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=249166&r1=249165&r2=249166&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Fri Oct  2 13:39:08 2015
@@ -53,3 +53,7 @@
 // RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MDMF
 // MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
+
+// RUN: %clang -target sparc-myriad -### -nostdlib %s 2>&1 | FileCheck %s 
--check-prefix=NOSTDLIB
+//
+// NOSTDLIB-NOT: "-lc"


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D13221: Make CompilerInvocation's use of the debug options more understandable.

2015-10-02 Thread Douglas Katzman via cfe-commits
dougk added a comment.

A few more remarks:

- The code which emits line-tables-only seems to understand dwarf2 versus 
dwarf4, but due solely to the way that arguments were parsed, the dwarf version 
did not propagate through to the compiler invocation if you also specified 
line-tables-only.  The new pair of arguments does not have that issue.

So as mentioned on cfe-dev, this is another case of "yeah, I fixed that but 
wasn't really the intent".  [All I want is MyriadToolchain to default to dwarf 
2. That's it!]

- It was suggested to me that it ought to have been possible to pull out all of 
the g group argument processing so that ClangAs::ConstructJob can share a 
little bit more code with Clang::ConstructJob but I'd really prefer not to do 
that in this change. It's possible that another small cleanup can be done, but 
the governing factor is that somehow or another you also have to deal with the 
case where the integrated-as tool has to parse '-gdwarf-N' flags (because 
people can pass those with -Xassembler,-gdwarf-). So you've got to be able to 
parse plain old StringRefs, as opposed to "Arg", which, absent that 
requirement, you'd just do with getOption().matches(). As it is, I think the 
code is well factored for this purpose.


http://reviews.llvm.org/D13221



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D13221: Make CompilerInvocation's use of the debug options more understandable.

2015-10-07 Thread Douglas Katzman via cfe-commits
dougk marked an inline comment as done.
dougk added a comment.

James, you're right, 'gdwarf-2' followed by 'line-tables-only' works, but the 
opposite order doesn't.
So it halfway works, which is better than not working at all.



Comment at: lib/Driver/Tools.cpp:2353
@@ +2352,3 @@
+  }
+  switch (DwarfVersion) {
+  case 2:

jyknight wrote:
> How about:
>   if (DwarfVersion > 0) CmdArgs.push_back("-dwarf-version=" + DwarfVersion);
minor point: the "+" syntax you've used is actually pointer arithmetic, but 
giving the benefit of doubt there, and writing it as to_string(DwarfVersion), 
the annoying thing is that CmdArgs wants a 'const char*'.
To get one, you have to call MakeArgString which is a method on Args, not 
CmdArgs, so you have to pass both.
I did that in the latest patch, see what you think.


http://reviews.llvm.org/D13221



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D13221: Make CompilerInvocation's use of the debug options more understandable.

2015-10-07 Thread Douglas Katzman via cfe-commits
dougk marked an inline comment as done.
dougk added a comment.

http://reviews.llvm.org/D13221



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D11983: Make getToolChain actually cache its result, as documented in Driver.h

2015-08-12 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added a reviewer: chandlerc.
dougk added a subscriber: cfe-commits.

http://reviews.llvm.org/D11983

Files:
  lib/Driver/Driver.cpp

Index: lib/Driver/Driver.cpp
===
--- lib/Driver/Driver.cpp
+++ lib/Driver/Driver.cpp
@@ -2248,6 +2248,7 @@
 TC = new toolchains::Generic_GCC(*this, Target, Args);
   break;
 }
+ToolChains[Target.str()] = TC;
   }
   return *TC;
 }


Index: lib/Driver/Driver.cpp
===
--- lib/Driver/Driver.cpp
+++ lib/Driver/Driver.cpp
@@ -2248,6 +2248,7 @@
 TC = new toolchains::Generic_GCC(*this, Target, Args);
   break;
 }
+ToolChains[Target.str()] = TC;
   }
   return *TC;
 }
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r244791 - Don't compare getArchName() to "tce" as a string. NFC.

2015-08-12 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Aug 12 13:36:12 2015
New Revision: 244791

URL: http://llvm.org/viewvc/llvm-project?rev=244791&view=rev
Log:
Don't compare getArchName() to "tce" as a string. NFC.

Modified:
cfe/trunk/lib/Driver/Driver.cpp

Modified: cfe/trunk/lib/Driver/Driver.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=244791&r1=244790&r2=244791&view=diff
==
--- cfe/trunk/lib/Driver/Driver.cpp (original)
+++ cfe/trunk/lib/Driver/Driver.cpp Wed Aug 12 13:36:12 2015
@@ -325,7 +325,8 @@ static llvm::Triple computeTargetTriple(
   }
 
   // Skip further flag support on OSes which don't support '-m32' or '-m64'.
-  if (Target.getArchName() == "tce" || Target.getOS() == llvm::Triple::Minix)
+  if (Target.getArch() == llvm::Triple::tce ||
+  Target.getOS() == llvm::Triple::Minix)
 return Target;
 
   // Handle pseudo-target flags '-m64', '-mx32', '-m32' and '-m16'.
@@ -2232,21 +2233,27 @@ const ToolChain &Driver::getToolChain(co
 default:
   // Of these targets, Hexagon is the only one that might have
   // an OS of Linux, in which case it got handled above already.
-  if (Target.getArchName() == "tce")
+  switch (Target.getArch()) {
+  case llvm::Triple::tce:
 TC = new toolchains::TCEToolChain(*this, Target, Args);
-  else if (Target.getArch() == llvm::Triple::hexagon)
+break;
+  case llvm::Triple::hexagon:
 TC = new toolchains::HexagonToolChain(*this, Target, Args);
-  else if (Target.getArch() == llvm::Triple::xcore)
+break;
+  case llvm::Triple::xcore:
 TC = new toolchains::XCoreToolChain(*this, Target, Args);
-  else if (Target.getArch() == llvm::Triple::shave)
+break;
+  case llvm::Triple::shave:
 TC = new toolchains::SHAVEToolChain(*this, Target, Args);
-  else if (Target.isOSBinFormatELF())
-TC = new toolchains::Generic_ELF(*this, Target, Args);
-  else if (Target.isOSBinFormatMachO())
-TC = new toolchains::MachO(*this, Target, Args);
-  else
-TC = new toolchains::Generic_GCC(*this, Target, Args);
-  break;
+break;
+  default:
+if (Target.isOSBinFormatELF())
+  TC = new toolchains::Generic_ELF(*this, Target, Args);
+else if (Target.isOSBinFormatMachO())
+  TC = new toolchains::MachO(*this, Target, Args);
+else
+  TC = new toolchains::Generic_GCC(*this, Target, Args);
+  }
 }
   }
   return *TC;


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D11991: Represent 2 parallel string arrays as one string[][2] array.

2015-08-12 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added a reviewer: chandlerc.
dougk added a subscriber: cfe-commits.

I think this conveys the intent better. Alternatively, since it's effectively 
trying to take llvm::sys::path::parent_path() for a number of times determined 
by the occurrences of '/' in one string, we could just do that without storing 
the string of dot-dot-slashes although syntactic processing of pathnames is not 
quite the same as semantic processing (via the actual filesystem).

http://reviews.llvm.org/D11991

Files:
  lib/Driver/ToolChains.cpp

Index: lib/Driver/ToolChains.cpp
===
--- lib/Driver/ToolChains.cpp
+++ lib/Driver/ToolChains.cpp
@@ -1914,34 +1914,33 @@
   llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
   // There are various different suffixes involving the triple we
   // check for. We also record what is necessary to walk from each back
-  // up to the lib directory.
-  const std::string LibSuffixes[] = {
-  "/gcc/" + CandidateTriple.str(),
+  // up to the lib directory. Specifically, the number of "up" steps
+  // in the second half of each row is 1 + the number of path separators
+  // in the first half.
+  const std::string LibAndInstallSuffixes[][2] = {
+  {"/gcc/" + CandidateTriple.str(), "/../../.."},
+
   // Debian puts cross-compilers in gcc-cross
-  "/gcc-cross/" + CandidateTriple.str(),
-  "/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
+  {"/gcc-cross/" + CandidateTriple.str(), "/../../.."},
+
+  {"/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
+   "/../../../.."},
 
   // The Freescale PPC SDK has the gcc libraries in
   // /usr/lib//x.y.z so have a look there as well.
-  "/" + CandidateTriple.str(),
+  {"/" + CandidateTriple.str(), "/../.."},
 
   // Ubuntu has a strange mis-matched pair of triples that this happens to
   // match.
   // FIXME: It may be worthwhile to generalize this and look for a second
   // triple.
-  "/i386-linux-gnu/gcc/" + CandidateTriple.str()};
-  const std::string InstallSuffixes[] = {
-  "/../../..",// gcc/
-  "/../../..",// gcc-cross/
-  "/../../../..", // /gcc/
-  "/../..",   // /
-  "/../../../.."  // i386-linux-gnu/gcc//
-  };
+  {"/i386-linux-gnu/gcc/" + CandidateTriple.str(), "/../../../.."}};
+
   // Only look at the final, weird Ubuntu suffix for i386-linux-gnu.
-  const unsigned NumLibSuffixes =
-  (llvm::array_lengthof(LibSuffixes) - (TargetArch != llvm::Triple::x86));
+  const unsigned NumLibSuffixes = (llvm::array_lengthof(LibAndInstallSuffixes) 
-
+   (TargetArch != llvm::Triple::x86));
   for (unsigned i = 0; i < NumLibSuffixes; ++i) {
-StringRef LibSuffix = LibSuffixes[i];
+StringRef LibSuffix = LibAndInstallSuffixes[i][0];
 std::error_code EC;
 for (llvm::sys::fs::directory_iterator LI(LibDir + LibSuffix, EC), LE;
  !EC && LI != LE; LI = LI.increment(EC)) {
@@ -1975,8 +1974,9 @@
   // FIXME: We hack together the directory name here instead of
   // using LI to ensure stable path separators across Windows and
   // Linux.
-  GCCInstallPath = LibDir + LibSuffixes[i] + "/" + VersionText.str();
-  GCCParentLibPath = GCCInstallPath + InstallSuffixes[i];
+  GCCInstallPath =
+  LibDir + LibAndInstallSuffixes[i][0] + "/" + VersionText.str();
+  GCCParentLibPath = GCCInstallPath + LibAndInstallSuffixes[i][1];
   IsValid = true;
 }
   }


Index: lib/Driver/ToolChains.cpp
===
--- lib/Driver/ToolChains.cpp
+++ lib/Driver/ToolChains.cpp
@@ -1914,34 +1914,33 @@
   llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
   // There are various different suffixes involving the triple we
   // check for. We also record what is necessary to walk from each back
-  // up to the lib directory.
-  const std::string LibSuffixes[] = {
-  "/gcc/" + CandidateTriple.str(),
+  // up to the lib directory. Specifically, the number of "up" steps
+  // in the second half of each row is 1 + the number of path separators
+  // in the first half.
+  const std::string LibAndInstallSuffixes[][2] = {
+  {"/gcc/" + CandidateTriple.str(), "/../../.."},
+
   // Debian puts cross-compilers in gcc-cross
-  "/gcc-cross/" + CandidateTriple.str(),
-  "/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
+  {"/gcc-cross/" + CandidateTriple.str(), "/../../.."},
+
+  {"/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
+   "/../../../.."},
 
   // The Freescale PPC SDK has the gcc libraries in
   // /usr/lib//x.y.z so have a look there as well.
-  "/" + CandidateTriple.str(),
+  {"/" + CandidateTriple.str(), "/../.."},
 
   // Ubuntu has a strange mis-matched pair of triples that this happens to
   // match.
   // FIXME: I

Re: [PATCH] D11991: Represent 2 parallel string arrays as one string[][2] array.

2015-08-14 Thread Douglas Katzman via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL245063: Represent 2 parallel string arrays as one 
string[][2] array. (authored by dougk).

Changed prior to commit:
  http://reviews.llvm.org/D11991?vs=31977&id=32157#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D11991

Files:
  cfe/trunk/lib/Driver/ToolChains.cpp

Index: cfe/trunk/lib/Driver/ToolChains.cpp
===
--- cfe/trunk/lib/Driver/ToolChains.cpp
+++ cfe/trunk/lib/Driver/ToolChains.cpp
@@ -1914,34 +1914,33 @@
   llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
   // There are various different suffixes involving the triple we
   // check for. We also record what is necessary to walk from each back
-  // up to the lib directory.
-  const std::string LibSuffixes[] = {
-  "/gcc/" + CandidateTriple.str(),
+  // up to the lib directory. Specifically, the number of "up" steps
+  // in the second half of each row is 1 + the number of path separators
+  // in the first half.
+  const std::string LibAndInstallSuffixes[][2] = {
+  {"/gcc/" + CandidateTriple.str(), "/../../.."},
+
   // Debian puts cross-compilers in gcc-cross
-  "/gcc-cross/" + CandidateTriple.str(),
-  "/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
+  {"/gcc-cross/" + CandidateTriple.str(), "/../../.."},
+
+  {"/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
+   "/../../../.."},
 
   // The Freescale PPC SDK has the gcc libraries in
   // /usr/lib//x.y.z so have a look there as well.
-  "/" + CandidateTriple.str(),
+  {"/" + CandidateTriple.str(), "/../.."},
 
   // Ubuntu has a strange mis-matched pair of triples that this happens to
   // match.
   // FIXME: It may be worthwhile to generalize this and look for a second
   // triple.
-  "/i386-linux-gnu/gcc/" + CandidateTriple.str()};
-  const std::string InstallSuffixes[] = {
-  "/../../..",// gcc/
-  "/../../..",// gcc-cross/
-  "/../../../..", // /gcc/
-  "/../..",   // /
-  "/../../../.."  // i386-linux-gnu/gcc//
-  };
+  {"/i386-linux-gnu/gcc/" + CandidateTriple.str(), "/../../../.."}};
+
   // Only look at the final, weird Ubuntu suffix for i386-linux-gnu.
-  const unsigned NumLibSuffixes =
-  (llvm::array_lengthof(LibSuffixes) - (TargetArch != llvm::Triple::x86));
+  const unsigned NumLibSuffixes = (llvm::array_lengthof(LibAndInstallSuffixes) 
-
+   (TargetArch != llvm::Triple::x86));
   for (unsigned i = 0; i < NumLibSuffixes; ++i) {
-StringRef LibSuffix = LibSuffixes[i];
+StringRef LibSuffix = LibAndInstallSuffixes[i][0];
 std::error_code EC;
 for (llvm::sys::fs::directory_iterator LI(LibDir + LibSuffix, EC), LE;
  !EC && LI != LE; LI = LI.increment(EC)) {
@@ -1975,8 +1974,9 @@
   // FIXME: We hack together the directory name here instead of
   // using LI to ensure stable path separators across Windows and
   // Linux.
-  GCCInstallPath = LibDir + LibSuffixes[i] + "/" + VersionText.str();
-  GCCParentLibPath = GCCInstallPath + InstallSuffixes[i];
+  GCCInstallPath =
+  LibDir + LibAndInstallSuffixes[i][0] + "/" + VersionText.str();
+  GCCParentLibPath = GCCInstallPath + LibAndInstallSuffixes[i][1];
   IsValid = true;
 }
   }


Index: cfe/trunk/lib/Driver/ToolChains.cpp
===
--- cfe/trunk/lib/Driver/ToolChains.cpp
+++ cfe/trunk/lib/Driver/ToolChains.cpp
@@ -1914,34 +1914,33 @@
   llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
   // There are various different suffixes involving the triple we
   // check for. We also record what is necessary to walk from each back
-  // up to the lib directory.
-  const std::string LibSuffixes[] = {
-  "/gcc/" + CandidateTriple.str(),
+  // up to the lib directory. Specifically, the number of "up" steps
+  // in the second half of each row is 1 + the number of path separators
+  // in the first half.
+  const std::string LibAndInstallSuffixes[][2] = {
+  {"/gcc/" + CandidateTriple.str(), "/../../.."},
+
   // Debian puts cross-compilers in gcc-cross
-  "/gcc-cross/" + CandidateTriple.str(),
-  "/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
+  {"/gcc-cross/" + CandidateTriple.str(), "/../../.."},
+
+  {"/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
+   "/../../../.."},
 
   // The Freescale PPC SDK has the gcc libraries in
   // /usr/lib//x.y.z so have a look there as well.
-  "/" + CandidateTriple.str(),
+  {"/" + CandidateTriple.str(), "/../.."},
 
   // Ubuntu has a strange mis-matched pair of triples that this happens to
   // match.
   // FIXME: It may be worthwhile to generalize this and look for a second
   // triple.
-  "/i386-linux-gnu/gcc/" + CandidateTriple.str()}

r245063 - Represent 2 parallel string arrays as one string[][2] array.

2015-08-14 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Fri Aug 14 10:52:12 2015
New Revision: 245063

URL: http://llvm.org/viewvc/llvm-project?rev=245063&view=rev
Log:
Represent 2 parallel string arrays as one string[][2] array.

Differential Revision: http://reviews.llvm.org/D11991

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=245063&r1=245062&r2=245063&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Fri Aug 14 10:52:12 2015
@@ -1914,34 +1914,33 @@ void Generic_GCC::GCCInstallationDetecto
   llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
   // There are various different suffixes involving the triple we
   // check for. We also record what is necessary to walk from each back
-  // up to the lib directory.
-  const std::string LibSuffixes[] = {
-  "/gcc/" + CandidateTriple.str(),
+  // up to the lib directory. Specifically, the number of "up" steps
+  // in the second half of each row is 1 + the number of path separators
+  // in the first half.
+  const std::string LibAndInstallSuffixes[][2] = {
+  {"/gcc/" + CandidateTriple.str(), "/../../.."},
+
   // Debian puts cross-compilers in gcc-cross
-  "/gcc-cross/" + CandidateTriple.str(),
-  "/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
+  {"/gcc-cross/" + CandidateTriple.str(), "/../../.."},
+
+  {"/" + CandidateTriple.str() + "/gcc/" + CandidateTriple.str(),
+   "/../../../.."},
 
   // The Freescale PPC SDK has the gcc libraries in
   // /usr/lib//x.y.z so have a look there as well.
-  "/" + CandidateTriple.str(),
+  {"/" + CandidateTriple.str(), "/../.."},
 
   // Ubuntu has a strange mis-matched pair of triples that this happens to
   // match.
   // FIXME: It may be worthwhile to generalize this and look for a second
   // triple.
-  "/i386-linux-gnu/gcc/" + CandidateTriple.str()};
-  const std::string InstallSuffixes[] = {
-  "/../../..",// gcc/
-  "/../../..",// gcc-cross/
-  "/../../../..", // /gcc/
-  "/../..",   // /
-  "/../../../.."  // i386-linux-gnu/gcc//
-  };
+  {"/i386-linux-gnu/gcc/" + CandidateTriple.str(), "/../../../.."}};
+
   // Only look at the final, weird Ubuntu suffix for i386-linux-gnu.
-  const unsigned NumLibSuffixes =
-  (llvm::array_lengthof(LibSuffixes) - (TargetArch != llvm::Triple::x86));
+  const unsigned NumLibSuffixes = (llvm::array_lengthof(LibAndInstallSuffixes) 
-
+   (TargetArch != llvm::Triple::x86));
   for (unsigned i = 0; i < NumLibSuffixes; ++i) {
-StringRef LibSuffix = LibSuffixes[i];
+StringRef LibSuffix = LibAndInstallSuffixes[i][0];
 std::error_code EC;
 for (llvm::sys::fs::directory_iterator LI(LibDir + LibSuffix, EC), LE;
  !EC && LI != LE; LI = LI.increment(EC)) {
@@ -1975,8 +1974,9 @@ void Generic_GCC::GCCInstallationDetecto
   // FIXME: We hack together the directory name here instead of
   // using LI to ensure stable path separators across Windows and
   // Linux.
-  GCCInstallPath = LibDir + LibSuffixes[i] + "/" + VersionText.str();
-  GCCParentLibPath = GCCInstallPath + InstallSuffixes[i];
+  GCCInstallPath =
+  LibDir + LibAndInstallSuffixes[i][0] + "/" + VersionText.str();
+  GCCParentLibPath = GCCInstallPath + LibAndInstallSuffixes[i][1];
   IsValid = true;
 }
   }


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D12201: [Sparc] Add '-EL' when invoking gcc to link little-endian binaries.

2015-08-20 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added a reviewer: jyknight.
dougk added a subscriber: cfe-commits.

http://reviews.llvm.org/D12201

Files:
  lib/Driver/Tools.cpp
  test/Driver/biarch.c

Index: test/Driver/biarch.c
===
--- test/Driver/biarch.c
+++ test/Driver/biarch.c
@@ -28,6 +28,9 @@
 // RUN: %clang -target sparc--netbsd -m64 %s -### 2> %t
 // RUN: grep '"-cc1" "-triple" "sparcv9--netbsd"' %t
 
+// RUN: %clang -target sparcel -o foo %s -### 2> %t
+// RUN: grep 'gcc" "-EL" "-o" "foo"' %t
+
 // RUN: %clang -target mips64--netbsd -m32 %s -### 2> %t
 // RUN: grep '"-cc1" "-triple" "mips--netbsd"' %t
 
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -5617,12 +5617,22 @@
   //
   // FIXME: The triple class should directly provide the information we want
   // here.
-  const llvm::Triple::ArchType Arch = getToolChain().getArch();
-  if (Arch == llvm::Triple::x86 || Arch == llvm::Triple::ppc)
+  switch (getToolChain().getArch()) {
+  default:
+break;
+  case llvm::Triple::x86:
+  case llvm::Triple::ppc:
 CmdArgs.push_back("-m32");
-  else if (Arch == llvm::Triple::x86_64 || Arch == llvm::Triple::ppc64 ||
-   Arch == llvm::Triple::ppc64le)
+break;
+  case llvm::Triple::x86_64:
+  case llvm::Triple::ppc64:
+  case llvm::Triple::ppc64le:
 CmdArgs.push_back("-m64");
+break;
+  case llvm::Triple::sparcel:
+CmdArgs.push_back("-EL");
+break;
+  }
 
   if (Output.isFilename()) {
 CmdArgs.push_back("-o");


Index: test/Driver/biarch.c
===
--- test/Driver/biarch.c
+++ test/Driver/biarch.c
@@ -28,6 +28,9 @@
 // RUN: %clang -target sparc--netbsd -m64 %s -### 2> %t
 // RUN: grep '"-cc1" "-triple" "sparcv9--netbsd"' %t
 
+// RUN: %clang -target sparcel -o foo %s -### 2> %t
+// RUN: grep 'gcc" "-EL" "-o" "foo"' %t
+
 // RUN: %clang -target mips64--netbsd -m32 %s -### 2> %t
 // RUN: grep '"-cc1" "-triple" "mips--netbsd"' %t
 
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -5617,12 +5617,22 @@
   //
   // FIXME: The triple class should directly provide the information we want
   // here.
-  const llvm::Triple::ArchType Arch = getToolChain().getArch();
-  if (Arch == llvm::Triple::x86 || Arch == llvm::Triple::ppc)
+  switch (getToolChain().getArch()) {
+  default:
+break;
+  case llvm::Triple::x86:
+  case llvm::Triple::ppc:
 CmdArgs.push_back("-m32");
-  else if (Arch == llvm::Triple::x86_64 || Arch == llvm::Triple::ppc64 ||
-   Arch == llvm::Triple::ppc64le)
+break;
+  case llvm::Triple::x86_64:
+  case llvm::Triple::ppc64:
+  case llvm::Triple::ppc64le:
 CmdArgs.push_back("-m64");
+break;
+  case llvm::Triple::sparcel:
+CmdArgs.push_back("-EL");
+break;
+  }
 
   if (Output.isFilename()) {
 CmdArgs.push_back("-o");
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r245595 - [Sparc] Add '-EL' when invoking gcc to link little-endian binaries.

2015-08-20 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Thu Aug 20 13:32:26 2015
New Revision: 245595

URL: http://llvm.org/viewvc/llvm-project?rev=245595&view=rev
Log:
[Sparc] Add '-EL' when invoking gcc to link little-endian binaries.

Differential Revision: http://reviews.llvm.org/D12201

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/biarch.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=245595&r1=245594&r2=245595&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Thu Aug 20 13:32:26 2015
@@ -5617,12 +5617,22 @@ void gcc::Common::ConstructJob(Compilati
   //
   // FIXME: The triple class should directly provide the information we want
   // here.
-  const llvm::Triple::ArchType Arch = getToolChain().getArch();
-  if (Arch == llvm::Triple::x86 || Arch == llvm::Triple::ppc)
+  switch (getToolChain().getArch()) {
+  default:
+break;
+  case llvm::Triple::x86:
+  case llvm::Triple::ppc:
 CmdArgs.push_back("-m32");
-  else if (Arch == llvm::Triple::x86_64 || Arch == llvm::Triple::ppc64 ||
-   Arch == llvm::Triple::ppc64le)
+break;
+  case llvm::Triple::x86_64:
+  case llvm::Triple::ppc64:
+  case llvm::Triple::ppc64le:
 CmdArgs.push_back("-m64");
+break;
+  case llvm::Triple::sparcel:
+CmdArgs.push_back("-EL");
+break;
+  }
 
   if (Output.isFilename()) {
 CmdArgs.push_back("-o");

Modified: cfe/trunk/test/Driver/biarch.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/biarch.c?rev=245595&r1=245594&r2=245595&view=diff
==
--- cfe/trunk/test/Driver/biarch.c (original)
+++ cfe/trunk/test/Driver/biarch.c Thu Aug 20 13:32:26 2015
@@ -28,6 +28,9 @@
 // RUN: %clang -target sparc--netbsd -m64 %s -### 2> %t
 // RUN: grep '"-cc1" "-triple" "sparcv9--netbsd"' %t
 
+// RUN: %clang -target sparcel -o foo %s -### 2> %t
+// RUN: grep 'gcc" "-EL" "-o" "foo"' %t
+
 // RUN: %clang -target mips64--netbsd -m32 %s -### 2> %t
 // RUN: grep '"-cc1" "-triple" "mips--netbsd"' %t
 


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D12201: [Sparc] Add '-EL' when invoking gcc to link little-endian binaries.

2015-08-20 Thread Douglas Katzman via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL245595: [Sparc] Add '-EL' when invoking gcc to link 
little-endian binaries. (authored by dougk).

Changed prior to commit:
  http://reviews.llvm.org/D12201?vs=32715&id=32716#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D12201

Files:
  cfe/trunk/lib/Driver/Tools.cpp
  cfe/trunk/test/Driver/biarch.c

Index: cfe/trunk/lib/Driver/Tools.cpp
===
--- cfe/trunk/lib/Driver/Tools.cpp
+++ cfe/trunk/lib/Driver/Tools.cpp
@@ -5617,12 +5617,22 @@
   //
   // FIXME: The triple class should directly provide the information we want
   // here.
-  const llvm::Triple::ArchType Arch = getToolChain().getArch();
-  if (Arch == llvm::Triple::x86 || Arch == llvm::Triple::ppc)
+  switch (getToolChain().getArch()) {
+  default:
+break;
+  case llvm::Triple::x86:
+  case llvm::Triple::ppc:
 CmdArgs.push_back("-m32");
-  else if (Arch == llvm::Triple::x86_64 || Arch == llvm::Triple::ppc64 ||
-   Arch == llvm::Triple::ppc64le)
+break;
+  case llvm::Triple::x86_64:
+  case llvm::Triple::ppc64:
+  case llvm::Triple::ppc64le:
 CmdArgs.push_back("-m64");
+break;
+  case llvm::Triple::sparcel:
+CmdArgs.push_back("-EL");
+break;
+  }
 
   if (Output.isFilename()) {
 CmdArgs.push_back("-o");
Index: cfe/trunk/test/Driver/biarch.c
===
--- cfe/trunk/test/Driver/biarch.c
+++ cfe/trunk/test/Driver/biarch.c
@@ -28,6 +28,9 @@
 // RUN: %clang -target sparc--netbsd -m64 %s -### 2> %t
 // RUN: grep '"-cc1" "-triple" "sparcv9--netbsd"' %t
 
+// RUN: %clang -target sparcel -o foo %s -### 2> %t
+// RUN: grep 'gcc" "-EL" "-o" "foo"' %t
+
 // RUN: %clang -target mips64--netbsd -m32 %s -### 2> %t
 // RUN: grep '"-cc1" "-triple" "mips--netbsd"' %t
 


Index: cfe/trunk/lib/Driver/Tools.cpp
===
--- cfe/trunk/lib/Driver/Tools.cpp
+++ cfe/trunk/lib/Driver/Tools.cpp
@@ -5617,12 +5617,22 @@
   //
   // FIXME: The triple class should directly provide the information we want
   // here.
-  const llvm::Triple::ArchType Arch = getToolChain().getArch();
-  if (Arch == llvm::Triple::x86 || Arch == llvm::Triple::ppc)
+  switch (getToolChain().getArch()) {
+  default:
+break;
+  case llvm::Triple::x86:
+  case llvm::Triple::ppc:
 CmdArgs.push_back("-m32");
-  else if (Arch == llvm::Triple::x86_64 || Arch == llvm::Triple::ppc64 ||
-   Arch == llvm::Triple::ppc64le)
+break;
+  case llvm::Triple::x86_64:
+  case llvm::Triple::ppc64:
+  case llvm::Triple::ppc64le:
 CmdArgs.push_back("-m64");
+break;
+  case llvm::Triple::sparcel:
+CmdArgs.push_back("-EL");
+break;
+  }
 
   if (Output.isFilename()) {
 CmdArgs.push_back("-o");
Index: cfe/trunk/test/Driver/biarch.c
===
--- cfe/trunk/test/Driver/biarch.c
+++ cfe/trunk/test/Driver/biarch.c
@@ -28,6 +28,9 @@
 // RUN: %clang -target sparc--netbsd -m64 %s -### 2> %t
 // RUN: grep '"-cc1" "-triple" "sparcv9--netbsd"' %t
 
+// RUN: %clang -target sparcel -o foo %s -### 2> %t
+// RUN: grep 'gcc" "-EL" "-o" "foo"' %t
+
 // RUN: %clang -target mips64--netbsd -m32 %s -### 2> %t
 // RUN: grep '"-cc1" "-triple" "mips--netbsd"' %t
 
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D12541: [Sparc][Shave]: Empower the toolchain formerly known as SHAVE to do more.

2015-09-01 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added reviewers: jyknight, chandlerc.
dougk added a subscriber: cfe-commits.
Herald added a subscriber: jyknight.

Rename SHAVE toolchain to  Myriad toolchain.
Run the Myriad linker whenever the vendor [sic] is Myriad.
Also recognize RTEMS as the OS, and do something special for that.

(work-in-progress)

http://reviews.llvm.org/D12541

Files:
  lib/Driver/Driver.cpp
  lib/Driver/ToolChains.cpp
  lib/Driver/ToolChains.h
  lib/Driver/Tools.cpp
  lib/Driver/Tools.h

Index: lib/Driver/Tools.h
===
--- lib/Driver/Tools.h
+++ lib/Driver/Tools.h
@@ -792,6 +792,17 @@
 const llvm::opt::ArgList &TCArgs,
 const char *LinkingOutput) const override;
 };
+
+class LLVM_LIBRARY_VISIBILITY Linker : public GnuTool {
+public:
+  Linker(const ToolChain &TC) : GnuTool("shave::Linker", "ld", TC) {}
+  bool hasIntegratedCPP() const override { return false; }
+  bool isLinkJob() const override { return true; }
+  void ConstructJob(Compilation &C, const JobAction &JA,
+const InputInfo &Output, const InputInfoList &Inputs,
+const llvm::opt::ArgList &TCArgs,
+const char *LinkingOutput) const override;
+};
 } // end namespace SHAVE
 
 } // end namespace tools
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -9651,3 +9651,78 @@
   C.addCommand(llvm::make_unique(JA, *this, Args.MakeArgString(Exec),
   CmdArgs, Inputs));
 }
+
+void tools::SHAVE::Linker::ConstructJob(Compilation &C, const JobAction &JA,
+const InputInfo &Output,
+const InputInfoList &Inputs,
+const ArgList &Args,
+const char *LinkingOutput) const {
+  const auto &TC =
+  static_cast(getToolChain());
+  const llvm::Triple &T = TC.getTriple();
+  ArgStringList CmdArgs;
+
+  SmallString<128> CrtObjDir;
+  TC.getCompilerSupportDir(CrtObjDir);
+
+  CmdArgs.push_back("-EL"); // Endianness = little
+
+  // The remaining logic is mostly like gnutools::Linker::ConstructJob,
+  // but we never pass through a --sysroot option and various other bits.
+  // For example, there are no sanitizers (yet) nor gold linker.
+
+  // Silence warning for "clang -g foo.o -o foo"
+  Args.ClaimAllArgs(options::OPT_g_Group);
+  // and for "clang -w foo.o -o foo". Other warning options are already
+  // handled somewhere else.
+  Args.ClaimAllArgs(options::OPT_w);
+  if (Args.hasArg(options::OPT_s)) // Pass the 'strip' option.
+CmdArgs.push_back("-s");
+
+  CmdArgs.push_back("-o");
+  CmdArgs.push_back(Output.getFilename());
+
+  if (T.getOS() == llvm::Triple::RTEMS) {
+SmallString<128> Path1(CrtObjDir), Path2(CrtObjDir);
+llvm::sys::path::append(Path1, "crti.o");
+llvm::sys::path::append(Path2, "crtbegin.o");
+CmdArgs.push_back(Args.MakeArgString(Path1));
+CmdArgs.push_back(Args.MakeArgString(Path2));
+  }
+
+  Args.AddAllArgs(CmdArgs, {options::OPT_L, options::OPT_T_Group,
+options::OPT_e, options::OPT_s, options::OPT_t,
+options::OPT_Z_Flag, options::OPT_r});
+
+  // The linker doesn't use these builtin paths unless directed to.
+  SmallString<128> LibDir;
+  TC.getBuiltinLibDir(LibDir);
+  CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibDir));
+  CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + CrtObjDir));
+
+  AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
+
+  if (T.getOS() == llvm::Triple::RTEMS) {
+CmdArgs.push_back("--start-group");
+CmdArgs.push_back("-lg");
+CmdArgs.push_back("-lrtemscpu");
+CmdArgs.push_back("-lrtemsbsp");
+CmdArgs.push_back("--end-group");
+  }
+  CmdArgs.push_back("-lgcc");
+  if (C.getDriver().CCCIsCXX())
+CmdArgs.push_back("-lstdc++");
+
+  if (T.getOS() == llvm::Triple::RTEMS) {
+SmallString<128> Path1(CrtObjDir), Path2(CrtObjDir);
+llvm::sys::path::append(Path1, "crtend.o");
+llvm::sys::path::append(Path2, "crtn.o");
+CmdArgs.push_back(Args.MakeArgString(Path1));
+CmdArgs.push_back(Args.MakeArgString(Path2));
+  }
+
+  std::string Exec =
+  Args.MakeArgString(TC.GetProgramPath("sparc-myriad-elf-ld"));
+  C.addCommand(llvm::make_unique(JA, *this, Args.MakeArgString(Exec),
+  CmdArgs, Inputs));
+}
Index: lib/Driver/ToolChains.h
===
--- lib/Driver/ToolChains.h
+++ lib/Driver/ToolChains.h
@@ -101,7 +101,8 @@
   public:
 GCCInstallationDetector() : IsValid(false) {}
 void init(const Driver &D, const llvm::Triple &TargetTriple,
-  const llvm::opt::ArgList &Args);
+  const llvm::opt::ArgList &A

Re: [PATCH] D12541: [Sparc][Shave]: Empower the toolchain formerly known as SHAVE to do more.

2015-09-01 Thread Douglas Katzman via cfe-commits
dougk updated the summary for this revision.
dougk updated this revision to Diff 33778.
dougk added a comment.

Revised tests.


http://reviews.llvm.org/D12541

Files:
  lib/Driver/Driver.cpp
  lib/Driver/ToolChains.cpp
  lib/Driver/ToolChains.h
  lib/Driver/Tools.cpp
  lib/Driver/Tools.h
  test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtbegin.o
  test/Driver/shave-toolchain.c

Index: test/Driver/shave-toolchain.c
===
--- test/Driver/shave-toolchain.c
+++ test/Driver/shave-toolchain.c
@@ -1,3 +1,9 @@
+// RUN: %clang -no-canonical-prefixes -### -target sparc-myriad-rtems-elf %s \
+// RUN: -B %S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s -check-prefix=LINK_WITH_RTEMS
+// LINK_WITH_RTEMS: crti.o
+// LINK_WITH_RTEMS: crtbegin.o
+// LINK_WITH_RTEMS: -lrtems
+
 // Ensure that '-target shave' picks a different compiler.
 // Also check that '-I' is turned into '-i:' for the assembler.
 
@@ -8,20 +14,20 @@
 // As such, we test only for a trailing quote in its rendering.
 // The same goes for "moviAsm".
 
-// RUN: %clang -target shave -c -### %s -Icommon 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -Icommon 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
 // MOVICOMPILE: moviCompile" "-DMYRIAD2" "-mcpu=myriad2" "-S" "-I" "common"
 // MOVICOMPILE: moviAsm" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" "-a" "-i:common" "-elf"
 
-// RUN: %clang -target shave -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=DEFINES
 // DEFINES: "-D" "EFINE_ME" "-U" "NDEFINE_ME"
 
-// RUN: %clang -target shave -c -### %s -Icommon -iquote quotepath -isystem syspath 2>&1 \
+// RUN: %clang -target shave-myriad -c -### %s -Icommon -iquote quotepath -isystem syspath 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=INCLUDES
 // INCLUDES: "-iquote" "quotepath" "-isystem" "syspath"
 
-// RUN: %clang -target shave -c -### %s -g -fno-inline-functions \
+// RUN: %clang -target shave-myriad -c -### %s -g -fno-inline-functions \
 // RUN: -fno-inline-functions-called-once -Os -Wall \
 // RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=F_G_O_W_OPTIONS
 // F_G_O_W_OPTIONS: "-g" "-fno-inline-functions" "-fno-inline-functions-called-once"
Index: lib/Driver/Tools.h
===
--- lib/Driver/Tools.h
+++ lib/Driver/Tools.h
@@ -792,6 +792,17 @@
 const llvm::opt::ArgList &TCArgs,
 const char *LinkingOutput) const override;
 };
+
+class LLVM_LIBRARY_VISIBILITY Linker : public GnuTool {
+public:
+  Linker(const ToolChain &TC) : GnuTool("shave::Linker", "ld", TC) {}
+  bool hasIntegratedCPP() const override { return false; }
+  bool isLinkJob() const override { return true; }
+  void ConstructJob(Compilation &C, const JobAction &JA,
+const InputInfo &Output, const InputInfoList &Inputs,
+const llvm::opt::ArgList &TCArgs,
+const char *LinkingOutput) const override;
+};
 } // end namespace SHAVE
 
 } // end namespace tools
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -9651,3 +9651,81 @@
   C.addCommand(llvm::make_unique(JA, *this, Args.MakeArgString(Exec),
   CmdArgs, Inputs));
 }
+
+void tools::SHAVE::Linker::ConstructJob(Compilation &C, const JobAction &JA,
+const InputInfo &Output,
+const InputInfoList &Inputs,
+const ArgList &Args,
+const char *LinkingOutput) const {
+  const auto &TC =
+  static_cast(getToolChain());
+  const llvm::Triple &T = TC.getTriple();
+  ArgStringList CmdArgs;
+  bool UseStartfiles = !Args.hasArg(options::OPT_nostartfiles);
+
+  std::string StartFilesDir, BuiltinLibDir;
+  TC.getCompilerSupportDir(StartFilesDir);
+  TC.getBuiltinLibDir(BuiltinLibDir);
+
+  CmdArgs.push_back("-EL"); // Endianness = little
+
+  // The remaining logic is mostly like gnutools::Linker::ConstructJob,
+  // but we never pass through a --sysroot option and various other bits.
+  // For example, there are no sanitizers (yet) nor gold linker.
+
+  // Eat some arguments that may be present but have no effect.
+  Args.ClaimAllArgs(options::OPT_g_Group);
+  Args.ClaimAllArgs(options::OPT_w);
+  Args.ClaimAllArgs(options::OPT_static_libgcc);
+
+  if (Args.hasArg(options::OPT_s)) // Pass the 'strip' option.
+CmdArgs.push_back("-s");
+
+  CmdArgs.push_back("-o");
+  CmdArgs.push_back(Output.getFilename());
+
+  if (UseStartfiles) {
+if (T.getOS() == llvm::Triple::RTEMS) {
+  CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crti.o"));
+  CmdArgs.push_back(A

r246650 - [Sparc]: GCCInstallationDetector should not care if little-endian

2015-09-02 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Sep  2 08:33:42 2015
New Revision: 246650

URL: http://llvm.org/viewvc/llvm-project?rev=246650&view=rev
Log:
[Sparc]: GCCInstallationDetector should not care if little-endian

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=246650&r1=246649&r2=246650&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Wed Sep  2 08:33:42 2015
@@ -1351,7 +1351,6 @@ bool Generic_GCC::GCCInstallationDetecto
   if (TargetTriple.getOS() == llvm::Triple::Solaris) {
 LibDirs.append(begin(SolarisSPARCLibDirs), end(SolarisSPARCLibDirs));
 TripleAliases.append(begin(SolarisSPARCTriples), end(SolarisSPARCTriples));
-
 return;
   }
 
@@ -1448,6 +1447,7 @@ bool Generic_GCC::GCCInstallationDetecto
 TripleAliases.append(begin(PPC64LETriples), end(PPC64LETriples));
 break;
   case llvm::Triple::sparc:
+  case llvm::Triple::sparcel:
 LibDirs.append(begin(SPARCv8LibDirs), end(SPARCv8LibDirs));
 TripleAliases.append(begin(SPARCv8Triples), end(SPARCv8Triples));
 BiarchLibDirs.append(begin(SPARCv9LibDirs), end(SPARCv9LibDirs));


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r246652 - [Shave]: pass through more clang options to moviCompile

2015-09-02 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Sep  2 08:42:43 2015
New Revision: 246652

URL: http://llvm.org/viewvc/llvm-project?rev=246652&view=rev
Log:
[Shave]: pass through more clang options to moviCompile

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/shave-toolchain.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=246652&r1=246651&r2=246652&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Wed Sep  2 08:42:43 2015
@@ -9606,6 +9606,7 @@ void tools::SHAVE::Compiler::ConstructJo
options::OPT_f_Group,
options::OPT_f_clang_Group,
options::OPT_g_Group,
+   options::OPT_M_Group,
options::OPT_O_Group,
options::OPT_W_Group});
   CmdArgs.push_back("-fno-exceptions"); // Always do this even if unspecified.

Modified: cfe/trunk/test/Driver/shave-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/shave-toolchain.c?rev=246652&r1=246651&r2=246652&view=diff
==
--- cfe/trunk/test/Driver/shave-toolchain.c (original)
+++ cfe/trunk/test/Driver/shave-toolchain.c Wed Sep  2 08:42:43 2015
@@ -22,7 +22,7 @@
 // INCLUDES: "-iquote" "quotepath" "-isystem" "syspath"
 
 // RUN: %clang -target shave -c -### %s -g -fno-inline-functions \
-// RUN: -fno-inline-functions-called-once -Os -Wall \
-// RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=F_G_O_W_OPTIONS
-// F_G_O_W_OPTIONS: "-g" "-fno-inline-functions" 
"-fno-inline-functions-called-once"
-// F_G_O_W_OPTIONS: "-Os" "-Wall" "-ffunction-sections"
+// RUN: -fno-inline-functions-called-once -Os -Wall -MF dep.d \
+// RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
+// PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" 
"-fno-inline-functions-called-once"
+// PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r246714 - Use new utility function to clean leading junk from pathnames. NFC

2015-09-02 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Sep  2 16:14:53 2015
New Revision: 246714

URL: http://llvm.org/viewvc/llvm-project?rev=246714&view=rev
Log:
Use new utility function to clean leading junk from pathnames. NFC

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/lib/Frontend/DependencyFile.cpp

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=246714&r1=246713&r2=246714&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Wed Sep  2 16:14:53 2015
@@ -264,6 +264,7 @@ void Clang::AddPreprocessingOptions(Comp
 const char *DepFile;
 if (Arg *MF = Args.getLastArg(options::OPT_MF)) {
   DepFile = MF->getValue();
+  llvm::errs()<<"Your depfile is "getName();
-
-// Remove leading "./" (or ".//" or "././" etc.)
-while (Filename.size() > 2 && Filename[0] == '.' &&
-   llvm::sys::path::is_separator(Filename[1])) {
-  Filename = Filename.substr(1);
-  while (llvm::sys::path::is_separator(Filename[0]))
-Filename = Filename.substr(1);
-}
+StringRef Filename =
+llvm::sys::path::remove_leading_dotslash(FE->getName());
 
 DepCollector.maybeAddDependency(Filename, /*FromModule*/false,
FileType != SrcMgr::C_User,
@@ -295,15 +288,7 @@ void DFGImpl::FileChanged(SourceLocation
   if (!FileMatchesDepCriteria(Filename.data(), FileType))
 return;
 
-  // Remove leading "./" (or ".//" or "././" etc.)
-  while (Filename.size() > 2 && Filename[0] == '.' &&
- llvm::sys::path::is_separator(Filename[1])) {
-Filename = Filename.substr(1);
-while (llvm::sys::path::is_separator(Filename[0]))
-  Filename = Filename.substr(1);
-  }
-
-  AddFilename(Filename);
+  AddFilename(llvm::sys::path::remove_leading_dotslash(Filename));
 }
 
 void DFGImpl::InclusionDirective(SourceLocation HashLoc,


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r246715 - Remove inadvertent debug output from prior change.

2015-09-02 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Sep  2 16:18:10 2015
New Revision: 246715

URL: http://llvm.org/viewvc/llvm-project?rev=246715&view=rev
Log:
Remove inadvertent debug output from prior change.

Modified:
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=246715&r1=246714&r2=246715&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Wed Sep  2 16:18:10 2015
@@ -264,7 +264,6 @@ void Clang::AddPreprocessingOptions(Comp
 const char *DepFile;
 if (Arg *MF = Args.getLastArg(options::OPT_MF)) {
   DepFile = MF->getValue();
-  llvm::errs()<<"Your depfile is "

[PATCH] D12622: [Shave]: add a -MT option to moviCompile if there wasn't one

2015-09-03 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added a reviewer: chandlerc.
dougk added a subscriber: cfe-commits.

http://reviews.llvm.org/D12622

Files:
  lib/Driver/Tools.cpp
  test/Driver/shave-toolchain.c

Index: test/Driver/shave-toolchain.c
===
--- test/Driver/shave-toolchain.c
+++ test/Driver/shave-toolchain.c
@@ -26,3 +26,7 @@
 // RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
 // PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" 
"-fno-inline-functions-called-once"
 // PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"
+
+// RUN: %clang -target shave -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=MDMF
+// MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -9669,15 +9669,27 @@
   // Append all -I, -iquote, -isystem paths, defines/undefines,
   // 'f' flags, optimize flags, and warning options.
   // These are spelled the same way in clang and moviCompile.
-  Args.AddAllArgs(CmdArgs,
-  {options::OPT_I_Group, options::OPT_clang_i_Group,
-   options::OPT_D, options::OPT_U,
-   options::OPT_f_Group,
-   options::OPT_f_clang_Group,
-   options::OPT_g_Group,
-   options::OPT_M_Group,
-   options::OPT_O_Group,
-   options::OPT_W_Group});
+  Args.AddAllArgs(CmdArgs, {options::OPT_I_Group, options::OPT_clang_i_Group,
+options::OPT_D, options::OPT_U,
+options::OPT_f_Group, options::OPT_f_clang_Group,
+options::OPT_g_Group, options::OPT_M_Group,
+options::OPT_O_Group, options::OPT_W_Group});
+
+  // If we're producing a dependency file, and assembly is the final action,
+  // then the name of the target in the dependency file should be the '.o'
+  // file, not the '.s' file produced by this step. For example, instead of
+  //  /tmp/mumble.s: mumble.c .../someheader.h
+  // the filename on the lefthand side should be "mumble.o"
+  if (Args.getLastArg(options::OPT_MF) && !Args.getLastArg(options::OPT_MT) &&
+  C.getActions().size() == 1 &&
+  C.getActions()[0]->getKind() == Action::AssembleJobClass) {
+Arg *A = Args.getLastArg(options::OPT_o);
+if (A) {
+  CmdArgs.push_back("-MT");
+  CmdArgs.push_back(Args.MakeArgString(A->getValue()));
+}
+  }
+
   CmdArgs.push_back("-fno-exceptions"); // Always do this even if unspecified.
 
   CmdArgs.push_back(II.getFilename());


Index: test/Driver/shave-toolchain.c
===
--- test/Driver/shave-toolchain.c
+++ test/Driver/shave-toolchain.c
@@ -26,3 +26,7 @@
 // RUN: -ffunction-sections 2>&1 | FileCheck %s -check-prefix=PASSTHRU_OPTIONS
 // PASSTHRU_OPTIONS: "-g" "-fno-inline-functions" "-fno-inline-functions-called-once"
 // PASSTHRU_OPTIONS: "-Os" "-Wall" "-MF" "dep.d" "-ffunction-sections"
+
+// RUN: %clang -target shave -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=MDMF
+// MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -9669,15 +9669,27 @@
   // Append all -I, -iquote, -isystem paths, defines/undefines,
   // 'f' flags, optimize flags, and warning options.
   // These are spelled the same way in clang and moviCompile.
-  Args.AddAllArgs(CmdArgs,
-  {options::OPT_I_Group, options::OPT_clang_i_Group,
-   options::OPT_D, options::OPT_U,
-   options::OPT_f_Group,
-   options::OPT_f_clang_Group,
-   options::OPT_g_Group,
-   options::OPT_M_Group,
-   options::OPT_O_Group,
-   options::OPT_W_Group});
+  Args.AddAllArgs(CmdArgs, {options::OPT_I_Group, options::OPT_clang_i_Group,
+options::OPT_D, options::OPT_U,
+options::OPT_f_Group, options::OPT_f_clang_Group,
+options::OPT_g_Group, options::OPT_M_Group,
+options::OPT_O_Group, options::OPT_W_Group});
+
+  // If we're producing a dependency file, and assembly is the final action,
+  // then the name of the target in the dependency file should be the '.o'
+  // file, not the '.s' file produced by this step. For example, instead of
+  //  /tmp/mumble.s: mumble.c .../someheader.h
+  // the filename on the lefthand side should be "mumble.o"
+  if (Args.getLastArg(options::OPT_MF) && !Args.getLastArg(options::OPT_MT) &&
+  C.getActions().size() == 1 &&
+  C.getActions()[0]->getKind() == Action::AssembleJobClass) {
+ 

r249657 - Unbreak 'debug-options' test when builder is Darwin

2015-10-07 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Thu Oct  8 00:02:24 2015
New Revision: 249657

URL: http://llvm.org/viewvc/llvm-project?rev=249657&view=rev
Log:
Unbreak 'debug-options' test when builder is Darwin

Modified:
cfe/trunk/test/Driver/debug-options.c

Modified: cfe/trunk/test/Driver/debug-options.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/debug-options.c?rev=249657&r1=249656&r2=249657&view=diff
==
--- cfe/trunk/test/Driver/debug-options.c (original)
+++ cfe/trunk/test/Driver/debug-options.c Thu Oct  8 00:02:24 2015
@@ -126,4 +126,4 @@
 //
 // NOCI-NOT: "-dwarf-column-info"
 //
-// GEXTREFS: "-dwarf-ext-refs" "-fmodule-format=obj" "-debug-info-kind=limited"
+// GEXTREFS: "-dwarf-ext-refs" "-fmodule-format=obj" 
"-debug-info-kind={{standalone|limited}}"


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r249658 - Use itostr(), not std::to_string() because of Android.

2015-10-07 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Thu Oct  8 00:25:03 2015
New Revision: 249658

URL: http://llvm.org/viewvc/llvm-project?rev=249658&view=rev
Log:
Use itostr(), not std::to_string() because of Android.

Modified:
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=249658&r1=249657&r2=249658&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Thu Oct  8 00:25:03 2015
@@ -2353,7 +2353,7 @@ static void RenderDebugEnablingArgs(cons
   }
   if (DwarfVersion > 0)
 CmdArgs.push_back(
-Args.MakeArgString("-dwarf-version=" + std::to_string(DwarfVersion)));
+Args.MakeArgString("-dwarf-version=" + llvm::itostr(DwarfVersion)));
 }
 
 static void CollectArgsForIntegratedAssembler(Compilation &C,


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r249692 - [Myriad]: default the Dwarf version to 2

2015-10-08 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Thu Oct  8 09:18:02 2015
New Revision: 249692

URL: http://llvm.org/viewvc/llvm-project?rev=249692&view=rev
Log:
[Myriad]: default the Dwarf version to 2

Modified:
cfe/trunk/lib/Driver/ToolChains.h
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/lib/Driver/ToolChains.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=249692&r1=249691&r2=249692&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.h (original)
+++ cfe/trunk/lib/Driver/ToolChains.h Thu Oct  8 09:18:02 2015
@@ -981,6 +981,7 @@ public:
   Tool *SelectTool(const JobAction &JA) const override;
   void getCompilerSupportDir(std::string &Dir) const;
   void getBuiltinLibDir(std::string &Dir) const;
+  unsigned GetDefaultDwarfVersion() const override { return 2; }
 
 protected:
   Tool *buildLinker() const override;

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=249692&r1=249691&r2=249692&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Thu Oct  8 09:18:02 2015
@@ -57,3 +57,6 @@
 // RUN: %clang -target sparc-myriad -### -nostdlib %s 2>&1 | FileCheck %s 
--check-prefix=NOSTDLIB
 //
 // NOSTDLIB-NOT: "-lc"
+
+// RUN: %clang -### -c -g %s -target sparc-myriad 2>&1 | FileCheck 
-check-prefix=G_SPARC %s
+// G_SPARC: "-debug-info-kind=limited" "-dwarf-version=2"


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r249893 - [Myriad]: put libstdc++ and libc in the right order

2015-10-09 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Fri Oct  9 15:26:20 2015
New Revision: 249893

URL: http://llvm.org/viewvc/llvm-project?rev=249893&view=rev
Log:
[Myriad]: put libstdc++ and libc in the right order

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=249893&r1=249892&r2=249893&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Fri Oct  9 15:26:20 2015
@@ -9885,6 +9885,8 @@ void tools::Myriad::Linker::ConstructJob
   AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
 
   if (UseDefaultLibs) {
+if (C.getDriver().CCCIsCXX())
+  CmdArgs.push_back("-lstdc++");
 if (T.getOS() == llvm::Triple::RTEMS) {
   CmdArgs.push_back("--start-group");
   CmdArgs.push_back("-lc");
@@ -9895,8 +9897,6 @@ void tools::Myriad::Linker::ConstructJob
 } else {
   CmdArgs.push_back("-lc");
 }
-if (C.getDriver().CCCIsCXX())
-  CmdArgs.push_back("-lstdc++");
 CmdArgs.push_back("-lgcc");
   }
   if (UseStartfiles) {

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=249893&r1=249892&r2=249893&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Fri Oct  9 15:26:20 2015
@@ -54,8 +54,10 @@
 // RUN:   | FileCheck %s -check-prefix=MDMF
 // MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
 
+// RUN: %clang -target sparc-myriad -### --driver-mode=g++ %s 2>&1 | FileCheck 
%s --check-prefix=STDLIBCXX
+// STDLIBCXX: "-lstdc++" "-lc" "-lgcc"
+
 // RUN: %clang -target sparc-myriad -### -nostdlib %s 2>&1 | FileCheck %s 
--check-prefix=NOSTDLIB
-//
 // NOSTDLIB-NOT: "-lc"
 
 // RUN: %clang -### -c -g %s -target sparc-myriad 2>&1 | FileCheck 
-check-prefix=G_SPARC %s


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r250173 - Always pass a -dwarf-version argument to integrated as.

2015-10-13 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Tue Oct 13 11:22:51 2015
New Revision: 250173

URL: http://llvm.org/viewvc/llvm-project?rev=250173&view=rev
Log:
Always pass a -dwarf-version argument to integrated as.

This removes the default of 3 hidden in the assembler previously.

Fixes breakage caused by r249655, reported by vsukharev.

Added:
cfe/trunk/test/Driver/as-default-dwarf.s
Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/tools/driver/cc1as_main.cpp

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=250173&r1=250172&r2=250173&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue Oct 13 11:22:51 2015
@@ -5632,10 +5632,11 @@ void ClangAs::ConstructJob(Compilation &
 if (Arg *A = Args.getLastArg(options::OPT_g_Group)) {
   WantDebug = !A->getOption().matches(options::OPT_g0);
   if (WantDebug) {
-if ((DwarfVersion = DwarfVersionNum(A->getSpelling())) == 0)
-  DwarfVersion = getToolChain().GetDefaultDwarfVersion();
+DwarfVersion = DwarfVersionNum(A->getSpelling());
   }
 }
+if (DwarfVersion == 0)
+  DwarfVersion = getToolChain().GetDefaultDwarfVersion();
 RenderDebugEnablingArgs(Args, CmdArgs,
 (WantDebug ? CodeGenOptions::LimitedDebugInfo
: CodeGenOptions::NoDebugInfo),

Added: cfe/trunk/test/Driver/as-default-dwarf.s
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/as-default-dwarf.s?rev=250173&view=auto
==
--- cfe/trunk/test/Driver/as-default-dwarf.s (added)
+++ cfe/trunk/test/Driver/as-default-dwarf.s Tue Oct 13 11:22:51 2015
@@ -0,0 +1,15 @@
+@ REQUIRES: arm-registered-target
+@ RUN: %clang --target=armv8a--linux-gnueabi -c %s -o %t
+@ RUN: llvm-objdump -t %t | FileCheck %s
+.text
+.type   foo,%function
+foo:
+.fnstart
+.cfi_startproc
+
+.Ltmp2:
+.size   foo, .Ltmp2-foo
+.cfi_endproc
+.fnend
+.cfi_sections .debug_frame
+@ CHECK: foo

Modified: cfe/trunk/tools/driver/cc1as_main.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1as_main.cpp?rev=250173&r1=250172&r2=250173&view=diff
==
--- cfe/trunk/tools/driver/cc1as_main.cpp (original)
+++ cfe/trunk/tools/driver/cc1as_main.cpp Tue Oct 13 11:22:51 2015
@@ -144,7 +144,7 @@ public:
 RelaxAll = 0;
 NoExecStack = 0;
 FatalWarnings = 0;
-DwarfVersion = 3;
+DwarfVersion = 0;
   }
 
   static bool CreateFromArgs(AssemblerInvocation &Res,


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r250363 - Remove unnecessary braces in single-line 'if'.

2015-10-14 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Oct 14 23:10:40 2015
New Revision: 250363

URL: http://llvm.org/viewvc/llvm-project?rev=250363&view=rev
Log:
Remove unnecessary braces in single-line 'if'.

Modified:
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=250363&r1=250362&r2=250363&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Wed Oct 14 23:10:40 2015
@@ -5643,9 +5643,8 @@ void ClangAs::ConstructJob(Compilation &
 Args.ClaimAllArgs(options::OPT_g_Group);
 if (Arg *A = Args.getLastArg(options::OPT_g_Group)) {
   WantDebug = !A->getOption().matches(options::OPT_g0);
-  if (WantDebug) {
+  if (WantDebug)
 DwarfVersion = DwarfVersionNum(A->getSpelling());
-  }
 }
 if (DwarfVersion == 0)
   DwarfVersion = getToolChain().GetDefaultDwarfVersion();


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D13813: Teach MyriadToolchain how to find its C++ header paths.

2015-10-16 Thread Douglas Katzman via cfe-commits
dougk accepted this revision.
dougk added a comment.
This revision is now accepted and ready to land.

I'd have titled the CL such that emphasis on what people might find generally 
useful:
"Move addLibStdCXXIncludePaths method from Linux to Generic_GCC .. and 
incidentally make MyriadToolchain use that"


http://reviews.llvm.org/D13813



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r250932 - [Myriad]: Always add -L paths even if -nostdlib is set.

2015-10-21 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Oct 21 14:33:54 2015
New Revision: 250932

URL: http://llvm.org/viewvc/llvm-project?rev=250932&view=rev
Log:
[Myriad]: Always add -L paths even if -nostdlib is set.

Modified:
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=250932&r1=250931&r2=250932&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Wed Oct 21 14:33:54 2015
@@ -9898,13 +9898,11 @@ void tools::Myriad::Linker::ConstructJob
 options::OPT_e, options::OPT_s, options::OPT_t,
 options::OPT_Z_Flag, options::OPT_r});
 
-  if (UseDefaultLibs) {
-// The linker doesn't use these builtin paths unless directed to,
-// because it was not compiled for support with sysroots, nor does
-// it have a default of little-endian with FPU.
-CmdArgs.push_back(Args.MakeArgString("-L" + BuiltinLibDir));
-CmdArgs.push_back(Args.MakeArgString("-L" + StartFilesDir));
-  }
+  // The linker doesn't use these builtin paths unless directed to,
+  // because it was not compiled for support with sysroots, nor does
+  // it have a default of little-endian with FPU.
+  CmdArgs.push_back(Args.MakeArgString("-L" + BuiltinLibDir));
+  CmdArgs.push_back(Args.MakeArgString("-L" + StartFilesDir));
 
   AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
 


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r244290 - Range-forify a loop, delete trailing whitespace. NFC

2015-08-06 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Thu Aug  6 17:36:24 2015
New Revision: 244290

URL: http://llvm.org/viewvc/llvm-project?rev=244290&view=rev
Log:
Range-forify a loop, delete trailing whitespace. NFC

Modified:
cfe/trunk/lib/Driver/ToolChain.cpp

Modified: cfe/trunk/lib/Driver/ToolChain.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChain.cpp?rev=244290&r1=244289&r2=244290&view=diff
==
--- cfe/trunk/lib/Driver/ToolChain.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChain.cpp Thu Aug  6 17:36:24 2015
@@ -313,7 +313,7 @@ std::string ToolChain::ComputeLLVMTriple
 std::string CPU = Triple.isOSBinFormatMachO()
   ? tools::arm::getARMCPUForMArch(MArch, Triple)
   : tools::arm::getARMTargetCPU(MCPU, MArch, Triple);
-StringRef Suffix = 
+StringRef Suffix =
   tools::arm::getLLVMArchSuffixForARM(CPU,
   tools::arm::getARMArch(MArch, 
Triple));
 bool ThumbDefault = Suffix.startswith("v6m") || Suffix.startswith("v7m") ||
@@ -344,7 +344,7 @@ std::string ToolChain::ComputeLLVMTriple
   }
 }
 
-std::string ToolChain::ComputeEffectiveClangTriple(const ArgList &Args, 
+std::string ToolChain::ComputeEffectiveClangTriple(const ArgList &Args,
types::ID InputType) const {
   return ComputeLLVMTriple(Args, InputType);
 }
@@ -424,10 +424,9 @@ void ToolChain::addExternCSystemIncludeI
 /*static*/ void ToolChain::addSystemIncludes(const ArgList &DriverArgs,
  ArgStringList &CC1Args,
  ArrayRef Paths) {
-  for (ArrayRef::iterator I = Paths.begin(), E = Paths.end();
-   I != E; ++I) {
+  for (StringRef Path : Paths) {
 CC1Args.push_back("-internal-isystem");
-CC1Args.push_back(DriverArgs.MakeArgString(*I));
+CC1Args.push_back(DriverArgs.MakeArgString(Path));
   }
 }
 
@@ -496,4 +495,3 @@ SanitizerMask ToolChain::getSupportedSan
   return (Undefined & ~Vptr & ~Function) | CFI | CFICastStrict |
  UnsignedIntegerOverflow | LocalBounds;
 }
-


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r276646 - [Myriad]: better compatibility with vendor source

2016-07-25 Thread Douglas Katzman via cfe-commits
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=27

r268956 - [Myriad] Use Generic_ELF::addClangTargetOptions()

2016-05-09 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Mon May  9 14:09:59 2016
New Revision: 268956

URL: http://llvm.org/viewvc/llvm-project?rev=268956&view=rev
Log:
[Myriad] Use Generic_ELF::addClangTargetOptions()

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/lib/Driver/ToolChains.h
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=268956&r1=268955&r2=268956&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Mon May  9 14:09:59 2016
@@ -4401,7 +4401,7 @@ void XCoreToolChain::AddCXXStdlibLibArgs
 
 MyriadToolChain::MyriadToolChain(const Driver &D, const llvm::Triple &Triple,
  const ArgList &Args)
-: Generic_GCC(D, Triple, Args) {
+: Generic_ELF(D, Triple, Args) {
   // If a target of 'sparc-myriad-elf' is specified to clang, it wants to use
   // 'sparc-myriad--elf' (note the unknown OS) as the canonical triple.
   // This won't work to find gcc. Instead we give the installation detector an

Modified: cfe/trunk/lib/Driver/ToolChains.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=268956&r1=268955&r2=268956&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.h (original)
+++ cfe/trunk/lib/Driver/ToolChains.h Mon May  9 14:09:59 2016
@@ -1093,7 +1093,7 @@ public:
 
 /// MyriadToolChain - A tool chain using either clang or the external compiler
 /// installed by the Movidius SDK to perform all subcommands.
-class LLVM_LIBRARY_VISIBILITY MyriadToolChain : public Generic_GCC {
+class LLVM_LIBRARY_VISIBILITY MyriadToolChain : public Generic_ELF {
 public:
   MyriadToolChain(const Driver &D, const llvm::Triple &Triple,
   const llvm::opt::ArgList &Args);

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=268956&r1=268955&r2=268956&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Mon May  9 14:09:59 2016
@@ -77,3 +77,7 @@
 
 // RUN: %clang -### -c -g %s -target sparc-myriad 2>&1 | FileCheck 
-check-prefix=G_SPARC %s
 // G_SPARC: "-debug-info-kind=limited" "-dwarf-version=2"
+
+// RUN: %clang -### -c %s -target sparc-myriad-elf -fuse-init-array 2>&1 \
+// RUN: | FileCheck -check-prefix=USE-INIT-ARRAY %s
+// USE-INIT-ARRAY-NOT: argument unused


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r266775 - Pass dwarf-version to cc1as.

2016-04-19 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Tue Apr 19 12:43:54 2016
New Revision: 266775

URL: http://llvm.org/viewvc/llvm-project?rev=266775&view=rev
Log:
Pass dwarf-version to cc1as.

Fix PR26999 - crashing in cc1as with any '*bsd' target.

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/save-temps.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=266775&r1=266774&r2=266775&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue Apr 19 12:43:54 2016
@@ -6314,6 +6314,12 @@ void ClangAs::ConstructJob(Compilation &
   // FIXME: Stop lying and consume only the appropriate driver flags
   Args.ClaimAllArgs(options::OPT_W_Group);
 
+  // Assemblers that want to know the dwarf version can't assume a value,
+  // since the defaulting logic resides in the driver. Put in something
+  // reasonable now, in case a subsequent "-Wa,-g" changes it.
+  RenderDebugEnablingArgs(Args, CmdArgs, codegenoptions::NoDebugInfo,
+  getToolChain().GetDefaultDwarfVersion(),
+  llvm::DebuggerKind::Default);
   CollectArgsForIntegratedAssembler(C, Args, CmdArgs,
 getToolChain().getDriver());
 

Modified: cfe/trunk/test/Driver/save-temps.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/save-temps.c?rev=266775&r1=266774&r2=266775&view=diff
==
--- cfe/trunk/test/Driver/save-temps.c (original)
+++ cfe/trunk/test/Driver/save-temps.c Tue Apr 19 12:43:54 2016
@@ -77,3 +77,8 @@
 // CHECK-OBJ-NOO: "-o" "save-temps.s"
 // CHECK-OBJ-NOO: "-o" "save-temps.o"
 // CHECK-OBJ-NOO: "-o" "a.out"
+
+// RUN: %clang -target i386-unknown-freebsd -save-temps -g -c %s -### 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=CHECK-SAVE-TEMPS
+// CHECK-SAVE-TEMPS: "-cc1as"
+// CHECK-SAVE-TEMPS: "-dwarf-version={{.}}"


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r266797 - Fix PR26999 better- RenderDebugEnablingArgs() once only

2016-04-19 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Tue Apr 19 13:55:53 2016
New Revision: 266797

URL: http://llvm.org/viewvc/llvm-project?rev=266797&view=rev
Log:
Fix PR26999 better- RenderDebugEnablingArgs() once only

Modified:
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=266797&r1=266796&r2=266797&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue Apr 19 13:55:53 2016
@@ -6227,24 +6227,28 @@ void ClangAs::ConstructJob(Compilation &
 
   // Forward -g and handle debug info related flags, assuming we are dealing
   // with an actual assembly file.
+  bool WantDebug = false;
+  unsigned DwarfVersion = 0;
+  Args.ClaimAllArgs(options::OPT_g_Group);
+  if (Arg *A = Args.getLastArg(options::OPT_g_Group)) {
+WantDebug = !A->getOption().matches(options::OPT_g0) &&
+!A->getOption().matches(options::OPT_ggdb0);
+if (WantDebug)
+  DwarfVersion = DwarfVersionNum(A->getSpelling());
+  }
+  if (DwarfVersion == 0)
+DwarfVersion = getToolChain().GetDefaultDwarfVersion();
+
+  codegenoptions::DebugInfoKind DebugInfoKind = codegenoptions::NoDebugInfo;
+
   if (SourceAction->getType() == types::TY_Asm ||
   SourceAction->getType() == types::TY_PP_Asm) {
-bool WantDebug = false;
-unsigned DwarfVersion = 0;
-Args.ClaimAllArgs(options::OPT_g_Group);
-if (Arg *A = Args.getLastArg(options::OPT_g_Group)) {
-  WantDebug = !A->getOption().matches(options::OPT_g0) &&
-!A->getOption().matches(options::OPT_ggdb0);
-  if (WantDebug)
-DwarfVersion = DwarfVersionNum(A->getSpelling());
-}
-if (DwarfVersion == 0)
-  DwarfVersion = getToolChain().GetDefaultDwarfVersion();
-RenderDebugEnablingArgs(Args, CmdArgs,
-(WantDebug ? codegenoptions::LimitedDebugInfo
-   : codegenoptions::NoDebugInfo),
-DwarfVersion, llvm::DebuggerKind::Default);
-
+// You might think that it would be ok to set DebugInfoKind outside of
+// the guard for source type, however there is a test which asserts
+// that some assembler invocation receives no -debug-info-kind,
+// and it's not clear whether that test is just overly restrictive.
+DebugInfoKind = (WantDebug ? codegenoptions::LimitedDebugInfo
+   : codegenoptions::NoDebugInfo);
 // Add the -fdebug-compilation-dir flag if needed.
 addDebugCompDirArg(Args, CmdArgs);
 
@@ -6257,6 +6261,8 @@ void ClangAs::ConstructJob(Compilation &
 // And pass along -I options
 Args.AddAllArgs(CmdArgs, options::OPT_I);
   }
+  RenderDebugEnablingArgs(Args, CmdArgs, DebugInfoKind, DwarfVersion,
+  llvm::DebuggerKind::Default);
 
   // Handle -fPIC et al -- the relocation-model affects the assembler
   // for some targets.
@@ -6314,12 +6320,6 @@ void ClangAs::ConstructJob(Compilation &
   // FIXME: Stop lying and consume only the appropriate driver flags
   Args.ClaimAllArgs(options::OPT_W_Group);
 
-  // Assemblers that want to know the dwarf version can't assume a value,
-  // since the defaulting logic resides in the driver. Put in something
-  // reasonable now, in case a subsequent "-Wa,-g" changes it.
-  RenderDebugEnablingArgs(Args, CmdArgs, codegenoptions::NoDebugInfo,
-  getToolChain().GetDefaultDwarfVersion(),
-  llvm::DebuggerKind::Default);
   CollectArgsForIntegratedAssembler(C, Args, CmdArgs,
 getToolChain().getDriver());
 


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D18186: Myriad: pass -mcpu flag to moviCompile, no default

2016-03-15 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added a reviewer: jyknight.
dougk added a subscriber: cfe-commits.

http://reviews.llvm.org/D18186

Files:
  lib/Driver/Tools.cpp
  test/Driver/myriad-toolchain.c

Index: test/Driver/myriad-toolchain.c
===
--- test/Driver/myriad-toolchain.c
+++ test/Driver/myriad-toolchain.c
@@ -38,7 +38,7 @@
 
 // RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon 
-Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
-// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-mcpu=myriad2" 
"-DMYRIAD2" "-isystem" "somewhere" "-I" "common"
+// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-DMYRIAD2" 
"-isystem" "somewhere" "-I" "common"
 // MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad2" 
"-noSPrefixing" "-a"
 // MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
 
@@ -58,15 +58,15 @@
 
 // RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MDMF
-// MDMF: "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-MD" "-MF" 
"dep.d" "-MT" "foo.o"
+// MDMF: "-S" "-fno-exceptions" "-DMYRIAD2" "-MD" "-MF" "dep.d" "-MT" "foo.o"
 
-// RUN: %clang -target shave-myriad -std=gnu++11 -S %s -o foo.o -### 2>&1 \
+// RUN: %clang -target shave-myriad -std=gnu++11 -mcpu=acpu -S %s -o foo.o 
-### 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=STDEQ
-// STDEQ: "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-std=gnu++11"
+// STDEQ: "-S" "-fno-exceptions" "-DMYRIAD2" "-std=gnu++11" "-mcpu=acpu"
 
 // RUN: %clang -target shave-myriad -E -Ifoo %s -o foo.i -### 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=PREPROCESS
-// PREPROCESS: "-E" "-mcpu=myriad2" "-DMYRIAD2" "-I" "foo"
+// PREPROCESS: "-E" "-DMYRIAD2" "-I" "foo"
 
 // RUN: %clang -target sparc-myriad -### --driver-mode=g++ %s 2>&1 | FileCheck 
%s --check-prefix=STDLIBCXX
 // STDLIBCXX: "-lstdc++" "-lc" "-lgcc"
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -10431,7 +10431,6 @@
 CmdArgs.push_back("-S");
 CmdArgs.push_back("-fno-exceptions"); // Always do this even if 
unspecified.
   }
-  CmdArgs.push_back("-mcpu=myriad2");
   CmdArgs.push_back("-DMYRIAD2");
 
   // Append all -I, -iquote, -isystem paths, defines/undefines,
@@ -10441,7 +10440,8 @@
 options::OPT_std_EQ, options::OPT_D, 
options::OPT_U,
 options::OPT_f_Group, options::OPT_f_clang_Group,
 options::OPT_g_Group, options::OPT_M_Group,
-options::OPT_O_Group, options::OPT_W_Group});
+options::OPT_O_Group, options::OPT_W_Group,
+options::OPT_mcpu_EQ});
 
   // If we're producing a dependency file, and assembly is the final action,
   // then the name of the target in the dependency file should be the '.o'


Index: test/Driver/myriad-toolchain.c
===
--- test/Driver/myriad-toolchain.c
+++ test/Driver/myriad-toolchain.c
@@ -38,7 +38,7 @@
 
 // RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
-// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-isystem" "somewhere" "-I" "common"
+// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-DMYRIAD2" "-isystem" "somewhere" "-I" "common"
 // MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" "-a"
 // MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
 
@@ -58,15 +58,15 @@
 
 // RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MDMF
-// MDMF: "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-MD" "-MF" "dep.d" "-MT" "foo.o"
+// MDMF: "-S" "-fno-exceptions" "-DMYRIAD2" "-MD" "-MF" "dep.d" "-MT" "foo.o"
 
-// RUN: %clang -target shave-myriad -std=gnu++11 -S %s -o foo.o -### 2>&1 \
+// RUN: %clang -target shave-myriad -std=gnu++11 -mcpu=acpu -S %s -o foo.o -### 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=STDEQ
-// STDEQ: "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-std=gnu++11"
+// STDEQ: "-S" "-fno-exceptions" "-DMYRIAD2" "-std=gnu++11" "-mcpu=acpu"
 
 // RUN: %clang -target shave-myriad -E -Ifoo %s -o foo.i -### 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=PREPROCESS
-// PREPROCESS: "-E" "-mcpu=myriad2" "-DMYRIAD2" "-I" "foo"
+// PREPROCESS: "-E" "-DMYRIAD2" "-I" "foo"
 
 // RUN: %clang -target sparc-myriad -### --driver-mode=g++ %s 2>&1 | FileCheck %s --check-prefix=STDLIBCXX
 // STDLIBCXX: "-lstdc++" "-lc" "-lgcc"
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/To

Re: [PATCH] D18186: Myriad: pass -mcpu flag to moviCompile, no default

2016-03-15 Thread Douglas Katzman via cfe-commits
dougk updated this revision to Diff 50739.
dougk added a comment.

also moviAsm


http://reviews.llvm.org/D18186

Files:
  lib/Driver/Tools.cpp
  test/Driver/myriad-toolchain.c

Index: test/Driver/myriad-toolchain.c
===
--- test/Driver/myriad-toolchain.c
+++ test/Driver/myriad-toolchain.c
@@ -36,10 +36,10 @@
 // As such, we test only for a trailing quote in its rendering.
 // The same goes for "moviAsm".
 
-// RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon 
-Wa,-yippee 2>&1 \
+// RUN: %clang -target shave-myriad -mcpu=myriad1 -c -### %s -isystem 
somewhere -Icommon -Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
-// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-mcpu=myriad2" 
"-DMYRIAD2" "-isystem" "somewhere" "-I" "common"
-// MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad2" 
"-noSPrefixing" "-a"
+// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-DMYRIAD2" 
"-mcpu=myriad1" "-isystem" "somewhere" "-I" "common"
+// MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad1" 
"-noSPrefixing" "-a"
 // MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
 
 // RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
@@ -58,15 +58,15 @@
 
 // RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MDMF
-// MDMF: "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-MD" "-MF" 
"dep.d" "-MT" "foo.o"
+// MDMF: "-S" "-fno-exceptions" "-DMYRIAD2" "-MD" "-MF" "dep.d" "-MT" "foo.o"
 
-// RUN: %clang -target shave-myriad -std=gnu++11 -S %s -o foo.o -### 2>&1 \
+// RUN: %clang -target shave-myriad -std=gnu++11 -mcpu=anothercpu -S %s -o 
foo.o -### 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=STDEQ
-// STDEQ: "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-std=gnu++11"
+// STDEQ: "-S" "-fno-exceptions" "-DMYRIAD2" "-std=gnu++11" "-mcpu=anothercpu"
 
 // RUN: %clang -target shave-myriad -E -Ifoo %s -o foo.i -### 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=PREPROCESS
-// PREPROCESS: "-E" "-mcpu=myriad2" "-DMYRIAD2" "-I" "foo"
+// PREPROCESS: "-E" "-DMYRIAD2" "-I" "foo"
 
 // RUN: %clang -target sparc-myriad -### --driver-mode=g++ %s 2>&1 | FileCheck 
%s --check-prefix=STDLIBCXX
 // STDLIBCXX: "-lstdc++" "-lc" "-lgcc"
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -10431,7 +10431,6 @@
 CmdArgs.push_back("-S");
 CmdArgs.push_back("-fno-exceptions"); // Always do this even if 
unspecified.
   }
-  CmdArgs.push_back("-mcpu=myriad2");
   CmdArgs.push_back("-DMYRIAD2");
 
   // Append all -I, -iquote, -isystem paths, defines/undefines,
@@ -10441,7 +10440,8 @@
 options::OPT_std_EQ, options::OPT_D, 
options::OPT_U,
 options::OPT_f_Group, options::OPT_f_clang_Group,
 options::OPT_g_Group, options::OPT_M_Group,
-options::OPT_O_Group, options::OPT_W_Group});
+options::OPT_O_Group, options::OPT_W_Group,
+options::OPT_mcpu_EQ});
 
   // If we're producing a dependency file, and assembly is the final action,
   // then the name of the target in the dependency file should be the '.o'
@@ -10481,7 +10481,10 @@
   assert(Output.getType() == types::TY_Object);
 
   CmdArgs.push_back("-no6thSlotCompression");
-  CmdArgs.push_back("-cv:myriad2"); // Chip Version
+  const Arg *CPUArg = Args.getLastArg(options::OPT_mcpu_EQ);
+  if (CPUArg)
+CmdArgs.push_back(
+Args.MakeArgString("-cv:" + StringRef(CPUArg->getValue(;
   CmdArgs.push_back("-noSPrefixing");
   CmdArgs.push_back("-a"); // Mystery option.
   Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, 
options::OPT_Xassembler);


Index: test/Driver/myriad-toolchain.c
===
--- test/Driver/myriad-toolchain.c
+++ test/Driver/myriad-toolchain.c
@@ -36,10 +36,10 @@
 // As such, we test only for a trailing quote in its rendering.
 // The same goes for "moviAsm".
 
-// RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
+// RUN: %clang -target shave-myriad -mcpu=myriad1 -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
-// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-isystem" "somewhere" "-I" "common"
-// MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" "-a"
+// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-DMYRIAD2" "-mcpu=myriad1" "-isystem" "somewhere" "-I" "common"
+// MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad1" "-noSPrefixing" "-a"
 // MOVICOMPILE: "-yippee" "-i:

r263556 - Myriad: Pass -mcpu to movi{Compile,Asm}

2016-03-15 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Tue Mar 15 11:41:31 2016
New Revision: 263556

URL: http://llvm.org/viewvc/llvm-project?rev=263556&view=rev
Log:
Myriad: Pass -mcpu to movi{Compile,Asm}

Differential Revision: http://reviews.llvm.org/D18186

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=263556&r1=263555&r2=263556&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue Mar 15 11:41:31 2016
@@ -10431,7 +10431,6 @@ void tools::SHAVE::Compiler::ConstructJo
 CmdArgs.push_back("-S");
 CmdArgs.push_back("-fno-exceptions"); // Always do this even if 
unspecified.
   }
-  CmdArgs.push_back("-mcpu=myriad2");
   CmdArgs.push_back("-DMYRIAD2");
 
   // Append all -I, -iquote, -isystem paths, defines/undefines,
@@ -10441,7 +10440,8 @@ void tools::SHAVE::Compiler::ConstructJo
 options::OPT_std_EQ, options::OPT_D, 
options::OPT_U,
 options::OPT_f_Group, options::OPT_f_clang_Group,
 options::OPT_g_Group, options::OPT_M_Group,
-options::OPT_O_Group, options::OPT_W_Group});
+options::OPT_O_Group, options::OPT_W_Group,
+options::OPT_mcpu_EQ});
 
   // If we're producing a dependency file, and assembly is the final action,
   // then the name of the target in the dependency file should be the '.o'
@@ -10481,7 +10481,10 @@ void tools::SHAVE::Assembler::ConstructJ
   assert(Output.getType() == types::TY_Object);
 
   CmdArgs.push_back("-no6thSlotCompression");
-  CmdArgs.push_back("-cv:myriad2"); // Chip Version
+  const Arg *CPUArg = Args.getLastArg(options::OPT_mcpu_EQ);
+  if (CPUArg)
+CmdArgs.push_back(
+Args.MakeArgString("-cv:" + StringRef(CPUArg->getValue(;
   CmdArgs.push_back("-noSPrefixing");
   CmdArgs.push_back("-a"); // Mystery option.
   Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, 
options::OPT_Xassembler);

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=263556&r1=263555&r2=263556&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Tue Mar 15 11:41:31 2016
@@ -36,10 +36,10 @@
 // As such, we test only for a trailing quote in its rendering.
 // The same goes for "moviAsm".
 
-// RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon 
-Wa,-yippee 2>&1 \
+// RUN: %clang -target shave-myriad -mcpu=myriad1 -c -### %s -isystem 
somewhere -Icommon -Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
-// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-mcpu=myriad2" 
"-DMYRIAD2" "-isystem" "somewhere" "-I" "common"
-// MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad2" 
"-noSPrefixing" "-a"
+// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-DMYRIAD2" 
"-mcpu=myriad1" "-isystem" "somewhere" "-I" "common"
+// MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad1" 
"-noSPrefixing" "-a"
 // MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
 
 // RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
@@ -58,15 +58,15 @@
 
 // RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MDMF
-// MDMF: "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-MD" "-MF" 
"dep.d" "-MT" "foo.o"
+// MDMF: "-S" "-fno-exceptions" "-DMYRIAD2" "-MD" "-MF" "dep.d" "-MT" "foo.o"
 
-// RUN: %clang -target shave-myriad -std=gnu++11 -S %s -o foo.o -### 2>&1 \
+// RUN: %clang -target shave-myriad -std=gnu++11 -mcpu=anothercpu -S %s -o 
foo.o -### 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=STDEQ
-// STDEQ: "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-std=gnu++11"
+// STDEQ: "-S" "-fno-exceptions" "-DMYRIAD2" "-std=gnu++11" "-mcpu=anothercpu"
 
 // RUN: %clang -target shave-myriad -E -Ifoo %s -o foo.i -### 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=PREPROCESS
-// PREPROCESS: "-E" "-mcpu=myriad2" "-DMYRIAD2" "-I" "foo"
+// PREPROCESS: "-E" "-DMYRIAD2" "-I" "foo"
 
 // RUN: %clang -target sparc-myriad -### --driver-mode=g++ %s 2>&1 | FileCheck 
%s --check-prefix=STDLIBCXX
 // STDLIBCXX: "-lstdc++" "-lc" "-lgcc"


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D18186: Myriad: pass -mcpu flag to moviCompile, no default

2016-03-15 Thread Douglas Katzman via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL263556: Myriad: Pass -mcpu to movi{Compile,Asm} (authored by 
dougk).

Changed prior to commit:
  http://reviews.llvm.org/D18186?vs=50739&id=50748#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D18186

Files:
  cfe/trunk/lib/Driver/Tools.cpp
  cfe/trunk/test/Driver/myriad-toolchain.c

Index: cfe/trunk/test/Driver/myriad-toolchain.c
===
--- cfe/trunk/test/Driver/myriad-toolchain.c
+++ cfe/trunk/test/Driver/myriad-toolchain.c
@@ -36,10 +36,10 @@
 // As such, we test only for a trailing quote in its rendering.
 // The same goes for "moviAsm".
 
-// RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon 
-Wa,-yippee 2>&1 \
+// RUN: %clang -target shave-myriad -mcpu=myriad1 -c -### %s -isystem 
somewhere -Icommon -Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
-// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-mcpu=myriad2" 
"-DMYRIAD2" "-isystem" "somewhere" "-I" "common"
-// MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad2" 
"-noSPrefixing" "-a"
+// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-DMYRIAD2" 
"-mcpu=myriad1" "-isystem" "somewhere" "-I" "common"
+// MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad1" 
"-noSPrefixing" "-a"
 // MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
 
 // RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \
@@ -58,15 +58,15 @@
 
 // RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MDMF
-// MDMF: "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-MD" "-MF" 
"dep.d" "-MT" "foo.o"
+// MDMF: "-S" "-fno-exceptions" "-DMYRIAD2" "-MD" "-MF" "dep.d" "-MT" "foo.o"
 
-// RUN: %clang -target shave-myriad -std=gnu++11 -S %s -o foo.o -### 2>&1 \
+// RUN: %clang -target shave-myriad -std=gnu++11 -mcpu=anothercpu -S %s -o 
foo.o -### 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=STDEQ
-// STDEQ: "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-std=gnu++11"
+// STDEQ: "-S" "-fno-exceptions" "-DMYRIAD2" "-std=gnu++11" "-mcpu=anothercpu"
 
 // RUN: %clang -target shave-myriad -E -Ifoo %s -o foo.i -### 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=PREPROCESS
-// PREPROCESS: "-E" "-mcpu=myriad2" "-DMYRIAD2" "-I" "foo"
+// PREPROCESS: "-E" "-DMYRIAD2" "-I" "foo"
 
 // RUN: %clang -target sparc-myriad -### --driver-mode=g++ %s 2>&1 | FileCheck 
%s --check-prefix=STDLIBCXX
 // STDLIBCXX: "-lstdc++" "-lc" "-lgcc"
Index: cfe/trunk/lib/Driver/Tools.cpp
===
--- cfe/trunk/lib/Driver/Tools.cpp
+++ cfe/trunk/lib/Driver/Tools.cpp
@@ -10431,7 +10431,6 @@
 CmdArgs.push_back("-S");
 CmdArgs.push_back("-fno-exceptions"); // Always do this even if 
unspecified.
   }
-  CmdArgs.push_back("-mcpu=myriad2");
   CmdArgs.push_back("-DMYRIAD2");
 
   // Append all -I, -iquote, -isystem paths, defines/undefines,
@@ -10441,7 +10440,8 @@
 options::OPT_std_EQ, options::OPT_D, 
options::OPT_U,
 options::OPT_f_Group, options::OPT_f_clang_Group,
 options::OPT_g_Group, options::OPT_M_Group,
-options::OPT_O_Group, options::OPT_W_Group});
+options::OPT_O_Group, options::OPT_W_Group,
+options::OPT_mcpu_EQ});
 
   // If we're producing a dependency file, and assembly is the final action,
   // then the name of the target in the dependency file should be the '.o'
@@ -10481,7 +10481,10 @@
   assert(Output.getType() == types::TY_Object);
 
   CmdArgs.push_back("-no6thSlotCompression");
-  CmdArgs.push_back("-cv:myriad2"); // Chip Version
+  const Arg *CPUArg = Args.getLastArg(options::OPT_mcpu_EQ);
+  if (CPUArg)
+CmdArgs.push_back(
+Args.MakeArgString("-cv:" + StringRef(CPUArg->getValue(;
   CmdArgs.push_back("-noSPrefixing");
   CmdArgs.push_back("-a"); // Mystery option.
   Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, 
options::OPT_Xassembler);


Index: cfe/trunk/test/Driver/myriad-toolchain.c
===
--- cfe/trunk/test/Driver/myriad-toolchain.c
+++ cfe/trunk/test/Driver/myriad-toolchain.c
@@ -36,10 +36,10 @@
 // As such, we test only for a trailing quote in its rendering.
 // The same goes for "moviAsm".
 
-// RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
+// RUN: %clang -target shave-myriad -mcpu=myriad1 -c -### %s -isystem somewhere -Icommon -Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
-// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-isystem" "somewhere" "-I" "common"
-// MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompress

r263596 - Myriad: define __myriad2 macro automatically

2016-03-15 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Tue Mar 15 17:34:02 2016
New Revision: 263596

URL: http://llvm.org/viewvc/llvm-project?rev=263596&view=rev
Log:
Myriad: define __myriad2 macro automatically

Modified:
cfe/trunk/lib/Basic/Targets.cpp
cfe/trunk/test/Driver/myriad-toolchain.c
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=263596&r1=263595&r2=263596&view=diff
==
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Tue Mar 15 17:34:02 2016
@@ -6031,7 +6031,9 @@ public:
 CK_NIAGARA,
 CK_NIAGARA2,
 CK_NIAGARA3,
-CK_NIAGARA4
+CK_NIAGARA4,
+CK_MYRIAD2_1,
+CK_MYRIAD2_2
   } CPU = CK_GENERIC;
 
   enum CPUGeneration {
@@ -6050,6 +6052,8 @@ public:
 case CK_SPARCLITE86X:
 case CK_SPARCLET:
 case CK_TSC701:
+case CK_MYRIAD2_1:
+case CK_MYRIAD2_2:
   return CG_V8;
 case CK_V9:
 case CK_ULTRASPARC:
@@ -6080,6 +6084,9 @@ 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)
 .Default(CK_GENERIC);
   }
 
@@ -6177,6 +6184,20 @@ public:
   }
   break;
 }
+if (getTriple().getVendor() == llvm::Triple::Myriad) {
+  switch (CPU) {
+  case CK_MYRIAD2_1:
+Builder.defineMacro("__myriad2", "1");
+Builder.defineMacro("__myriad2__", "1");
+break;
+  case CK_MYRIAD2_2:
+Builder.defineMacro("__myriad2", "2");
+Builder.defineMacro("__myriad2__", "2");
+break;
+  default:
+break;
+  }
+}
   }
 };
 

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=263596&r1=263595&r2=263596&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Tue Mar 15 17:34:02 2016
@@ -36,10 +36,10 @@
 // As such, we test only for a trailing quote in its rendering.
 // The same goes for "moviAsm".
 
-// RUN: %clang -target shave-myriad -mcpu=myriad1 -c -### %s -isystem 
somewhere -Icommon -Wa,-yippee 2>&1 \
+// RUN: %clang -target shave-myriad -mcpu=myriad2.2 -c -### %s -isystem 
somewhere -Icommon -Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
-// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-DMYRIAD2" 
"-mcpu=myriad1" "-isystem" "somewhere" "-I" "common"
-// MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad1" 
"-noSPrefixing" "-a"
+// MOVICOMPILE: moviCompile{{(.exe)?}}" "-S" "-fno-exceptions" "-DMYRIAD2" 
"-mcpu=myriad2.2" "-isystem" "somewhere" "-I" "common"
+// MOVICOMPILE: moviAsm{{(.exe)?}}" "-no6thSlotCompression" "-cv:myriad2.2" 
"-noSPrefixing" "-a"
 // MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
 
 // RUN: %clang -target shave-myriad -c -### %s -DEFINE_ME -UNDEFINE_ME 2>&1 \

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=263596&r1=263595&r2=263596&view=diff
==
--- cfe/trunk/test/Preprocessor/predefined-arch-macros.c (original)
+++ cfe/trunk/test/Preprocessor/predefined-arch-macros.c Tue Mar 15 17:34:02 
2016
@@ -1903,8 +1903,17 @@
 // RUN: %clang -E -dM %s -o - 2>&1 \
 // RUN: -target sparcel-unknown-linux \
 // RUN:   | FileCheck %s -check-prefix=CHECK_SPARCEL
-//
+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=CHECK_MYRIAD2-1 
-check-prefix=CHECK_SPARCEL
+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.1 2>&1 \
+// RUN:   | FileCheck %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 %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
+// CHECK_MYRIAD2-2: #define __myriad2 2
+// CHECK_MYRIAD2-2: #define __myriad2__ 2
 // CHECK_SPARCEL: #define __sparc 1
 // CHECK_SPARCEL: #define __sparc__ 1
 // CHECK_SPARCEL: #define __sparcv8 1


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D15882: Avoid assert failure on some invalid cc1 options.

2016-01-04 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added reviewers: thakis, probinson.
dougk added a subscriber: cfe-commits.

Something like this was suggested in http://reviews.llvm.org/D13221


http://reviews.llvm.org/D15882

Files:
  lib/Frontend/CompilerInvocation.cpp
  test/Driver/debug-options.c

Index: test/Driver/debug-options.c
===
--- test/Driver/debug-options.c
+++ test/Driver/debug-options.c
@@ -169,3 +169,8 @@
 // NOCI-NOT: "-dwarf-column-info"
 //
 // GEXTREFS: "-dwarf-ext-refs" "-fmodule-format=obj" 
"-debug-info-kind={{standalone|limited}}"
+
+// RUN: not %clang -cc1 -debug-info-kind=watkind 2>&1 | FileCheck 
-check-prefix=BADSTRING1 %s
+// BADSTRING1: error: invalid value 'watkind' in '-debug-info-kind=watkind'
+// RUN: not %clang -cc1 -debugger-tuning=gmodal 2>&1 | FileCheck 
-check-prefix=BADSTRING2 %s
+// BADSTRING2: error: invalid value 'gmodal' in '-debugger-tuning=gmodal'
Index: lib/Frontend/CompilerInvocation.cpp
===
--- lib/Frontend/CompilerInvocation.cpp
+++ lib/Frontend/CompilerInvocation.cpp
@@ -399,18 +399,29 @@
   }
 
   if (Arg *A = Args.getLastArg(OPT_debug_info_kind_EQ)) {
-Opts.setDebugInfo(
-llvm::StringSwitch(A->getValue())
+unsigned Val =
+llvm::StringSwitch(A->getValue())
 .Case("line-tables-only", CodeGenOptions::DebugLineTablesOnly)
 .Case("limited", CodeGenOptions::LimitedDebugInfo)
-.Case("standalone", CodeGenOptions::FullDebugInfo));
+.Case("standalone", CodeGenOptions::FullDebugInfo)
+.Default(~0U);
+if (Val == ~0U)
+  Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args)
+<< A->getValue();
+else
+  Opts.setDebugInfo(static_cast(Val));
   }
   if (Arg *A = Args.getLastArg(OPT_debugger_tuning_EQ)) {
-Opts.setDebuggerTuning(
-llvm::StringSwitch(A->getValue())
-.Case("gdb", CodeGenOptions::DebuggerKindGDB)
-.Case("lldb", CodeGenOptions::DebuggerKindLLDB)
-.Case("sce", CodeGenOptions::DebuggerKindSCE));
+unsigned Val = llvm::StringSwitch(A->getValue())
+   .Case("gdb", CodeGenOptions::DebuggerKindGDB)
+   .Case("lldb", CodeGenOptions::DebuggerKindLLDB)
+   .Case("sce", CodeGenOptions::DebuggerKindSCE)
+   .Default(~0U);
+if (Val == ~0U)
+  Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args)
+<< A->getValue();
+else
+  Opts.setDebuggerTuning(static_cast(Val));
   }
   Opts.DwarfVersion = getLastArgIntValue(Args, OPT_dwarf_version_EQ, 0, Diags);
   Opts.DebugColumnInfo = Args.hasArg(OPT_dwarf_column_info);


Index: test/Driver/debug-options.c
===
--- test/Driver/debug-options.c
+++ test/Driver/debug-options.c
@@ -169,3 +169,8 @@
 // NOCI-NOT: "-dwarf-column-info"
 //
 // GEXTREFS: "-dwarf-ext-refs" "-fmodule-format=obj" "-debug-info-kind={{standalone|limited}}"
+
+// RUN: not %clang -cc1 -debug-info-kind=watkind 2>&1 | FileCheck -check-prefix=BADSTRING1 %s
+// BADSTRING1: error: invalid value 'watkind' in '-debug-info-kind=watkind'
+// RUN: not %clang -cc1 -debugger-tuning=gmodal 2>&1 | FileCheck -check-prefix=BADSTRING2 %s
+// BADSTRING2: error: invalid value 'gmodal' in '-debugger-tuning=gmodal'
Index: lib/Frontend/CompilerInvocation.cpp
===
--- lib/Frontend/CompilerInvocation.cpp
+++ lib/Frontend/CompilerInvocation.cpp
@@ -399,18 +399,29 @@
   }
 
   if (Arg *A = Args.getLastArg(OPT_debug_info_kind_EQ)) {
-Opts.setDebugInfo(
-llvm::StringSwitch(A->getValue())
+unsigned Val =
+llvm::StringSwitch(A->getValue())
 .Case("line-tables-only", CodeGenOptions::DebugLineTablesOnly)
 .Case("limited", CodeGenOptions::LimitedDebugInfo)
-.Case("standalone", CodeGenOptions::FullDebugInfo));
+.Case("standalone", CodeGenOptions::FullDebugInfo)
+.Default(~0U);
+if (Val == ~0U)
+  Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args)
+<< A->getValue();
+else
+  Opts.setDebugInfo(static_cast(Val));
   }
   if (Arg *A = Args.getLastArg(OPT_debugger_tuning_EQ)) {
-Opts.setDebuggerTuning(
-llvm::StringSwitch(A->getValue())
-.Case("gdb", CodeGenOptions::DebuggerKindGDB)
-.Case("lldb", CodeGenOptions::DebuggerKindLLDB)
-.Case("sce", CodeGenOptions::DebuggerKindSCE));
+unsigned Val = llvm::StringSwitch(A->getValue())
+   .Case("gdb", CodeGenOptions::DebuggerKindGDB)
+   .Case("lldb", CodeGenOptions::DebuggerKindLLDB)
+   .Cas

r256897 - Avoid assert failure on some invalid cc1 options.

2016-01-05 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Tue Jan  5 19:37:57 2016
New Revision: 256897

URL: http://llvm.org/viewvc/llvm-project?rev=256897&view=rev
Log:
Avoid assert failure on some invalid cc1 options.

Addressing review comment in D13221.

Differential Revision: http://reviews.llvm.org/D15882

Modified:
cfe/trunk/lib/Frontend/CompilerInvocation.cpp
cfe/trunk/test/Driver/debug-options.c

Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=256897&r1=256896&r2=256897&view=diff
==
--- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
+++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Tue Jan  5 19:37:57 2016
@@ -399,18 +399,29 @@ static bool ParseCodeGenArgs(CodeGenOpti
   }
 
   if (Arg *A = Args.getLastArg(OPT_debug_info_kind_EQ)) {
-Opts.setDebugInfo(
-llvm::StringSwitch(A->getValue())
+unsigned Val =
+llvm::StringSwitch(A->getValue())
 .Case("line-tables-only", CodeGenOptions::DebugLineTablesOnly)
 .Case("limited", CodeGenOptions::LimitedDebugInfo)
-.Case("standalone", CodeGenOptions::FullDebugInfo));
+.Case("standalone", CodeGenOptions::FullDebugInfo)
+.Default(~0U);
+if (Val == ~0U)
+  Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args)
+<< A->getValue();
+else
+  Opts.setDebugInfo(static_cast(Val));
   }
   if (Arg *A = Args.getLastArg(OPT_debugger_tuning_EQ)) {
-Opts.setDebuggerTuning(
-llvm::StringSwitch(A->getValue())
-.Case("gdb", CodeGenOptions::DebuggerKindGDB)
-.Case("lldb", CodeGenOptions::DebuggerKindLLDB)
-.Case("sce", CodeGenOptions::DebuggerKindSCE));
+unsigned Val = llvm::StringSwitch(A->getValue())
+   .Case("gdb", CodeGenOptions::DebuggerKindGDB)
+   .Case("lldb", CodeGenOptions::DebuggerKindLLDB)
+   .Case("sce", CodeGenOptions::DebuggerKindSCE)
+   .Default(~0U);
+if (Val == ~0U)
+  Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args)
+<< A->getValue();
+else
+  Opts.setDebuggerTuning(static_cast(Val));
   }
   Opts.DwarfVersion = getLastArgIntValue(Args, OPT_dwarf_version_EQ, 0, Diags);
   Opts.DebugColumnInfo = Args.hasArg(OPT_dwarf_column_info);

Modified: cfe/trunk/test/Driver/debug-options.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/debug-options.c?rev=256897&r1=256896&r2=256897&view=diff
==
--- cfe/trunk/test/Driver/debug-options.c (original)
+++ cfe/trunk/test/Driver/debug-options.c Tue Jan  5 19:37:57 2016
@@ -169,3 +169,8 @@
 // NOCI-NOT: "-dwarf-column-info"
 //
 // GEXTREFS: "-dwarf-ext-refs" "-fmodule-format=obj" 
"-debug-info-kind={{standalone|limited}}"
+
+// RUN: not %clang -cc1 -debug-info-kind=watkind 2>&1 | FileCheck 
-check-prefix=BADSTRING1 %s
+// BADSTRING1: error: invalid value 'watkind' in '-debug-info-kind=watkind'
+// RUN: not %clang -cc1 -debugger-tuning=gmodal 2>&1 | FileCheck 
-check-prefix=BADSTRING2 %s
+// BADSTRING2: error: invalid value 'gmodal' in '-debugger-tuning=gmodal'


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D15882: Avoid assert failure on some invalid cc1 options.

2016-01-05 Thread Douglas Katzman via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL256897: Avoid assert failure on some invalid cc1 options. 
(authored by dougk).

Changed prior to commit:
  http://reviews.llvm.org/D15882?vs=43958&id=44074#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D15882

Files:
  cfe/trunk/lib/Frontend/CompilerInvocation.cpp
  cfe/trunk/test/Driver/debug-options.c

Index: cfe/trunk/test/Driver/debug-options.c
===
--- cfe/trunk/test/Driver/debug-options.c
+++ cfe/trunk/test/Driver/debug-options.c
@@ -169,3 +169,8 @@
 // NOCI-NOT: "-dwarf-column-info"
 //
 // GEXTREFS: "-dwarf-ext-refs" "-fmodule-format=obj" 
"-debug-info-kind={{standalone|limited}}"
+
+// RUN: not %clang -cc1 -debug-info-kind=watkind 2>&1 | FileCheck 
-check-prefix=BADSTRING1 %s
+// BADSTRING1: error: invalid value 'watkind' in '-debug-info-kind=watkind'
+// RUN: not %clang -cc1 -debugger-tuning=gmodal 2>&1 | FileCheck 
-check-prefix=BADSTRING2 %s
+// BADSTRING2: error: invalid value 'gmodal' in '-debugger-tuning=gmodal'
Index: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
===
--- cfe/trunk/lib/Frontend/CompilerInvocation.cpp
+++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp
@@ -399,18 +399,29 @@
   }
 
   if (Arg *A = Args.getLastArg(OPT_debug_info_kind_EQ)) {
-Opts.setDebugInfo(
-llvm::StringSwitch(A->getValue())
+unsigned Val =
+llvm::StringSwitch(A->getValue())
 .Case("line-tables-only", CodeGenOptions::DebugLineTablesOnly)
 .Case("limited", CodeGenOptions::LimitedDebugInfo)
-.Case("standalone", CodeGenOptions::FullDebugInfo));
+.Case("standalone", CodeGenOptions::FullDebugInfo)
+.Default(~0U);
+if (Val == ~0U)
+  Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args)
+<< A->getValue();
+else
+  Opts.setDebugInfo(static_cast(Val));
   }
   if (Arg *A = Args.getLastArg(OPT_debugger_tuning_EQ)) {
-Opts.setDebuggerTuning(
-llvm::StringSwitch(A->getValue())
-.Case("gdb", CodeGenOptions::DebuggerKindGDB)
-.Case("lldb", CodeGenOptions::DebuggerKindLLDB)
-.Case("sce", CodeGenOptions::DebuggerKindSCE));
+unsigned Val = llvm::StringSwitch(A->getValue())
+   .Case("gdb", CodeGenOptions::DebuggerKindGDB)
+   .Case("lldb", CodeGenOptions::DebuggerKindLLDB)
+   .Case("sce", CodeGenOptions::DebuggerKindSCE)
+   .Default(~0U);
+if (Val == ~0U)
+  Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args)
+<< A->getValue();
+else
+  Opts.setDebuggerTuning(static_cast(Val));
   }
   Opts.DwarfVersion = getLastArgIntValue(Args, OPT_dwarf_version_EQ, 0, Diags);
   Opts.DebugColumnInfo = Args.hasArg(OPT_dwarf_column_info);


Index: cfe/trunk/test/Driver/debug-options.c
===
--- cfe/trunk/test/Driver/debug-options.c
+++ cfe/trunk/test/Driver/debug-options.c
@@ -169,3 +169,8 @@
 // NOCI-NOT: "-dwarf-column-info"
 //
 // GEXTREFS: "-dwarf-ext-refs" "-fmodule-format=obj" "-debug-info-kind={{standalone|limited}}"
+
+// RUN: not %clang -cc1 -debug-info-kind=watkind 2>&1 | FileCheck -check-prefix=BADSTRING1 %s
+// BADSTRING1: error: invalid value 'watkind' in '-debug-info-kind=watkind'
+// RUN: not %clang -cc1 -debugger-tuning=gmodal 2>&1 | FileCheck -check-prefix=BADSTRING2 %s
+// BADSTRING2: error: invalid value 'gmodal' in '-debugger-tuning=gmodal'
Index: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
===
--- cfe/trunk/lib/Frontend/CompilerInvocation.cpp
+++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp
@@ -399,18 +399,29 @@
   }
 
   if (Arg *A = Args.getLastArg(OPT_debug_info_kind_EQ)) {
-Opts.setDebugInfo(
-llvm::StringSwitch(A->getValue())
+unsigned Val =
+llvm::StringSwitch(A->getValue())
 .Case("line-tables-only", CodeGenOptions::DebugLineTablesOnly)
 .Case("limited", CodeGenOptions::LimitedDebugInfo)
-.Case("standalone", CodeGenOptions::FullDebugInfo));
+.Case("standalone", CodeGenOptions::FullDebugInfo)
+.Default(~0U);
+if (Val == ~0U)
+  Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args)
+<< A->getValue();
+else
+  Opts.setDebugInfo(static_cast(Val));
   }
   if (Arg *A = Args.getLastArg(OPT_debugger_tuning_EQ)) {
-Opts.setDebuggerTuning(
-llvm::StringSwitch(A->getValue())
-.Case("gdb", CodeGenOptions::DebuggerKindGDB)
-.Case("lldb", CodeGenOptions::DebuggerKindLLDB)
-.Case("sce", CodeGenOptions::Debugg

r253213 - [Myriad]: pass the 'std=' option to moviCompile

2015-11-16 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Mon Nov 16 09:38:40 2015
New Revision: 253213

URL: http://llvm.org/viewvc/llvm-project?rev=253213&view=rev
Log:
[Myriad]: pass the 'std=' option to moviCompile

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=253213&r1=253212&r2=253213&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Mon Nov 16 09:38:40 2015
@@ -9890,7 +9890,7 @@ void tools::SHAVE::Compiler::ConstructJo
   // 'f' flags, optimize flags, and warning options.
   // These are spelled the same way in clang and moviCompile.
   Args.AddAllArgs(CmdArgs, {options::OPT_I_Group, options::OPT_clang_i_Group,
-options::OPT_D, options::OPT_U,
+options::OPT_std_EQ, options::OPT_D, 
options::OPT_U,
 options::OPT_f_Group, options::OPT_f_clang_Group,
 options::OPT_g_Group, options::OPT_M_Group,
 options::OPT_O_Group, options::OPT_W_Group});

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=253213&r1=253212&r2=253213&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Mon Nov 16 09:38:40 2015
@@ -60,6 +60,10 @@
 // RUN:   | FileCheck %s -check-prefix=MDMF
 // MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
 
+// RUN: %clang -target shave-myriad -std=gnu++11 -S %s -o foo.o -### 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=STDEQ
+// STDEQ: "-mcpu=myriad2" "-S" "-std=gnu++11"
+
 // RUN: %clang -target sparc-myriad -### --driver-mode=g++ %s 2>&1 | FileCheck 
%s --check-prefix=STDLIBCXX
 // STDLIBCXX: "-lstdc++" "-lc" "-lgcc"
 


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r253350 - Add trivial utility to append -L arguments to linker step. NFC

2015-11-17 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Tue Nov 17 11:41:23 2015
New Revision: 253350

URL: http://llvm.org/viewvc/llvm-project?rev=253350&view=rev
Log:
Add trivial utility to append -L arguments to linker step. NFC

Modified:
cfe/trunk/include/clang/Driver/ToolChain.h
cfe/trunk/lib/Driver/ToolChain.cpp
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/include/clang/Driver/ToolChain.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/ToolChain.h?rev=253350&r1=253349&r2=253350&view=diff
==
--- cfe/trunk/include/clang/Driver/ToolChain.h (original)
+++ cfe/trunk/include/clang/Driver/ToolChain.h Tue Nov 17 11:41:23 2015
@@ -377,6 +377,10 @@ public:
   virtual void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs) const;
 
+  /// AddFilePathLibArgs - Add each thing in getFilePaths() as a "-L" option.
+  void AddFilePathLibArgs(const llvm::opt::ArgList &Args,
+  llvm::opt::ArgStringList &CmdArgs) const;
+
   /// AddCCKextLibArgs - Add the system specific linker arguments to use
   /// for kernel extensions (Darwin-specific).
   virtual void AddCCKextLibArgs(const llvm::opt::ArgList &Args,

Modified: cfe/trunk/lib/Driver/ToolChain.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChain.cpp?rev=253350&r1=253349&r2=253350&view=diff
==
--- cfe/trunk/lib/Driver/ToolChain.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChain.cpp Tue Nov 17 11:41:23 2015
@@ -616,6 +616,12 @@ void ToolChain::AddCXXStdlibLibArgs(cons
   }
 }
 
+void ToolChain::AddFilePathLibArgs(const ArgList &Args,
+   ArgStringList &CmdArgs) const {
+  for (const auto &LibPath : getFilePaths())
+CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+}
+
 void ToolChain::AddCCKextLibArgs(const ArgList &Args,
  ArgStringList &CmdArgs) const {
   CmdArgs.push_back("-lcc_kext");

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=253350&r1=253349&r2=253350&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue Nov 17 11:41:23 2015
@@ -6153,9 +6153,7 @@ constructHexagonLinkArgs(Compilation &C,
   
//
   // Library Search Paths
   
//
-  const ToolChain::path_list &LibPaths = ToolChain.getFilePaths();
-  for (const auto &LibPath : LibPaths)
-CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+  ToolChain.AddFilePathLibArgs(Args, CmdArgs);
 
   
//
   //
@@ -6525,9 +6523,7 @@ void cloudabi::Linker::ConstructJob(Comp
   }
 
   Args.AddAllArgs(CmdArgs, options::OPT_L);
-  const ToolChain::path_list &Paths = ToolChain.getFilePaths();
-  for (const auto &Path : Paths)
-CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path));
+  ToolChain.AddFilePathLibArgs(Args, CmdArgs);
   Args.AddAllArgs(CmdArgs,
   {options::OPT_T_Group, options::OPT_e, options::OPT_s,
options::OPT_t, options::OPT_Z_Flag, options::OPT_r});
@@ -7127,9 +7123,7 @@ void solaris::Linker::ConstructJob(Compi
 Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o")));
   }
 
-  const ToolChain::path_list &Paths = getToolChain().getFilePaths();
-  for (const auto &Path : Paths)
-CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path));
+  getToolChain().AddFilePathLibArgs(Args, CmdArgs);
 
   Args.AddAllArgs(CmdArgs, {options::OPT_L, options::OPT_T_Group,
 options::OPT_e, options::OPT_r});
@@ -7674,9 +7668,7 @@ void freebsd::Linker::ConstructJob(Compi
   }
 
   Args.AddAllArgs(CmdArgs, options::OPT_L);
-  const ToolChain::path_list &Paths = ToolChain.getFilePaths();
-  for (const auto &Path : Paths)
-CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path));
+  ToolChain.AddFilePathLibArgs(Args, CmdArgs);
   Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
   Args.AddAllArgs(CmdArgs, options::OPT_e);
   Args.AddAllArgs(CmdArgs, options::OPT_s);
@@ -8567,10 +8559,7 @@ void gnutools::Linker::ConstructJob(Comp
   Args.AddAllArgs(CmdArgs, options::OPT_L);
   Args.AddAllArgs(CmdArgs, options::OPT_u);
 
-  const ToolChain::path_list &Paths = ToolChain.getFilePaths();
-
-  for (const auto &Path : Paths)
-CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path));
+  ToolChain.AddFilePathLibArgs(Args, CmdArgs);
 
   if (D.isUsingLTO())
 AddGoldPlugin(ToolChain, Args, CmdArgs, D.getLTOMode() == LTOK_Thin);
@@ -8771,10 

r253372 - Use !hasArg with two options instead of !hasArg && !hasArg.

2015-11-17 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Tue Nov 17 14:28:07 2015
New Revision: 253372

URL: http://llvm.org/viewvc/llvm-project?rev=253372&view=rev
Log:
Use !hasArg with two options instead of !hasArg && !hasArg.

Thereby fixing a warning about failure to claim all args.

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/nostdlib.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=253372&r1=253371&r2=253372&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue Nov 17 14:28:07 2015
@@ -6516,8 +6516,7 @@ void cloudabi::Linker::ConstructJob(Comp
 assert(Output.isNothing() && "Invalid output.");
   }
 
-  if (!Args.hasArg(options::OPT_nostdlib) &&
-  !Args.hasArg(options::OPT_nostartfiles)) {
+  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) {
 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt0.o")));
 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtbegin.o")));
   }
@@ -6533,16 +6532,14 @@ void cloudabi::Linker::ConstructJob(Comp
 
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
 
-  if (!Args.hasArg(options::OPT_nostdlib) &&
-  !Args.hasArg(options::OPT_nodefaultlibs)) {
+  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
 if (D.CCCIsCXX())
   ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
 CmdArgs.push_back("-lc");
 CmdArgs.push_back("-lcompiler_rt");
   }
 
-  if (!Args.hasArg(options::OPT_nostdlib) &&
-  !Args.hasArg(options::OPT_nostartfiles))
+  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles))
 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtend.o")));
 
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
@@ -6889,8 +6886,7 @@ void darwin::Linker::ConstructJob(Compil
   CmdArgs.push_back("-o");
   CmdArgs.push_back(Output.getFilename());
 
-  if (!Args.hasArg(options::OPT_nostdlib) &&
-  !Args.hasArg(options::OPT_nostartfiles))
+  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles))
 getMachOToolChain().addStartObjectFileArgs(Args, CmdArgs);
 
   // SafeStack requires its own runtime libraries
@@ -6922,12 +6918,11 @@ void darwin::Linker::ConstructJob(Compil
 InputFileList.push_back(II.getFilename());
   }
 
-  if (!Args.hasArg(options::OPT_nostdlib) &&
-  !Args.hasArg(options::OPT_nodefaultlibs))
+  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs))
 addOpenMPRuntime(CmdArgs, getToolChain(), Args);
 
-  if (isObjCRuntimeLinked(Args) && !Args.hasArg(options::OPT_nostdlib) &&
-  !Args.hasArg(options::OPT_nodefaultlibs)) {
+  if (isObjCRuntimeLinked(Args) &&
+  !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
 // We use arclite library for both ARC and subscripting support.
 getMachOToolChain().AddLinkARCArgs(Args, CmdArgs);
 
@@ -6948,8 +6943,7 @@ void darwin::Linker::ConstructJob(Compil
 
   getMachOToolChain().addProfileRTLibs(Args, CmdArgs);
 
-  if (!Args.hasArg(options::OPT_nostdlib) &&
-  !Args.hasArg(options::OPT_nodefaultlibs)) {
+  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
 if (getToolChain().getDriver().CCCIsCXX())
   getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
 
@@ -6959,8 +6953,7 @@ void darwin::Linker::ConstructJob(Compil
 getMachOToolChain().AddLinkRuntimeLibArgs(Args, CmdArgs);
   }
 
-  if (!Args.hasArg(options::OPT_nostdlib) &&
-  !Args.hasArg(options::OPT_nostartfiles)) {
+  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) {
 // endfile_spec is empty.
   }
 
@@ -6971,8 +6964,7 @@ void darwin::Linker::ConstructJob(Compil
   for (const Arg *A : Args.filtered(options::OPT_iframework))
 CmdArgs.push_back(Args.MakeArgString(std::string("-F") + A->getValue()));
 
-  if (!Args.hasArg(options::OPT_nostdlib) &&
-  !Args.hasArg(options::OPT_nodefaultlibs)) {
+  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
 if (Arg *A = Args.getLastArg(options::OPT_fveclib)) {
   if (A->getValue() == StringRef("Accelerate")) {
 CmdArgs.push_back("-framework");
@@ -7083,8 +7075,7 @@ void solaris::Linker::ConstructJob(Compi
   // Demangle C++ names in errors
   CmdArgs.push_back("-C");
 
-  if ((!Args.hasArg(options::OPT_nostdlib)) &&
-  (!Args.hasArg(options::OPT_shared))) {
+  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_shared)) {
 CmdArgs.push_back("-e");
 CmdArgs.push_back("_start");
   }
@@ -7110,8 +7101,7 @@ void solaris::Linker::ConstructJob(Compi
 assert(Output.isNothing() && "Invalid output.");
   }
 
-  if (!Args.hasArg(options::OPT_nostdlib) &&
-  !Args.hasArg(options::OPT_nostartfiles)) {
+  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) {
 if (!Args.hasArg(options::OPT_shared))
  

[PATCH] D14754: [Myriad]: insert -L paths into linker cmd only when they exist.

2015-11-17 Thread Douglas Katzman via cfe-commits
dougk created this revision.
dougk added a reviewer: jyknight.
dougk added a subscriber: cfe-commits.
Herald added a subscriber: jyknight.

http://reviews.llvm.org/D14754

Files:
  lib/Driver/ToolChains.cpp
  lib/Driver/ToolChains.h
  lib/Driver/Tools.cpp
  test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtend.o
  test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crti.o
  test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtn.o
  test/Driver/Inputs/basic_myriad_tree/sparc-myriad-elf/lib/crt0.o

Index: test/Driver/Inputs/basic_myriad_tree/sparc-myriad-elf/lib/crt0.o
===
--- /dev/null
+++ test/Driver/Inputs/basic_myriad_tree/sparc-myriad-elf/lib/crt0.o
@@ -0,0 +1 @@
+ 
Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -9910,10 +9910,6 @@
   bool UseDefaultLibs =
   !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs);
 
-  std::string StartFilesDir, BuiltinLibDir;
-  TC.getCompilerSupportDir(StartFilesDir);
-  TC.getBuiltinLibDir(BuiltinLibDir);
-
   if (T.getArch() == llvm::Triple::sparc)
 CmdArgs.push_back("-EB");
   else // SHAVE assumes little-endian, and sparcel is expressly so.
@@ -9937,19 +9933,15 @@
   if (UseStartfiles) {
 // If you want startfiles, it means you want the builtin crti and crtbegin,
 // but not crt0. Myriad link commands provide their own crt0.o as needed.
-CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crti.o"));
-CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crtbegin.o"));
+CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crti.o")));
+CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtbegin.o")));
   }
 
   Args.AddAllArgs(CmdArgs, {options::OPT_L, options::OPT_T_Group,
 options::OPT_e, options::OPT_s, options::OPT_t,
 options::OPT_Z_Flag, options::OPT_r});
 
-  // The linker doesn't use these builtin paths unless directed to,
-  // because it was not compiled for support with sysroots, nor does
-  // it have a default of little-endian with FPU.
-  CmdArgs.push_back(Args.MakeArgString("-L" + BuiltinLibDir));
-  CmdArgs.push_back(Args.MakeArgString("-L" + StartFilesDir));
+  TC.AddFilePathLibArgs(Args, CmdArgs);
 
   AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
 
@@ -9969,8 +9961,8 @@
 CmdArgs.push_back("-lgcc");
   }
   if (UseStartfiles) {
-CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crtend.o"));
-CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crtn.o"));
+CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtend.o")));
+CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtn.o")));
   }
 
   std::string Exec =
Index: lib/Driver/ToolChains.h
===
--- lib/Driver/ToolChains.h
+++ lib/Driver/ToolChains.h
@@ -1062,8 +1062,6 @@
   const llvm::opt::ArgList &DriverArgs,
   llvm::opt::ArgStringList &CC1Args) const override;
   Tool *SelectTool(const JobAction &JA) const override;
-  void getCompilerSupportDir(std::string &Dir) const;
-  void getBuiltinLibDir(std::string &Dir) const;
   unsigned GetDefaultDwarfVersion() const override { return 2; }
 
 protected:
Index: lib/Driver/ToolChains.cpp
===
--- lib/Driver/ToolChains.cpp
+++ lib/Driver/ToolChains.cpp
@@ -4313,7 +4313,27 @@
   case llvm::Triple::shave:
 GCCInstallation.init(Triple, Args, {"sparc-myriad-elf"});
   }
-}
+
+  // The contents of LibDir are independent of the version of gcc.
+  // This contains libc, libg (a superset of libc), libm, libstdc++, libssp.
+  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");
+  if (getVFS().exists(LibDir))
+getFilePaths().push_back(LibDir.str());
+
+  // 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");
+  if (getVFS().exists(CompilerSupportDir))
+getFilePaths().push_back(CompilerSupportDir.str());
+ }
 
 MyriadToolChain::~MyriadToolChain() {}
 
@@ -4359,27 +4379,6 @@
   }
 }
 
-void MyriadToolChain::getCompilerSupportDir(std::string &Dir) const {
-  // 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

r253390 - [Myriad]: -nostdlib implies -nostartfiles

2015-11-17 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Tue Nov 17 16:33:34 2015
New Revision: 253390

URL: http://llvm.org/viewvc/llvm-project?rev=253390&view=rev
Log:
[Myriad]: -nostdlib implies -nostartfiles

Modified:
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=253390&r1=253389&r2=253390&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Tue Nov 17 16:33:34 2015
@@ -9941,7 +9941,7 @@ void tools::Myriad::Linker::ConstructJob
   static_cast(getToolChain());
   const llvm::Triple &T = TC.getTriple();
   ArgStringList CmdArgs;
-  bool UseStartfiles = !Args.hasArg(options::OPT_nostartfiles);
+  bool UseStartfiles = !Args.hasArg(options::OPT_nostdlib, 
options::OPT_nostartfiles);
   bool UseDefaultLibs =
   !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs);
 

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=253390&r1=253389&r2=253390&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Tue Nov 17 16:33:34 2015
@@ -68,6 +68,7 @@
 // STDLIBCXX: "-lstdc++" "-lc" "-lgcc"
 
 // RUN: %clang -target sparc-myriad -### -nostdlib %s 2>&1 | FileCheck %s 
--check-prefix=NOSTDLIB
+// NOSTDLIB-NOT: crtbegin.o
 // NOSTDLIB-NOT: "-lc"
 
 // RUN: %clang -### -c -g %s -target sparc-myriad 2>&1 | FileCheck 
-check-prefix=G_SPARC %s


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D14754: [Myriad]: insert -L paths into linker cmd only when they exist.

2015-11-17 Thread Douglas Katzman via cfe-commits
dougk updated this revision to Diff 40442.
dougk marked 2 inline comments as done.
dougk added a comment.

changes per jyknight


http://reviews.llvm.org/D14754

Files:
  lib/Driver/ToolChains.cpp
  lib/Driver/ToolChains.h
  lib/Driver/Tools.cpp
  test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtend.o
  test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crti.o
  test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtn.o
  test/Driver/Inputs/basic_myriad_tree/sparc-myriad-elf/lib/crt0.o

Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -9945,10 +9945,6 @@
   bool UseDefaultLibs =
   !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs);
 
-  std::string StartFilesDir, BuiltinLibDir;
-  TC.getCompilerSupportDir(StartFilesDir);
-  TC.getBuiltinLibDir(BuiltinLibDir);
-
   if (T.getArch() == llvm::Triple::sparc)
 CmdArgs.push_back("-EB");
   else // SHAVE assumes little-endian, and sparcel is expressly so.
@@ -9972,19 +9968,15 @@
   if (UseStartfiles) {
 // If you want startfiles, it means you want the builtin crti and crtbegin,
 // but not crt0. Myriad link commands provide their own crt0.o as needed.
-CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crti.o"));
-CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crtbegin.o"));
+CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crti.o")));
+CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtbegin.o")));
   }
 
   Args.AddAllArgs(CmdArgs, {options::OPT_L, options::OPT_T_Group,
 options::OPT_e, options::OPT_s, options::OPT_t,
 options::OPT_Z_Flag, options::OPT_r});
 
-  // The linker doesn't use these builtin paths unless directed to,
-  // because it was not compiled for support with sysroots, nor does
-  // it have a default of little-endian with FPU.
-  CmdArgs.push_back(Args.MakeArgString("-L" + BuiltinLibDir));
-  CmdArgs.push_back(Args.MakeArgString("-L" + StartFilesDir));
+  TC.AddFilePathLibArgs(Args, CmdArgs);
 
   AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
 
@@ -10004,8 +9996,8 @@
 CmdArgs.push_back("-lgcc");
   }
   if (UseStartfiles) {
-CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crtend.o"));
-CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crtn.o"));
+CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtend.o")));
+CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtn.o")));
   }
 
   std::string Exec =
Index: lib/Driver/ToolChains.h
===
--- lib/Driver/ToolChains.h
+++ lib/Driver/ToolChains.h
@@ -1068,8 +1068,6 @@
   const llvm::opt::ArgList &DriverArgs,
   llvm::opt::ArgStringList &CC1Args) const override;
   Tool *SelectTool(const JobAction &JA) const override;
-  void getCompilerSupportDir(std::string &Dir) const;
-  void getBuiltinLibDir(std::string &Dir) const;
   unsigned GetDefaultDwarfVersion() const override { return 2; }
 
 protected:
Index: lib/Driver/ToolChains.cpp
===
--- lib/Driver/ToolChains.cpp
+++ lib/Driver/ToolChains.cpp
@@ -4367,6 +4367,26 @@
   case llvm::Triple::shave:
 GCCInstallation.init(Triple, Args, {"sparc-myriad-elf"});
   }
+
+  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.
+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");
+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());
+  }
 }
 
 MyriadToolChain::~MyriadToolChain() {}
@@ -4413,27 +4433,6 @@
   }
 }
 
-void MyriadToolChain::getCompilerSupportDir(std::string &Dir) const {
-  // 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> Result(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 (this->getTriple().getArch() == llvm::Triple::sparcel)
-llvm::sys::path::app

r253467 - [Myriad]: insert -L paths into linker cmd only when they exist.

2015-11-18 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Nov 18 10:24:46 2015
New Revision: 253467

URL: http://llvm.org/viewvc/llvm-project?rev=253467&view=rev
Log:
[Myriad]: insert -L paths into linker cmd only when they exist.

Differential Revision: http://reviews.llvm.org/D14754

Added:

cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtend.o

cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crti.o

cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtn.o
cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-elf/lib/
cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-elf/lib/crt0.o
Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/lib/Driver/ToolChains.h
cfe/trunk/lib/Driver/Tools.cpp

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=253467&r1=253466&r2=253467&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Wed Nov 18 10:24:46 2015
@@ -4367,6 +4367,26 @@ MyriadToolChain::MyriadToolChain(const D
   case llvm::Triple::shave:
 GCCInstallation.init(Triple, Args, {"sparc-myriad-elf"});
   }
+
+  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.
+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");
+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());
+  }
 }
 
 MyriadToolChain::~MyriadToolChain() {}
@@ -4413,27 +4433,6 @@ Tool *MyriadToolChain::SelectTool(const
   }
 }
 
-void MyriadToolChain::getCompilerSupportDir(std::string &Dir) const {
-  // 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> Result(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 (this->getTriple().getArch() == llvm::Triple::sparcel)
-llvm::sys::path::append(Result, "le");
-  Dir.assign(Result.str());
-}
-void MyriadToolChain::getBuiltinLibDir(std::string &Dir) const {
-  // The contents of LibDir are independent of the version of gcc.
-  // This contains libc, libg (a superset of libc), libm, libstdc++, libssp.
-  SmallString<128> Result(GCCInstallation.getParentLibPath());
-  if (this->getTriple().getArch() == llvm::Triple::sparcel)
-llvm::sys::path::append(Result, "../sparc-myriad-elf/lib/le");
-  else
-llvm::sys::path::append(Result, "../sparc-myriad-elf/lib");
-  Dir.assign(Result.str());
-}
-
 Tool *MyriadToolChain::buildLinker() const {
   return new tools::Myriad::Linker(*this);
 }

Modified: cfe/trunk/lib/Driver/ToolChains.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=253467&r1=253466&r2=253467&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.h (original)
+++ cfe/trunk/lib/Driver/ToolChains.h Wed Nov 18 10:24:46 2015
@@ -1068,8 +1068,6 @@ public:
   const llvm::opt::ArgList &DriverArgs,
   llvm::opt::ArgStringList &CC1Args) const override;
   Tool *SelectTool(const JobAction &JA) const override;
-  void getCompilerSupportDir(std::string &Dir) const;
-  void getBuiltinLibDir(std::string &Dir) const;
   unsigned GetDefaultDwarfVersion() const override { return 2; }
 
 protected:

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=253467&r1=253466&r2=253467&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Wed Nov 18 10:24:46 2015
@@ -9945,10 +9945,6 @@ void tools::Myriad::Linker::ConstructJob
   bool UseDefaultLibs =
   !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs);
 
-  std::string StartFilesDir, BuiltinLibDir;
-  TC.getCompilerSupportDir(StartFilesDir);
-  TC.getBuiltinLibDir(BuiltinLibDir);
-
   if (T.getArch() == llvm::Triple::sparc)
  

Re: [PATCH] D14754: [Myriad]: insert -L paths into linker cmd only when they exist.

2015-11-18 Thread Douglas Katzman via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL253467: [Myriad]: insert -L paths into linker cmd only when 
they exist. (authored by dougk).

Changed prior to commit:
  http://reviews.llvm.org/D14754?vs=40442&id=40516#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D14754

Files:
  cfe/trunk/lib/Driver/ToolChains.cpp
  cfe/trunk/lib/Driver/ToolChains.h
  cfe/trunk/lib/Driver/Tools.cpp
  
cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtend.o
  
cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crti.o
  
cfe/trunk/test/Driver/Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtn.o
  cfe/trunk/test/Driver/Inputs/basic_myriad_tree/sparc-myriad-elf/lib/crt0.o

Index: cfe/trunk/lib/Driver/ToolChains.h
===
--- cfe/trunk/lib/Driver/ToolChains.h
+++ cfe/trunk/lib/Driver/ToolChains.h
@@ -1068,8 +1068,6 @@
   const llvm::opt::ArgList &DriverArgs,
   llvm::opt::ArgStringList &CC1Args) const override;
   Tool *SelectTool(const JobAction &JA) const override;
-  void getCompilerSupportDir(std::string &Dir) const;
-  void getBuiltinLibDir(std::string &Dir) const;
   unsigned GetDefaultDwarfVersion() const override { return 2; }
 
 protected:
Index: cfe/trunk/lib/Driver/ToolChains.cpp
===
--- cfe/trunk/lib/Driver/ToolChains.cpp
+++ cfe/trunk/lib/Driver/ToolChains.cpp
@@ -4367,6 +4367,26 @@
   case llvm::Triple::shave:
 GCCInstallation.init(Triple, Args, {"sparc-myriad-elf"});
   }
+
+  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.
+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");
+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());
+  }
 }
 
 MyriadToolChain::~MyriadToolChain() {}
@@ -4413,27 +4433,6 @@
   }
 }
 
-void MyriadToolChain::getCompilerSupportDir(std::string &Dir) const {
-  // 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> Result(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 (this->getTriple().getArch() == llvm::Triple::sparcel)
-llvm::sys::path::append(Result, "le");
-  Dir.assign(Result.str());
-}
-void MyriadToolChain::getBuiltinLibDir(std::string &Dir) const {
-  // The contents of LibDir are independent of the version of gcc.
-  // This contains libc, libg (a superset of libc), libm, libstdc++, libssp.
-  SmallString<128> Result(GCCInstallation.getParentLibPath());
-  if (this->getTriple().getArch() == llvm::Triple::sparcel)
-llvm::sys::path::append(Result, "../sparc-myriad-elf/lib/le");
-  else
-llvm::sys::path::append(Result, "../sparc-myriad-elf/lib");
-  Dir.assign(Result.str());
-}
-
 Tool *MyriadToolChain::buildLinker() const {
   return new tools::Myriad::Linker(*this);
 }
Index: cfe/trunk/lib/Driver/Tools.cpp
===
--- cfe/trunk/lib/Driver/Tools.cpp
+++ cfe/trunk/lib/Driver/Tools.cpp
@@ -9945,10 +9945,6 @@
   bool UseDefaultLibs =
   !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs);
 
-  std::string StartFilesDir, BuiltinLibDir;
-  TC.getCompilerSupportDir(StartFilesDir);
-  TC.getBuiltinLibDir(BuiltinLibDir);
-
   if (T.getArch() == llvm::Triple::sparc)
 CmdArgs.push_back("-EB");
   else // SHAVE assumes little-endian, and sparcel is expressly so.
@@ -9972,19 +9968,15 @@
   if (UseStartfiles) {
 // If you want startfiles, it means you want the builtin crti and crtbegin,
 // but not crt0. Myriad link commands provide their own crt0.o as needed.
-CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crti.o"));
-CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crtbegin.o"));
+CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crti.o")));
+CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtbegin.o")));
   }
 
   Args.AddAllArgs(CmdArgs, {options::OPT_L, options::O

r253476 - [Myriad]: fix test for Windows

2015-11-18 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Wed Nov 18 11:19:47 2015
New Revision: 253476

URL: http://llvm.org/viewvc/llvm-project?rev=253476&view=rev
Log:
[Myriad]: fix test for Windows

Modified:
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=253476&r1=253475&r2=253476&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Wed Nov 18 11:19:47 2015
@@ -1,12 +1,12 @@
 // RUN: %clang -no-canonical-prefixes -### -target sparc-myriad-rtems-elf %s \
 // RUN: -B %S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s 
-check-prefix=LINK_WITH_RTEMS
-// LINK_WITH_RTEMS: 
Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crti.o
-// LINK_WITH_RTEMS: 
Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtbegin.o
+// LINK_WITH_RTEMS: Inputs{{.*}}crti.o
+// LINK_WITH_RTEMS: Inputs{{.*}}crtbegin.o
 // LINK_WITH_RTEMS: 
"-L{{.*}}Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/../../..{{/|}}../sparc-myriad-elf/lib"
 // LINK_WITH_RTEMS: 
"-L{{.*}}Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2"
 // LINK_WITH_RTEMS: "--start-group" "-lc" "-lrtemscpu" "-lrtemsbsp" 
"--end-group" "-lgcc"
-// LINK_WITH_RTEMS: 
Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtend.o
-// LINK_WITH_RTEMS: 
Inputs/basic_myriad_tree/lib/gcc/sparc-myriad-elf/4.8.2/crtn.o
+// LINK_WITH_RTEMS: Inputs{{.*}}crtend.o
+// LINK_WITH_RTEMS: Inputs{{.*}}crtn.o
 
 // RUN: %clang -c -no-canonical-prefixes -### -target sparc-myriad-rtems-elf 
-x c++ %s \
 // RUN: -B %S/Inputs/basic_myriad_tree 2>&1 | FileCheck %s 
-check-prefix=COMPILE_CXX


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r253647 - [Myriad]: handle Preprocess job action (-E)

2015-11-19 Thread Douglas Katzman via cfe-commits
Author: dougk
Date: Thu Nov 19 22:58:12 2015
New Revision: 253647

URL: http://llvm.org/viewvc/llvm-project?rev=253647&view=rev
Log:
[Myriad]: handle Preprocess job action (-E)

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/myriad-toolchain.c

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=253647&r1=253646&r2=253647&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Thu Nov 19 22:58:12 2015
@@ -4434,6 +4434,7 @@ Tool *MyriadToolChain::SelectTool(const
   if (!isShaveCompilation(getTriple()))
 return ToolChain::SelectTool(JA);
   switch (JA.getKind()) {
+  case Action::PreprocessJobClass:
   case Action::CompileJobClass:
 if (!Compiler)
   Compiler.reset(new tools::SHAVE::Compiler(*this));

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=253647&r1=253646&r2=253647&view=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Thu Nov 19 22:58:12 2015
@@ -9895,17 +9895,22 @@ void tools::SHAVE::Compiler::ConstructJo
   const InputInfoList &Inputs,
   const ArgList &Args,
   const char *LinkingOutput) const {
-
   ArgStringList CmdArgs;
-
   assert(Inputs.size() == 1);
   const InputInfo &II = Inputs[0];
-  assert(II.getType() == types::TY_C || II.getType() == types::TY_CXX);
-  assert(Output.getType() == types::TY_PP_Asm); // Require preprocessed asm.
+  assert(II.getType() == types::TY_C || II.getType() == types::TY_CXX ||
+ II.getType() == types::TY_PP_CXX);
 
-  CmdArgs.push_back("-DMYRIAD2");
+  if (JA.getKind() == Action::PreprocessJobClass) {
+Args.ClaimAllArgs();
+CmdArgs.push_back("-E");
+  } else {
+assert(Output.getType() == types::TY_PP_Asm); // Require preprocessed asm.
+CmdArgs.push_back("-S");
+CmdArgs.push_back("-fno-exceptions"); // Always do this even if 
unspecified.
+  }
   CmdArgs.push_back("-mcpu=myriad2");
-  CmdArgs.push_back("-S");
+  CmdArgs.push_back("-DMYRIAD2");
 
   // Append all -I, -iquote, -isystem paths, defines/undefines,
   // 'f' flags, optimize flags, and warning options.
@@ -9931,8 +9936,6 @@ void tools::SHAVE::Compiler::ConstructJo
 }
   }
 
-  CmdArgs.push_back("-fno-exceptions"); // Always do this even if unspecified.
-
   CmdArgs.push_back(II.getFilename());
   CmdArgs.push_back("-o");
   CmdArgs.push_back(Output.getFilename());

Modified: cfe/trunk/test/Driver/myriad-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/myriad-toolchain.c?rev=253647&r1=253646&r2=253647&view=diff
==
--- cfe/trunk/test/Driver/myriad-toolchain.c (original)
+++ cfe/trunk/test/Driver/myriad-toolchain.c Thu Nov 19 22:58:12 2015
@@ -38,7 +38,7 @@
 
 // RUN: %clang -target shave-myriad -c -### %s -isystem somewhere -Icommon 
-Wa,-yippee 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MOVICOMPILE
-// MOVICOMPILE: moviCompile" "-DMYRIAD2" "-mcpu=myriad2" "-S" "-isystem" 
"somewhere" "-I" "common"
+// MOVICOMPILE: moviCompile" "-S" "-fno-exceptions" "-mcpu=myriad2" 
"-DMYRIAD2" "-isystem" "somewhere" "-I" "common"
 // MOVICOMPILE: moviAsm" "-no6thSlotCompression" "-cv:myriad2" "-noSPrefixing" 
"-a"
 // MOVICOMPILE: "-yippee" "-i:somewhere" "-i:common" "-elf"
 
@@ -58,11 +58,15 @@
 
 // RUN: %clang -target shave-myriad -c %s -o foo.o -### -MD -MF dep.d 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=MDMF
-// MDMF: "-S" "-MD" "-MF" "dep.d" "-MT" "foo.o"
+// MDMF: "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-MD" "-MF" 
"dep.d" "-MT" "foo.o"
 
 // RUN: %clang -target shave-myriad -std=gnu++11 -S %s -o foo.o -### 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=STDEQ
-// STDEQ: "-mcpu=myriad2" "-S" "-std=gnu++11"
+// STDEQ: "-S" "-fno-exceptions" "-mcpu=myriad2" "-DMYRIAD2" "-std=gnu++11"
+
+// RUN: %clang -target shave-myriad -E -Ifoo %s -o foo.i -### 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=PREPROCESS
+// PREPROCESS: "-E" "-mcpu=myriad2" "-DMYRIAD2" "-I" "foo"
 
 // RUN: %clang -target sparc-myriad -### --driver-mode=g++ %s 2>&1 | FileCheck 
%s --check-prefix=STDLIBCXX
 // STDLIBCXX: "-lstdc++" "-lc" "-lgcc"


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits