[PATCH] D55646: [ASTImporter] Make ODR diagnostics warning by default

2018-12-23 Thread Aleksei Sidorin via Phabricator via cfe-commits
a_sidorin added subscribers: bruno, aaron.ballman, rsmith.
a_sidorin added a comment.

Hello Endre.
I agree that it doesn't make sense to have 'errors' in AST merging tools, and 
the changes for ASTImporter part are welcome. However, I don't feel so positive 
to modules support changes and I don't think we are allowed to change this. 
@aaron.ballman, @rsmith what do you think?
@bruno, you're the original author of the related Sema code. What do you think, 
should this be a warning or an error in Sema?


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55646/new/

https://reviews.llvm.org/D55646



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


[PATCH] D56047: [Driver] Disable -faddrsig on Gentoo by default

2018-12-23 Thread Kamil Rytarowski via Phabricator via cfe-commits
krytarowski added a comment.

It was disabled on NetBSD for the same reason - GNU strip(1) is breaking: 
http://netbsd.org/~kamil/llvm/strip.txt


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56047/new/

https://reviews.llvm.org/D56047



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


[PATCH] D55734: [analyzer] Revise GenericTaintChecker's internal representation

2018-12-23 Thread Aleksei Sidorin via Phabricator via cfe-commits
a_sidorin added inline comments.



Comment at: lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp:156
+bool isDestinationArgument(unsigned ArgNum) const {
+  return (std::find(DstArgs.begin(), DstArgs.end(), ArgNum) !=
+  DstArgs.end());

llvm::find?



Comment at: lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp:192
+"(CERT/STR31-C. Guarantee that storage for strings has sufficient space "
+"for "
+"character data and the null terminator)";

This string formatting change looks a bit broken.



Comment at: lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp:346
 
-  for (llvm::ImmutableSet::iterator
- I = TaintArgs.begin(), E = TaintArgs.end(); I != E; ++I) {
-unsigned ArgNum  = *I;
+  for (auto I = TaintArgs.begin(), E = TaintArgs.end(); I != E; ++I) {
+unsigned ArgNum = *I;

`for (unsigned ArgNum : TaintArgs)`?



Comment at: lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp:488
   // Mark the arguments which should be tainted after the function returns.
-  for (ArgVector::const_iterator I = DstArgs.begin(),
- E = DstArgs.end(); I != E; ++I) {
+  for (auto I = DstArgs.begin(), E = DstArgs.end(); I != E; ++I) {
 unsigned ArgNum = *I;

`for (unsigned ArgNum : DstArgs)`?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55734/new/

https://reviews.llvm.org/D55734



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


[PATCH] D55280: [CTU] Make loadExternalAST return with non nullptr on success

2018-12-23 Thread Aleksei Sidorin via Phabricator via cfe-commits
a_sidorin accepted this revision.
a_sidorin added a comment.
This revision is now accepted and ready to land.

Hi Gabor,
Yes, this looks good. Thanks!


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55280/new/

https://reviews.llvm.org/D55280



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


[PATCH] D56047: [Driver] Disable -faddrsig on Gentoo by default

2018-12-23 Thread Petr Hosek via Phabricator via cfe-commits
phosek accepted this revision.
phosek added a comment.
This revision is now accepted and ready to land.

LGTM, would it be possible to also include https://bugs.gentoo.org/667854 in 
the commit message for reference?


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56047/new/

https://reviews.llvm.org/D56047



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


[PATCH] D55915: [Driver] Make -fno-omit-frame-pointer imply -mno-omit-leaf-frame-pointer

2018-12-23 Thread Chandler Carruth via Phabricator via cfe-commits
chandlerc requested changes to this revision.
chandlerc added inline comments.
This revision now requires changes to proceed.



Comment at: lib/CodeGen/CGCall.cpp:1739
   FuncAttrs.addAttribute("no-frame-pointer-elim", "true");
-  FuncAttrs.addAttribute("no-frame-pointer-elim-non-leaf");
 }

This seems like an unrelated change?



Comment at: lib/Driver/ToolChains/Clang.cpp:592-595
+  if (Arg *A = Args.getLastArg(options::OPT_fno_omit_frame_pointer,
+   options::OPT_fomit_frame_pointer))
+return A->getOption().matches(options::OPT_fno_omit_frame_pointer) ||
+   mustUseFramePointerForTarget(Triple);

This doesn't correctly handle "last-flag-wins". Consider the case of 
`-mno-omit-leaf-frame-pointer -fomit-frame-pointer`. That should omit the leaf 
frame pointer, but if I read this correctly the logic here will use a leaf 
frame pointer.



Comment at: test/Driver/frame-pointer-elim.c:92
+
+// RUN: %clang -### -S -Os -fno-omit-frame-pointer 
-mno-omit-leaf-frame-pointer %s 2>&1 | \
+// RUN:   FileCheck --check-prefix=NO-OMIT-ALL2 %s

As indicated above, you need a test of the reverse order as well.


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55915/new/

https://reviews.llvm.org/D55915



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


[PATCH] D55734: [analyzer] Revise GenericTaintChecker's internal representation

2018-12-23 Thread Borsik Gábor via Phabricator via cfe-commits
boga95 updated this revision to Diff 179436.
boga95 marked 7 inline comments as done.

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55734/new/

https://reviews.llvm.org/D55734

Files:
  lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp

Index: lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
===
--- lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
+++ lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
@@ -23,15 +23,20 @@
 #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
 #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h"
 #include 
+#include 
+#include 
 
 using namespace clang;
 using namespace ento;
 
 namespace {
-class GenericTaintChecker : public Checker< check::PostStmt,
-check::PreStmt > {
+class GenericTaintChecker
+: public Checker, check::PreStmt> {
 public:
-  static void *getTag() { static int Tag; return &Tag; }
+  static void *getTag() {
+static int Tag;
+return &Tag;
+  }
 
   void checkPostStmt(const CallExpr *CE, CheckerContext &C) const;
 
@@ -43,7 +48,7 @@
   static const unsigned ReturnValueIndex = UINT_MAX - 1;
 
   mutable std::unique_ptr BT;
-  inline void initBugType() const {
+  void initBugType() const {
 if (!BT)
   BT.reset(new BugType(this, "Use of Untrusted Data", "Untrusted Data"));
   }
@@ -69,8 +74,8 @@
   static Optional getPointedToSVal(CheckerContext &C, const Expr *Arg);
 
   /// Functions defining the attack surface.
-  typedef ProgramStateRef (GenericTaintChecker::*FnCheck)(const CallExpr *,
-   CheckerContext &C) const;
+  using FnCheck = ProgramStateRef (GenericTaintChecker::*)(
+  const CallExpr *, CheckerContext &C) const;
   ProgramStateRef postScanf(const CallExpr *CE, CheckerContext &C) const;
   ProgramStateRef postSocket(const CallExpr *CE, CheckerContext &C) const;
   ProgramStateRef postRetTaint(const CallExpr *CE, CheckerContext &C) const;
@@ -100,7 +105,7 @@
   bool generateReportIfTainted(const Expr *E, const char Msg[],
CheckerContext &C) const;
 
-  typedef SmallVector ArgVector;
+  using ArgVector = SmallVector;
 
   /// A struct used to specify taint propagation rules for a function.
   ///
@@ -112,50 +117,47 @@
   /// ReturnValueIndex is added to the dst list, the return value will be
   /// tainted.
   struct TaintPropagationRule {
+enum class VariadicType { None, Src, Dst };
+
 /// List of arguments which can be taint sources and should be checked.
 ArgVector SrcArgs;
 /// List of arguments which should be tainted on function return.
 ArgVector DstArgs;
-// TODO: Check if using other data structures would be more optimal.
-
-TaintPropagationRule() {}
-
-TaintPropagationRule(unsigned SArg,
- unsigned DArg, bool TaintRet = false) {
-  SrcArgs.push_back(SArg);
-  DstArgs.push_back(DArg);
-  if (TaintRet)
-DstArgs.push_back(ReturnValueIndex);
-}
-
-TaintPropagationRule(unsigned SArg1, unsigned SArg2,
- unsigned DArg, bool TaintRet = false) {
-  SrcArgs.push_back(SArg1);
-  SrcArgs.push_back(SArg2);
-  DstArgs.push_back(DArg);
-  if (TaintRet)
-DstArgs.push_back(ReturnValueIndex);
-}
+/// Index for the first variadic parameter if exist.
+unsigned VariadicIndex;
+/// Show when a function has variadic parameters. If it has, it marks all
+/// of them as source or destination.
+VariadicType VarType;
+
+TaintPropagationRule()
+: VariadicIndex(InvalidArgIndex), VarType(VariadicType::None) {}
+
+TaintPropagationRule(std::initializer_list &&Src,
+ std::initializer_list &&Dst,
+ VariadicType Var = VariadicType::None,
+ unsigned VarIndex = InvalidArgIndex)
+: SrcArgs(std::move(Src)), DstArgs(std::move(Dst)),
+  VariadicIndex(VarIndex), VarType(Var) {}
 
 /// Get the propagation rule for a given function.
 static TaintPropagationRule
-  getTaintPropagationRule(const FunctionDecl *FDecl,
-  StringRef Name,
-  CheckerContext &C);
+getTaintPropagationRule(const FunctionDecl *FDecl, StringRef Name,
+CheckerContext &C);
 
-inline void addSrcArg(unsigned A) { SrcArgs.push_back(A); }
-inline void addDstArg(unsigned A)  { DstArgs.push_back(A); }
+void addSrcArg(unsigned A) { SrcArgs.push_back(A); }
+void addDstArg(unsigned A) { DstArgs.push_back(A); }
 
-inline bool isNull() const { return SrcArgs.empty(); }
+bool isNull() const {
+  return SrcArgs.empty() && DstArgs.empty() &&
+ VariadicType::None == VarType;
+}
 
-inline bool isDestinationArgument(unsigned ArgNum) const {
-  return (std::find(DstA

[PATCH] D55793: [clang-tidy] Add duplicated access specifier readability check (PR25403)

2018-12-23 Thread Jonas Toth via Phabricator via cfe-commits
JonasToth added inline comments.



Comment at: clang-tidy/readability/DuplicatedAccessSpecifiersCheck.cpp:51
+  diag(ASDecl->getLocation(), "duplicated access specifier")
+  << MatchedDecl
+  << FixItHint::CreateRemoval(ASDecl->getSourceRange());

aaron.ballman wrote:
> m4tx wrote:
> > aaron.ballman wrote:
> > > There is no %0 in the diagnostic string, so I'm not certain what this 
> > > argument is trying to print out. Did you mean `ASDecl->getSourceRange()` 
> > > for the underlining?
> > Sorry, this is another line I forgot to remove. Thanks for pointing this 
> > out!
> > 
> > By the way, does the underlining work in clang-tidy's `diag()` function? I 
> > see it is used outside the project, but here only `FixItHint`s seem to 
> > generate underline in the generated messages.
> That's a good question that I don't actually know the answer to. :-D I 
> believe it still works -- you can try it out by passing a `SourceRange` to 
> the `diag()` call, like:
> ```
> diag(LastASDecl->getLocation(), "duplicated access specifier") << 
> SomeSourceRange;
> ```
> You should see the range from `SomeSourceRange` underlined.
I believe, if you pass in a token or tokenrange or so, the underlying exists. I 
thought i got suprised by something like that once, not sure though.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55793/new/

https://reviews.llvm.org/D55793



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


[PATCH] D56054: [gn build] Add build files for clang/tools/{clang-diff,clang-import-test,diagtool and clang/lib/Tooling, clang/lib/Tooling/ASTDiff

2018-12-23 Thread Phabricator via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL350024: [gn build] Add build files for 
clang/tools/{clang-diff,clang-import-test… (authored by nico, committed by ).
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D56054?vs=179431&id=179438#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56054/new/

https://reviews.llvm.org/D56054

Files:
  llvm/trunk/utils/gn/secondary/BUILD.gn
  llvm/trunk/utils/gn/secondary/clang/lib/Tooling/ASTDiff/BUILD.gn
  llvm/trunk/utils/gn/secondary/clang/lib/Tooling/BUILD.gn
  llvm/trunk/utils/gn/secondary/clang/tools/clang-diff/BUILD.gn
  llvm/trunk/utils/gn/secondary/clang/tools/clang-import-test/BUILD.gn
  llvm/trunk/utils/gn/secondary/clang/tools/diagtool/BUILD.gn

Index: llvm/trunk/utils/gn/secondary/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/BUILD.gn
@@ -1,7 +1,10 @@
 group("default") {
   deps = [
 ":clang",
+"//clang/tools/clang-diff",
 "//clang/tools/clang-format",
+"//clang/tools/clang-import-test",
+"//clang/tools/diagtool",
 "//lld/test",
 "//llvm/tools/llvm-cat",
 "//llvm/tools/llvm-lto",
Index: llvm/trunk/utils/gn/secondary/clang/lib/Tooling/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/lib/Tooling/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/lib/Tooling/BUILD.gn
@@ -0,0 +1,31 @@
+static_library("Tooling") {
+  output_name = "clangTooling"
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/include/clang/Driver:Options",
+"//clang/lib/AST",
+"//clang/lib/ASTMatchers",
+"//clang/lib/Basic",
+"//clang/lib/Driver",
+"//clang/lib/Format",
+"//clang/lib/Frontend",
+"//clang/lib/Lex",
+"//clang/lib/Rewrite",
+"//clang/lib/Tooling/Core",
+  ]
+  sources = [
+"AllTUsExecution.cpp",
+"ArgumentsAdjusters.cpp",
+"CommonOptionsParser.cpp",
+"CompilationDatabase.cpp",
+"Execution.cpp",
+"FileMatchTrie.cpp",
+"FixIt.cpp",
+"InterpolatingCompilationDatabase.cpp",
+"JSONCompilationDatabase.cpp",
+"Refactoring.cpp",
+"RefactoringCallbacks.cpp",
+"StandaloneExecution.cpp",
+"Tooling.cpp",
+  ]
+}
Index: llvm/trunk/utils/gn/secondary/clang/lib/Tooling/ASTDiff/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/lib/Tooling/ASTDiff/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/lib/Tooling/ASTDiff/BUILD.gn
@@ -0,0 +1,13 @@
+static_library("ASTDiff") {
+  output_name = "clangToolingASTDiff"
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/lib/AST",
+"//clang/lib/Basic",
+"//clang/lib/Lex",
+"//llvm/lib/Support",
+  ]
+  sources = [
+"ASTDiff.cpp",
+  ]
+}
Index: llvm/trunk/utils/gn/secondary/clang/tools/diagtool/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/tools/diagtool/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/tools/diagtool/BUILD.gn
@@ -0,0 +1,18 @@
+executable("diagtool") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/include/clang/Basic:DiagnosticIndexName",
+"//clang/lib/Basic",
+"//clang/lib/Frontend",
+"//llvm/lib/Support",
+  ]
+  sources = [
+"DiagTool.cpp",
+"DiagnosticNames.cpp",
+"FindDiagnosticID.cpp",
+"ListWarnings.cpp",
+"ShowEnabledWarnings.cpp",
+"TreeView.cpp",
+"diagtool_main.cpp",
+  ]
+}
Index: llvm/trunk/utils/gn/secondary/clang/tools/clang-diff/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/tools/clang-diff/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/tools/clang-diff/BUILD.gn
@@ -0,0 +1,13 @@
+executable("clang-diff") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/lib/Basic",
+"//clang/lib/Frontend",
+"//clang/lib/Tooling",
+"//clang/lib/Tooling/ASTDiff",
+"//llvm/lib/Support",
+  ]
+  sources = [
+"ClangDiff.cpp",
+  ]
+}
Index: llvm/trunk/utils/gn/secondary/clang/tools/clang-import-test/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/tools/clang-import-test/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/tools/clang-import-test/BUILD.gn
@@ -0,0 +1,17 @@
+executable("clang-import-test") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/lib/AST",
+"//clang/lib/Basic",
+"//clang/lib/CodeGen",
+"//clang/lib/Driver",
+"//clang/lib/Frontend",
+"//clang/lib/Lex",
+"//clang/lib/Parse",
+"//llvm/lib/IR",
+"//llvm/lib/Support",
+  ]
+  sources = [
+"clang-import-test.cpp",
+  ]
+}
__

[PATCH] D56055: [gn build] Add build files for clang/tools/{clang-refactor, clang-rename}, clang/utils/hmaptool, clang/lib/Tooling/Refactoring

2018-12-23 Thread Phabricator via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL350025: [gn build] Add build files for 
clang/tools/{clang-refactor,clang-rename}… (authored by nico, committed by ).
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D56055?vs=179432&id=179439#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56055/new/

https://reviews.llvm.org/D56055

Files:
  llvm/trunk/utils/gn/secondary/BUILD.gn
  llvm/trunk/utils/gn/secondary/clang/lib/Tooling/Refactoring/BUILD.gn
  llvm/trunk/utils/gn/secondary/clang/tools/clang-refactor/BUILD.gn
  llvm/trunk/utils/gn/secondary/clang/tools/clang-rename/BUILD.gn
  llvm/trunk/utils/gn/secondary/clang/utils/hmaptool/BUILD.gn

Index: llvm/trunk/utils/gn/secondary/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/BUILD.gn
@@ -4,7 +4,10 @@
 "//clang/tools/clang-diff",
 "//clang/tools/clang-format",
 "//clang/tools/clang-import-test",
+"//clang/tools/clang-refactor",
+"//clang/tools/clang-rename",
 "//clang/tools/diagtool",
+"//clang/utils/hmaptool",
 "//lld/test",
 "//llvm/tools/llvm-cat",
 "//llvm/tools/llvm-lto",
Index: llvm/trunk/utils/gn/secondary/clang/lib/Tooling/Refactoring/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/lib/Tooling/Refactoring/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/lib/Tooling/Refactoring/BUILD.gn
@@ -0,0 +1,29 @@
+static_library("Refactoring") {
+  output_name = "clangToolingRefactor"
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/lib/AST",
+"//clang/lib/ASTMatchers",
+"//clang/lib/Basic",
+"//clang/lib/Format",
+"//clang/lib/Index",
+"//clang/lib/Lex",
+"//clang/lib/Rewrite",
+"//clang/lib/Tooling/Core",
+"//llvm/lib/Support",
+  ]
+  include_dirs = [ "." ]
+  sources = [
+"ASTSelection.cpp",
+"ASTSelectionRequirements.cpp",
+"AtomicChange.cpp",
+"Extract/Extract.cpp",
+"Extract/SourceExtraction.cpp",
+"RefactoringActions.cpp",
+"Rename/RenamingAction.cpp",
+"Rename/SymbolOccurrences.cpp",
+"Rename/USRFinder.cpp",
+"Rename/USRFindingAction.cpp",
+"Rename/USRLocFinder.cpp",
+  ]
+}
Index: llvm/trunk/utils/gn/secondary/clang/utils/hmaptool/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/utils/hmaptool/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/utils/hmaptool/BUILD.gn
@@ -0,0 +1,8 @@
+copy("hmaptool") {
+  sources = [
+"hmaptool",
+  ]
+  outputs = [
+"$root_out_dir/bin/{{source_file_part}}",
+  ]
+}
Index: llvm/trunk/utils/gn/secondary/clang/tools/clang-rename/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/tools/clang-rename/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/tools/clang-rename/BUILD.gn
@@ -0,0 +1,16 @@
+executable("clang-rename") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/lib/Basic",
+"//clang/lib/Frontend",
+"//clang/lib/Rewrite",
+"//clang/lib/Tooling",
+"//clang/lib/Tooling/Core",
+"//clang/lib/Tooling/Refactoring",
+"//llvm/lib/Option",
+"//llvm/lib/Support",
+  ]
+  sources = [
+"ClangRename.cpp",
+  ]
+}
Index: llvm/trunk/utils/gn/secondary/clang/tools/clang-refactor/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/tools/clang-refactor/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/tools/clang-refactor/BUILD.gn
@@ -0,0 +1,19 @@
+executable("clang-refactor") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/lib/AST",
+"//clang/lib/Basic",
+"//clang/lib/Format",
+"//clang/lib/Frontend",
+"//clang/lib/Lex",
+"//clang/lib/Rewrite",
+"//clang/lib/Tooling",
+"//clang/lib/Tooling/Refactoring",
+"//llvm/lib/Option",
+"//llvm/lib/Support",
+  ]
+  sources = [
+"ClangRefactor.cpp",
+"TestSupport.cpp",
+  ]
+}
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D56056: [gn build] Add build files for clang/tools/{arcmt-test, clang-check, clang-func-mapping}

2018-12-23 Thread Phabricator via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL350026: [gn build] Add build files for 
clang/tools/{arcmt-test,clang-check,clang-func… (authored by nico, committed by 
).
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D56056?vs=179433&id=179440#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56056/new/

https://reviews.llvm.org/D56056

Files:
  llvm/trunk/utils/gn/secondary/BUILD.gn
  llvm/trunk/utils/gn/secondary/clang/tools/arcmt-test/BUILD.gn
  llvm/trunk/utils/gn/secondary/clang/tools/clang-check/BUILD.gn
  llvm/trunk/utils/gn/secondary/clang/tools/clang-func-mapping/BUILD.gn


Index: llvm/trunk/utils/gn/secondary/clang/tools/clang-check/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/tools/clang-check/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/tools/clang-check/BUILD.gn
@@ -0,0 +1,18 @@
+executable("clang-check") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/lib/AST",
+"//clang/lib/Basic",
+"//clang/lib/Driver",
+"//clang/lib/Frontend",
+"//clang/lib/Frontend/Rewrite",
+"//clang/lib/StaticAnalyzer/Frontend",
+"//clang/lib/Tooling",
+"//llvm/lib/Option",
+"//llvm/lib/Support",
+"//llvm/lib/Target:TargetsToBuild",
+  ]
+  sources = [
+"ClangCheck.cpp",
+  ]
+}
Index: llvm/trunk/utils/gn/secondary/clang/tools/clang-func-mapping/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/tools/clang-func-mapping/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/tools/clang-func-mapping/BUILD.gn
@@ -0,0 +1,17 @@
+executable("clang-func-mapping") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/lib/AST",
+"//clang/lib/Basic",
+"//clang/lib/CrossTU",
+"//clang/lib/Frontend",
+"//clang/lib/Index",
+"//clang/lib/Tooling",
+"//llvm/lib/AsmParser",
+"//llvm/lib/MC",
+"//llvm/lib/Support",
+  ]
+  sources = [
+"ClangFnMapGen.cpp",
+  ]
+}
Index: llvm/trunk/utils/gn/secondary/clang/tools/arcmt-test/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/tools/arcmt-test/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/tools/arcmt-test/BUILD.gn
@@ -0,0 +1,13 @@
+executable("arcmt-test") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/lib/ARCMigrate",
+"//clang/lib/Basic",
+"//clang/lib/Frontend",
+"//clang/lib/Lex",
+"//llvm/lib/Support",
+  ]
+  sources = [
+"arcmt-test.cpp",
+  ]
+}
Index: llvm/trunk/utils/gn/secondary/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/BUILD.gn
@@ -1,3 +1,6 @@
+import("//clang/lib/ARCMigrate/enable.gni")
+import("//clang/lib/StaticAnalyzer/Frontend/enable.gni")
+
 group("default") {
   deps = [
 ":clang",
@@ -17,6 +20,15 @@
 "//llvm/tools/llvm-symbolizer:symlinks",
 "//llvm/tools/llvm-undname",
   ]
+  if (clang_enable_arcmt) {
+deps += [ "//clang/tools/arcmt-test" ]
+  }
+  if (clang_enable_static_analyzer) {
+deps += [
+  "//clang/tools/clang-check",
+  "//clang/tools/clang-func-mapping",
+]
+  }
   testonly = true
 }
 


Index: llvm/trunk/utils/gn/secondary/clang/tools/clang-check/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/tools/clang-check/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/tools/clang-check/BUILD.gn
@@ -0,0 +1,18 @@
+executable("clang-check") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/lib/AST",
+"//clang/lib/Basic",
+"//clang/lib/Driver",
+"//clang/lib/Frontend",
+"//clang/lib/Frontend/Rewrite",
+"//clang/lib/StaticAnalyzer/Frontend",
+"//clang/lib/Tooling",
+"//llvm/lib/Option",
+"//llvm/lib/Support",
+"//llvm/lib/Target:TargetsToBuild",
+  ]
+  sources = [
+"ClangCheck.cpp",
+  ]
+}
Index: llvm/trunk/utils/gn/secondary/clang/tools/clang-func-mapping/BUILD.gn
===
--- llvm/trunk/utils/gn/secondary/clang/tools/clang-func-mapping/BUILD.gn
+++ llvm/trunk/utils/gn/secondary/clang/tools/clang-func-mapping/BUILD.gn
@@ -0,0 +1,17 @@
+executable("clang-func-mapping") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/lib/AST",
+"//clang/lib/Basic",
+"//clang/lib/CrossTU",
+"//clang/lib/Frontend",
+"//clang/lib/Index",
+"//clang/lib/Tooling",
+"//llvm/lib/AsmParser",
+"//llvm/lib/MC",
+"//llvm/lib/Support",
+  ]
+  sources = [
+"ClangFnMapGen.cpp",
+  ]
+}
Index: llvm/trunk/utils/gn/secondary/clang/tools/arcmt-test/BUILD.gn

[PATCH] D55710: add pragmas to control Software Pipelining optimisation

2018-12-23 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a reviewer: tonic.
aaron.ballman added a subscriber: tonic.
aaron.ballman added a comment.

Adding @tonic as a reviewer, who may have suggestions on how to improve the 
documentation wording.




Comment at: include/clang/Basic/AttrDocs.td:2655
+  dependence violated. This constant interval(in cycles) between the start
+  of iterations called initiation interval. Cycles number of one iteration
+  of newly generated loop matches with Initiation Interval. For further

alexey.lapshin wrote:
> aaron.ballman wrote:
> > is called the initiation interval.
> > 
> > I can't quite parse the second sentence, though. Is it trying to say that 
> > the initiation interval is the number of cycles for a single iteration of 
> > the optimized loop?
> Not quite right : initiation interval is not a number of cycles for a single 
> iteration of the optimized loop. But initiation interval matches with number 
> of cycles for a single iteration of the optimized loop. Initiation interval 
> is the number of cycles between next and previous iteration of original loop. 
> New loop created so that single iteration of the optimized loop has the same 
> number cycles as initiation interval( thus every new iteration of original 
> loop started each time when new iteration of optimized loop started - 
> difference between iterations is initiation interval). 
> 
> trying to rephrase : number of cycles for a single iteration of the optimized 
> loop matches with number of cycles of initiation interval.
I am still a bit fuzzy on the details (optimizations are not my area of 
expertise). Is this an accurate what to rephrase it?

"The initiation interval is the number of cycles between two iterations of an 
unoptimized loop. These pragmas cause a new. optimized loop to be created such 
that a single iteration of the loop executes in the same number of cycles as 
the initiation interval."



Comment at: include/clang/Basic/AttrDocs.td:2676
+  the software pipeliner to try the specified initiation interval.
+  If schedule found the resulting loop iteration would have specified
+  cycle count. The positive number greater than zero can be specified:

alexey.lapshin wrote:
> aaron.ballman wrote:
> > I'm can't quite parse this sentence either. Is it trying to say that the 
> > scheduler will try to find a loop iteration cycle count that most-closely 
> > matches the specified initiation interval?
> I wanted to say that pipeliner will try to find a schedule that exactly 
> matches the specified initiation interval. And if schedule would be found 
> then single iteration of the optimized loop would have exactly the same 
> amount of cycles as initiation interval. trying to rephrase :
> 
> If schedule would be found then single iteration of the optimized loop would 
> have exactly the same amount of cycles as initiation interval has. 
Ah, okay! So what happens if an exact match cannot be found? Does it behave as 
though the pragma was not specified at all (as in, the pragma is ignored)?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55710/new/

https://reviews.llvm.org/D55710



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


r350028 - [Driver] Disable -faddrsig on Gentoo by default

2018-12-23 Thread Michal Gorny via cfe-commits
Author: mgorny
Date: Sun Dec 23 07:07:26 2018
New Revision: 350028

URL: http://llvm.org/viewvc/llvm-project?rev=350028&view=rev
Log:
[Driver] Disable -faddrsig on Gentoo by default

Gentoo supports combining clang toolchain with GNU binutils, and many
users actually do that.  As -faddrsig is not supported by GNU strip,
this results in a lot of warnings.  Disable it by default and let users
enable it explicitly if they want it; with the intent of reevaluating
when the underlying feature becomes standarized.

See also: https://bugs.gentoo.org/667854

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

Modified:
cfe/trunk/lib/Driver/ToolChains/Clang.cpp
cfe/trunk/test/Driver/addrsig.c
cfe/trunk/test/lit.cfg.py

Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=350028&r1=350027&r2=350028&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Sun Dec 23 07:07:26 2018
@@ -25,6 +25,7 @@
 #include "clang/Basic/LangOptions.h"
 #include "clang/Basic/ObjCRuntime.h"
 #include "clang/Basic/Version.h"
+#include "clang/Driver/Distro.h"
 #include "clang/Driver/DriverDiagnostic.h"
 #include "clang/Driver/Options.h"
 #include "clang/Driver/SanitizerArgs.h"
@@ -5290,6 +5291,7 @@ void Clang::ConstructJob(Compilation &C,
 TC.getTriple().isOSBinFormatCOFF()) &&
   !TC.getTriple().isPS4() &&
   !TC.getTriple().isOSNetBSD() &&
+  !Distro(D.getVFS()).IsGentoo() &&
TC.useIntegratedAs()))
 CmdArgs.push_back("-faddrsig");
 

Modified: cfe/trunk/test/Driver/addrsig.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/addrsig.c?rev=350028&r1=350027&r2=350028&view=diff
==
--- cfe/trunk/test/Driver/addrsig.c (original)
+++ cfe/trunk/test/Driver/addrsig.c Sun Dec 23 07:07:26 2018
@@ -1,3 +1,6 @@
+// Gentoo disables -faddrsig by default
+// XFAIL: gentoo
+
 // RUN: %clang -### -target x86_64-unknown-linux -c %s 2>&1 | FileCheck 
-check-prefix=ADDRSIG %s
 // RUN: %clang -### -target x86_64-pc-win32 -c %s 2>&1 | FileCheck 
-check-prefix=ADDRSIG %s
 // RUN: %clang -### -target x86_64-unknown-linux -fno-integrated-as -c %s 2>&1 
| FileCheck -check-prefix=NO-ADDRSIG %s

Modified: cfe/trunk/test/lit.cfg.py
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/lit.cfg.py?rev=350028&r1=350027&r2=350028&view=diff
==
--- cfe/trunk/test/lit.cfg.py (original)
+++ cfe/trunk/test/lit.cfg.py Sun Dec 23 07:07:26 2018
@@ -190,3 +190,6 @@ lit.util.usePlatformSdkOnDarwin(config,
 macOSSDKVersion = lit.util.findPlatformSdkVersionOnMacOS(config, lit_config)
 if macOSSDKVersion is not None:
 config.available_features.add('macos-sdk-' + macOSSDKVersion)
+
+if os.path.exists('/etc/gentoo-release'):
+config.available_features.add('gentoo')


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


[PATCH] D56047: [Driver] Disable -faddrsig on Gentoo by default

2018-12-23 Thread Michał Górny via Phabricator via cfe-commits
mgorny added a comment.

In D56047#1340337 , @phosek wrote:

> LGTM, would it be possible to also include https://bugs.gentoo.org/667854 in 
> the commit message for reference?


Done, and thanks for the review.


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56047/new/

https://reviews.llvm.org/D56047



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


[PATCH] D56024: [clang] [Distro] Support detecting Gentoo

2018-12-23 Thread Michał Górny via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL350027: [Distro] Support detecting Gentoo (authored by 
mgorny, committed by ).
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D56024?vs=179413&id=179441#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56024/new/

https://reviews.llvm.org/D56024

Files:
  cfe/trunk/include/clang/Driver/Distro.h
  cfe/trunk/lib/Driver/Distro.cpp
  cfe/trunk/unittests/Driver/DistroTest.cpp

Index: cfe/trunk/include/clang/Driver/Distro.h
===
--- cfe/trunk/include/clang/Driver/Distro.h
+++ cfe/trunk/include/clang/Driver/Distro.h
@@ -39,6 +39,7 @@
 RHEL6,
 RHEL7,
 Fedora,
+Gentoo,
 OpenSUSE,
 UbuntuHardy,
 UbuntuIntrepid,
@@ -123,6 +124,10 @@
 return DistroVal == AlpineLinux;
   }
 
+  bool IsGentoo() const {
+return DistroVal == Gentoo;
+  }
+
   /// @}
 };
 
Index: cfe/trunk/lib/Driver/Distro.cpp
===
--- cfe/trunk/lib/Driver/Distro.cpp
+++ cfe/trunk/lib/Driver/Distro.cpp
@@ -138,6 +138,9 @@
   if (VFS.exists("/etc/arch-release"))
 return Distro::ArchLinux;
 
+  if (VFS.exists("/etc/gentoo-release"))
+return Distro::Gentoo;
+
   return Distro::UnknownDistro;
 }
 
Index: cfe/trunk/unittests/Driver/DistroTest.cpp
===
--- cfe/trunk/unittests/Driver/DistroTest.cpp
+++ cfe/trunk/unittests/Driver/DistroTest.cpp
@@ -51,6 +51,7 @@
   ASSERT_FALSE(UbuntuTrusty.IsRedhat());
   ASSERT_FALSE(UbuntuTrusty.IsOpenSUSE());
   ASSERT_FALSE(UbuntuTrusty.IsDebian());
+  ASSERT_FALSE(UbuntuTrusty.IsGentoo());
 
   llvm::vfs::InMemoryFileSystem UbuntuYakketyFileSystem;
   UbuntuYakketyFileSystem.addFile("/etc/debian_version", 0,
@@ -80,6 +81,7 @@
   ASSERT_FALSE(UbuntuYakkety.IsRedhat());
   ASSERT_FALSE(UbuntuYakkety.IsOpenSUSE());
   ASSERT_FALSE(UbuntuYakkety.IsDebian());
+  ASSERT_FALSE(UbuntuYakkety.IsGentoo());
 }
 
 TEST(DistroTest, DetectRedhat) {
@@ -114,6 +116,7 @@
   ASSERT_TRUE(Fedora25.IsRedhat());
   ASSERT_FALSE(Fedora25.IsOpenSUSE());
   ASSERT_FALSE(Fedora25.IsDebian());
+  ASSERT_FALSE(Fedora25.IsGentoo());
 
   llvm::vfs::InMemoryFileSystem CentOS7FileSystem;
   CentOS7FileSystem.addFile("/etc/system-release-cpe", 0,
@@ -150,6 +153,7 @@
   ASSERT_TRUE(CentOS7.IsRedhat());
   ASSERT_FALSE(CentOS7.IsOpenSUSE());
   ASSERT_FALSE(CentOS7.IsDebian());
+  ASSERT_FALSE(CentOS7.IsGentoo());
 }
 
 TEST(DistroTest, DetectOpenSUSE) {
@@ -177,6 +181,7 @@
   ASSERT_FALSE(OpenSUSELeap421.IsRedhat());
   ASSERT_TRUE(OpenSUSELeap421.IsOpenSUSE());
   ASSERT_FALSE(OpenSUSELeap421.IsDebian());
+  ASSERT_FALSE(OpenSUSELeap421.IsGentoo());
 
   llvm::vfs::InMemoryFileSystem OpenSUSE132FileSystem;
   OpenSUSE132FileSystem.addFile("/etc/SuSE-release", 0,
@@ -202,6 +207,7 @@
   ASSERT_FALSE(OpenSUSE132.IsRedhat());
   ASSERT_TRUE(OpenSUSE132.IsOpenSUSE());
   ASSERT_FALSE(OpenSUSE132.IsDebian());
+  ASSERT_FALSE(OpenSUSE132.IsGentoo());
 
   llvm::vfs::InMemoryFileSystem SLES10FileSystem;
   SLES10FileSystem.addFile("/etc/SuSE-release", 0,
@@ -218,6 +224,7 @@
   ASSERT_FALSE(SLES10.IsRedhat());
   ASSERT_FALSE(SLES10.IsOpenSUSE());
   ASSERT_FALSE(SLES10.IsDebian());
+  ASSERT_FALSE(SLES10.IsGentoo());
 }
 
 TEST(DistroTest, DetectDebian) {
@@ -240,6 +247,7 @@
   ASSERT_FALSE(DebianJessie.IsRedhat());
   ASSERT_FALSE(DebianJessie.IsOpenSUSE());
   ASSERT_TRUE(DebianJessie.IsDebian());
+  ASSERT_FALSE(DebianJessie.IsGentoo());
 
   llvm::vfs::InMemoryFileSystem DebianStretchSidFileSystem;
   DebianStretchSidFileSystem.addFile("/etc/debian_version", 0,
@@ -258,6 +266,7 @@
   ASSERT_FALSE(DebianStretchSid.IsRedhat());
   ASSERT_FALSE(DebianStretchSid.IsOpenSUSE());
   ASSERT_TRUE(DebianStretchSid.IsDebian());
+  ASSERT_FALSE(DebianStretchSid.IsGentoo());
 }
 
 TEST(DistroTest, DetectExherbo) {
@@ -279,6 +288,7 @@
   ASSERT_FALSE(Exherbo.IsRedhat());
   ASSERT_FALSE(Exherbo.IsOpenSUSE());
   ASSERT_FALSE(Exherbo.IsDebian());
+  ASSERT_FALSE(Exherbo.IsGentoo());
 }
 
 TEST(DistroTest, DetectArchLinux) {
@@ -300,6 +310,32 @@
   ASSERT_FALSE(ArchLinux.IsRedhat());
   ASSERT_FALSE(ArchLinux.IsOpenSUSE());
   ASSERT_FALSE(ArchLinux.IsDebian());
+  ASSERT_FALSE(ArchLinux.IsGentoo());
+}
+
+TEST(DistroTest, DetectGentoo) {
+  llvm::vfs::InMemoryFileSystem GentooFileSystem;
+  GentooFileSystem.addFile(
+  "/etc/gentoo-release", 0,
+  llvm::MemoryBuffer::getMemBuffer("Gentoo Base System release 2.6"));
+  GentooFileSystem.addFile(
+  "/etc/os-release", 0,
+  llvm::MemoryBuffer::getMemBuffer(
+  "NAME=Gentoo\n"
+  "ID=gentoo\n"
+  "PRETTY_NAME=\"Gentoo/Linux\"\n"
+  "ANSI_COLOR=\"1;32\"\n"
+  "HOME_URL=\"https://www.gentoo.org/\"\n";
+  "SUPPORT_URL=\"https://www.gentoo.org/support/\"\n";
+  

[PATCH] D56047: [Driver] Disable -faddrsig on Gentoo by default

2018-12-23 Thread Michał Górny via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL350028: [Driver] Disable -faddrsig on Gentoo by default 
(authored by mgorny, committed by ).
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D56047?vs=179415&id=179442#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56047/new/

https://reviews.llvm.org/D56047

Files:
  cfe/trunk/lib/Driver/ToolChains/Clang.cpp
  cfe/trunk/test/Driver/addrsig.c
  cfe/trunk/test/lit.cfg.py


Index: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
===
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp
@@ -25,6 +25,7 @@
 #include "clang/Basic/LangOptions.h"
 #include "clang/Basic/ObjCRuntime.h"
 #include "clang/Basic/Version.h"
+#include "clang/Driver/Distro.h"
 #include "clang/Driver/DriverDiagnostic.h"
 #include "clang/Driver/Options.h"
 #include "clang/Driver/SanitizerArgs.h"
@@ -5290,6 +5291,7 @@
 TC.getTriple().isOSBinFormatCOFF()) &&
   !TC.getTriple().isPS4() &&
   !TC.getTriple().isOSNetBSD() &&
+  !Distro(D.getVFS()).IsGentoo() &&
TC.useIntegratedAs()))
 CmdArgs.push_back("-faddrsig");
 
Index: cfe/trunk/test/lit.cfg.py
===
--- cfe/trunk/test/lit.cfg.py
+++ cfe/trunk/test/lit.cfg.py
@@ -190,3 +190,6 @@
 macOSSDKVersion = lit.util.findPlatformSdkVersionOnMacOS(config, lit_config)
 if macOSSDKVersion is not None:
 config.available_features.add('macos-sdk-' + macOSSDKVersion)
+
+if os.path.exists('/etc/gentoo-release'):
+config.available_features.add('gentoo')
Index: cfe/trunk/test/Driver/addrsig.c
===
--- cfe/trunk/test/Driver/addrsig.c
+++ cfe/trunk/test/Driver/addrsig.c
@@ -1,3 +1,6 @@
+// Gentoo disables -faddrsig by default
+// XFAIL: gentoo
+
 // RUN: %clang -### -target x86_64-unknown-linux -c %s 2>&1 | FileCheck 
-check-prefix=ADDRSIG %s
 // RUN: %clang -### -target x86_64-pc-win32 -c %s 2>&1 | FileCheck 
-check-prefix=ADDRSIG %s
 // RUN: %clang -### -target x86_64-unknown-linux -fno-integrated-as -c %s 2>&1 
| FileCheck -check-prefix=NO-ADDRSIG %s


Index: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
===
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp
@@ -25,6 +25,7 @@
 #include "clang/Basic/LangOptions.h"
 #include "clang/Basic/ObjCRuntime.h"
 #include "clang/Basic/Version.h"
+#include "clang/Driver/Distro.h"
 #include "clang/Driver/DriverDiagnostic.h"
 #include "clang/Driver/Options.h"
 #include "clang/Driver/SanitizerArgs.h"
@@ -5290,6 +5291,7 @@
 TC.getTriple().isOSBinFormatCOFF()) &&
   !TC.getTriple().isPS4() &&
   !TC.getTriple().isOSNetBSD() &&
+  !Distro(D.getVFS()).IsGentoo() &&
TC.useIntegratedAs()))
 CmdArgs.push_back("-faddrsig");
 
Index: cfe/trunk/test/lit.cfg.py
===
--- cfe/trunk/test/lit.cfg.py
+++ cfe/trunk/test/lit.cfg.py
@@ -190,3 +190,6 @@
 macOSSDKVersion = lit.util.findPlatformSdkVersionOnMacOS(config, lit_config)
 if macOSSDKVersion is not None:
 config.available_features.add('macos-sdk-' + macOSSDKVersion)
+
+if os.path.exists('/etc/gentoo-release'):
+config.available_features.add('gentoo')
Index: cfe/trunk/test/Driver/addrsig.c
===
--- cfe/trunk/test/Driver/addrsig.c
+++ cfe/trunk/test/Driver/addrsig.c
@@ -1,3 +1,6 @@
+// Gentoo disables -faddrsig by default
+// XFAIL: gentoo
+
 // RUN: %clang -### -target x86_64-unknown-linux -c %s 2>&1 | FileCheck -check-prefix=ADDRSIG %s
 // RUN: %clang -### -target x86_64-pc-win32 -c %s 2>&1 | FileCheck -check-prefix=ADDRSIG %s
 // RUN: %clang -### -target x86_64-unknown-linux -fno-integrated-as -c %s 2>&1 | FileCheck -check-prefix=NO-ADDRSIG %s
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r350027 - [Distro] Support detecting Gentoo

2018-12-23 Thread Michal Gorny via cfe-commits
Author: mgorny
Date: Sun Dec 23 07:07:19 2018
New Revision: 350027

URL: http://llvm.org/viewvc/llvm-project?rev=350027&view=rev
Log:
[Distro] Support detecting Gentoo

Add support for distinguishing plain Gentoo distribution, and a unit
test for it.  This is going to be used to introduce distro-specific
customizations in the driver code; most notably, it is going to be used
to disable -faddrsig.

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

Modified:
cfe/trunk/include/clang/Driver/Distro.h
cfe/trunk/lib/Driver/Distro.cpp
cfe/trunk/unittests/Driver/DistroTest.cpp

Modified: cfe/trunk/include/clang/Driver/Distro.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Distro.h?rev=350027&r1=350026&r2=350027&view=diff
==
--- cfe/trunk/include/clang/Driver/Distro.h (original)
+++ cfe/trunk/include/clang/Driver/Distro.h Sun Dec 23 07:07:19 2018
@@ -39,6 +39,7 @@ public:
 RHEL6,
 RHEL7,
 Fedora,
+Gentoo,
 OpenSUSE,
 UbuntuHardy,
 UbuntuIntrepid,
@@ -123,6 +124,10 @@ public:
 return DistroVal == AlpineLinux;
   }
 
+  bool IsGentoo() const {
+return DistroVal == Gentoo;
+  }
+
   /// @}
 };
 

Modified: cfe/trunk/lib/Driver/Distro.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Distro.cpp?rev=350027&r1=350026&r2=350027&view=diff
==
--- cfe/trunk/lib/Driver/Distro.cpp (original)
+++ cfe/trunk/lib/Driver/Distro.cpp Sun Dec 23 07:07:19 2018
@@ -138,6 +138,9 @@ static Distro::DistroType DetectDistro(l
   if (VFS.exists("/etc/arch-release"))
 return Distro::ArchLinux;
 
+  if (VFS.exists("/etc/gentoo-release"))
+return Distro::Gentoo;
+
   return Distro::UnknownDistro;
 }
 

Modified: cfe/trunk/unittests/Driver/DistroTest.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Driver/DistroTest.cpp?rev=350027&r1=350026&r2=350027&view=diff
==
--- cfe/trunk/unittests/Driver/DistroTest.cpp (original)
+++ cfe/trunk/unittests/Driver/DistroTest.cpp Sun Dec 23 07:07:19 2018
@@ -51,6 +51,7 @@ TEST(DistroTest, DetectUbuntu) {
   ASSERT_FALSE(UbuntuTrusty.IsRedhat());
   ASSERT_FALSE(UbuntuTrusty.IsOpenSUSE());
   ASSERT_FALSE(UbuntuTrusty.IsDebian());
+  ASSERT_FALSE(UbuntuTrusty.IsGentoo());
 
   llvm::vfs::InMemoryFileSystem UbuntuYakketyFileSystem;
   UbuntuYakketyFileSystem.addFile("/etc/debian_version", 0,
@@ -80,6 +81,7 @@ TEST(DistroTest, DetectUbuntu) {
   ASSERT_FALSE(UbuntuYakkety.IsRedhat());
   ASSERT_FALSE(UbuntuYakkety.IsOpenSUSE());
   ASSERT_FALSE(UbuntuYakkety.IsDebian());
+  ASSERT_FALSE(UbuntuYakkety.IsGentoo());
 }
 
 TEST(DistroTest, DetectRedhat) {
@@ -114,6 +116,7 @@ TEST(DistroTest, DetectRedhat) {
   ASSERT_TRUE(Fedora25.IsRedhat());
   ASSERT_FALSE(Fedora25.IsOpenSUSE());
   ASSERT_FALSE(Fedora25.IsDebian());
+  ASSERT_FALSE(Fedora25.IsGentoo());
 
   llvm::vfs::InMemoryFileSystem CentOS7FileSystem;
   CentOS7FileSystem.addFile("/etc/system-release-cpe", 0,
@@ -150,6 +153,7 @@ TEST(DistroTest, DetectRedhat) {
   ASSERT_TRUE(CentOS7.IsRedhat());
   ASSERT_FALSE(CentOS7.IsOpenSUSE());
   ASSERT_FALSE(CentOS7.IsDebian());
+  ASSERT_FALSE(CentOS7.IsGentoo());
 }
 
 TEST(DistroTest, DetectOpenSUSE) {
@@ -177,6 +181,7 @@ TEST(DistroTest, DetectOpenSUSE) {
   ASSERT_FALSE(OpenSUSELeap421.IsRedhat());
   ASSERT_TRUE(OpenSUSELeap421.IsOpenSUSE());
   ASSERT_FALSE(OpenSUSELeap421.IsDebian());
+  ASSERT_FALSE(OpenSUSELeap421.IsGentoo());
 
   llvm::vfs::InMemoryFileSystem OpenSUSE132FileSystem;
   OpenSUSE132FileSystem.addFile("/etc/SuSE-release", 0,
@@ -202,6 +207,7 @@ TEST(DistroTest, DetectOpenSUSE) {
   ASSERT_FALSE(OpenSUSE132.IsRedhat());
   ASSERT_TRUE(OpenSUSE132.IsOpenSUSE());
   ASSERT_FALSE(OpenSUSE132.IsDebian());
+  ASSERT_FALSE(OpenSUSE132.IsGentoo());
 
   llvm::vfs::InMemoryFileSystem SLES10FileSystem;
   SLES10FileSystem.addFile("/etc/SuSE-release", 0,
@@ -218,6 +224,7 @@ TEST(DistroTest, DetectOpenSUSE) {
   ASSERT_FALSE(SLES10.IsRedhat());
   ASSERT_FALSE(SLES10.IsOpenSUSE());
   ASSERT_FALSE(SLES10.IsDebian());
+  ASSERT_FALSE(SLES10.IsGentoo());
 }
 
 TEST(DistroTest, DetectDebian) {
@@ -240,6 +247,7 @@ TEST(DistroTest, DetectDebian) {
   ASSERT_FALSE(DebianJessie.IsRedhat());
   ASSERT_FALSE(DebianJessie.IsOpenSUSE());
   ASSERT_TRUE(DebianJessie.IsDebian());
+  ASSERT_FALSE(DebianJessie.IsGentoo());
 
   llvm::vfs::InMemoryFileSystem DebianStretchSidFileSystem;
   DebianStretchSidFileSystem.addFile("/etc/debian_version", 0,
@@ -258,6 +266,7 @@ TEST(DistroTest, DetectDebian) {
   ASSERT_FALSE(DebianStretchSid.IsRedhat());
   ASSERT_FALSE(DebianStretchSid.IsOpenSUSE());
   ASSERT_TRUE(DebianStretchSid.IsDebian());
+  ASSERT_FALSE(DebianStretchSid.IsGentoo());
 }
 
 TEST(DistroTest, DetectExherbo) {
@@ -279,6 +288,7 @@ TEST(DistroTest, DetectExherbo) {
   

[PATCH] D56000: [compiler-rt] [xray] Disable alignas() for thread_local objects on NetBSD

2018-12-23 Thread Michał Górny via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL350029: [xray] Disable alignas() for thread_local objects on 
NetBSD (authored by mgorny, committed by ).
Herald added a subscriber: delcypher.

Changed prior to commit:
  https://reviews.llvm.org/D56000?vs=179414&id=179443#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56000/new/

https://reviews.llvm.org/D56000

Files:
  compiler-rt/trunk/lib/xray/xray_basic_logging.cc
  compiler-rt/trunk/lib/xray/xray_defs.h
  compiler-rt/trunk/lib/xray/xray_fdr_logging.cc


Index: compiler-rt/trunk/lib/xray/xray_basic_logging.cc
===
--- compiler-rt/trunk/lib/xray/xray_basic_logging.cc
+++ compiler-rt/trunk/lib/xray/xray_basic_logging.cc
@@ -55,7 +55,7 @@
 
 static_assert(sizeof(StackEntry) == 16, "Wrong size for StackEntry");
 
-struct alignas(64) ThreadLocalData {
+struct XRAY_TLS_ALIGNAS(64) ThreadLocalData {
   void *InMemoryBuffer = nullptr;
   size_t BufferSize = 0;
   size_t BufferOffset = 0;
Index: compiler-rt/trunk/lib/xray/xray_defs.h
===
--- compiler-rt/trunk/lib/xray/xray_defs.h
+++ compiler-rt/trunk/lib/xray/xray_defs.h
@@ -19,4 +19,14 @@
 #define XRAY_NEVER_INSTRUMENT
 #endif
 
+#if SANITIZER_NETBSD
+// NetBSD: thread_local is not aligned properly, and the code relying
+// on it segfaults
+#define XRAY_TLS_ALIGNAS(x)
+#define XRAY_HAS_TLS_ALIGNAS 0
+#else
+#define XRAY_TLS_ALIGNAS(x) alignas(x)
+#define XRAY_HAS_TLS_ALIGNAS 1
+#endif
+
 #endif  // XRAY_XRAY_DEFS_H
Index: compiler-rt/trunk/lib/xray/xray_fdr_logging.cc
===
--- compiler-rt/trunk/lib/xray/xray_fdr_logging.cc
+++ compiler-rt/trunk/lib/xray/xray_fdr_logging.cc
@@ -51,7 +51,7 @@
 // call so that it can be initialized on first use instead of as a global. We
 // force the alignment to 64-bytes for x86 cache line alignment, as this
 // structure is used in the hot path of implementation.
-struct alignas(64) ThreadLocalData {
+struct XRAY_TLS_ALIGNAS(64) ThreadLocalData {
   BufferQueue::Buffer Buffer{};
   BufferQueue *BQ = nullptr;
 
@@ -124,8 +124,10 @@
 // critical section, calling a function that might be XRay instrumented (and
 // thus in turn calling into malloc by virtue of registration of the
 // thread_local's destructor).
+#if XRAY_HAS_TLS_ALIGNAS
 static_assert(alignof(ThreadLocalData) >= 64,
   "ThreadLocalData must be cache line aligned.");
+#endif
 static ThreadLocalData &getThreadLocalData() {
   thread_local typename std::aligned_storage<
   sizeof(ThreadLocalData), alignof(ThreadLocalData)>::type TLDStorage{};


Index: compiler-rt/trunk/lib/xray/xray_basic_logging.cc
===
--- compiler-rt/trunk/lib/xray/xray_basic_logging.cc
+++ compiler-rt/trunk/lib/xray/xray_basic_logging.cc
@@ -55,7 +55,7 @@
 
 static_assert(sizeof(StackEntry) == 16, "Wrong size for StackEntry");
 
-struct alignas(64) ThreadLocalData {
+struct XRAY_TLS_ALIGNAS(64) ThreadLocalData {
   void *InMemoryBuffer = nullptr;
   size_t BufferSize = 0;
   size_t BufferOffset = 0;
Index: compiler-rt/trunk/lib/xray/xray_defs.h
===
--- compiler-rt/trunk/lib/xray/xray_defs.h
+++ compiler-rt/trunk/lib/xray/xray_defs.h
@@ -19,4 +19,14 @@
 #define XRAY_NEVER_INSTRUMENT
 #endif
 
+#if SANITIZER_NETBSD
+// NetBSD: thread_local is not aligned properly, and the code relying
+// on it segfaults
+#define XRAY_TLS_ALIGNAS(x)
+#define XRAY_HAS_TLS_ALIGNAS 0
+#else
+#define XRAY_TLS_ALIGNAS(x) alignas(x)
+#define XRAY_HAS_TLS_ALIGNAS 1
+#endif
+
 #endif  // XRAY_XRAY_DEFS_H
Index: compiler-rt/trunk/lib/xray/xray_fdr_logging.cc
===
--- compiler-rt/trunk/lib/xray/xray_fdr_logging.cc
+++ compiler-rt/trunk/lib/xray/xray_fdr_logging.cc
@@ -51,7 +51,7 @@
 // call so that it can be initialized on first use instead of as a global. We
 // force the alignment to 64-bytes for x86 cache line alignment, as this
 // structure is used in the hot path of implementation.
-struct alignas(64) ThreadLocalData {
+struct XRAY_TLS_ALIGNAS(64) ThreadLocalData {
   BufferQueue::Buffer Buffer{};
   BufferQueue *BQ = nullptr;
 
@@ -124,8 +124,10 @@
 // critical section, calling a function that might be XRay instrumented (and
 // thus in turn calling into malloc by virtue of registration of the
 // thread_local's destructor).
+#if XRAY_HAS_TLS_ALIGNAS
 static_assert(alignof(ThreadLocalData) >= 64,
   "ThreadLocalData must be cache line aligned.");
+#endif
 static ThreadLocalData &getThreadLocalData() {
   thread_local typename std::aligned_storage<
   sizeof(ThreadLocalData), alignof(ThreadLocalData)>::type TLDStorage{};
___
cfe-commits maili

[PATCH] D56049: [compiler-rt] [xray] Detect MPROTECT and error out when it's enabled (on NetBSD)

2018-12-23 Thread Michał Górny via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL350030: [xray] Detect MPROTECT and error out when it's 
enabled (on NetBSD) (authored by mgorny, committed by ).
Herald added a subscriber: delcypher.

Changed prior to commit:
  https://reviews.llvm.org/D56049?vs=179419&id=179444#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56049/new/

https://reviews.llvm.org/D56049

Files:
  compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
  compiler-rt/trunk/lib/sanitizer_common/sanitizer_fuchsia.cc
  compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc
  compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc
  compiler-rt/trunk/lib/sanitizer_common/sanitizer_rtems.cc
  compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc
  compiler-rt/trunk/lib/xray/xray_init.cc

Index: compiler-rt/trunk/lib/xray/xray_init.cc
===
--- compiler-rt/trunk/lib/xray/xray_init.cc
+++ compiler-rt/trunk/lib/xray/xray_init.cc
@@ -67,6 +67,9 @@
   if (atomic_load(&XRayInitialized, memory_order_acquire))
 return;
 
+  // XRAY is not compatible with PaX MPROTECT
+  CheckMPROTECT();
+
   if (!atomic_load(&XRayFlagsInitialized, memory_order_acquire)) {
 initializeFlags();
 atomic_store(&XRayFlagsInitialized, true, memory_order_release);
Index: compiler-rt/trunk/lib/sanitizer_common/sanitizer_fuchsia.cc
===
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_fuchsia.cc
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_fuchsia.cc
@@ -89,6 +89,7 @@
 void InitializePlatformEarly() {}
 void MaybeReexec() {}
 void CheckASLR() {}
+void CheckMPROTECT() {}
 void PlatformPrepareForSandboxing(__sanitizer_sandbox_arguments *args) {}
 void DisableCoreDumperIfNecessary() {}
 void InstallDeadlySignalHandlers(SignalHandlerType handler) {}
Index: compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc
===
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc
@@ -377,6 +377,10 @@
   // Do nothing
 }
 
+void CheckMPROTECT() {
+  // Do nothing
+}
+
 uptr GetPageSize() {
   return sysconf(_SC_PAGESIZE);
 }
Index: compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc
===
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc
@@ -1016,6 +1016,10 @@
   // Do nothing
 }
 
+void CheckMPROTECT() {
+  // Do nothing
+}
+
 char **GetArgv() {
   // FIXME: Actually implement this function.
   return 0;
Index: compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc
===
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc
@@ -2023,6 +2023,30 @@
 #endif
 }
 
+void CheckMPROTECT() {
+#if SANITIZER_NETBSD
+  int mib[3];
+  int paxflags;
+  uptr len = sizeof(paxflags);
+
+  mib[0] = CTL_PROC;
+  mib[1] = internal_getpid();
+  mib[2] = PROC_PID_PAXFLAGS;
+
+  if (UNLIKELY(internal_sysctl(mib, 3, &paxflags, &len, NULL, 0) == -1)) {
+Printf("sysctl failed\n");
+Die();
+  }
+
+  if (UNLIKELY(paxflags & CTL_PROC_PAXFLAGS_MPROTECT)) {
+Printf("This sanitizer is not compatible with enabled MPROTECT\n");
+Die();
+  }
+#else
+  // Do nothing
+#endif
+}
+
 void PrintModuleMap() { }
 
 void CheckNoDeepBind(const char *filename, int flag) {
Index: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
===
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
@@ -223,6 +223,7 @@
 u32 GetUid();
 void ReExec();
 void CheckASLR();
+void CheckMPROTECT();
 char **GetArgv();
 char **GetEnviron();
 void PrintCmdline();
Index: compiler-rt/trunk/lib/sanitizer_common/sanitizer_rtems.cc
===
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_rtems.cc
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_rtems.cc
@@ -98,6 +98,7 @@
 void InitializePlatformEarly() {}
 void MaybeReexec() {}
 void CheckASLR() {}
+void CheckMPROTECT() {}
 void DisableCoreDumperIfNecessary() {}
 void InstallDeadlySignalHandlers(SignalHandlerType handler) {}
 void SetAlternateSignalStack() {}
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D55433: [clang-tidy] Adding a new modernize use nodiscard checker

2018-12-23 Thread MyDeveloperDay via Phabricator via cfe-commits
MyDeveloperDay updated this revision to Diff 179445.
MyDeveloperDay added a comment.

- Rebase
- Add a couple of extra test cases to ensure we don't add the NO_DISCARD macro 
when a clang or gcc attribute is present
- Ping to ask code owners to review and possibly commit if happy.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55433/new/

https://reviews.llvm.org/D55433

Files:
  clang-tidy/modernize/CMakeLists.txt
  clang-tidy/modernize/ModernizeTidyModule.cpp
  clang-tidy/modernize/UseNodiscardCheck.cpp
  clang-tidy/modernize/UseNodiscardCheck.h
  docs/ReleaseNotes.rst
  docs/clang-tidy/checks/list.rst
  docs/clang-tidy/checks/modernize-use-nodiscard.rst
  test/clang-tidy/modernize-use-nodiscard-clang-unused.cpp
  test/clang-tidy/modernize-use-nodiscard-cxx11.cpp
  test/clang-tidy/modernize-use-nodiscard-gcc-unused.cpp
  test/clang-tidy/modernize-use-nodiscard-no-macro-inscope-cxx11.cpp
  test/clang-tidy/modernize-use-nodiscard-no-macro.cpp
  test/clang-tidy/modernize-use-nodiscard.cpp
  test/clang-tidy/modernize-use-nodiscard.h

Index: test/clang-tidy/modernize-use-nodiscard.h
===
--- /dev/null
+++ test/clang-tidy/modernize-use-nodiscard.h
@@ -0,0 +1,5 @@
+
+#define MUST_USE_RESULT __attribute__((warn_unused_result))
+#define NO_DISCARD [[nodiscard]]
+#define NO_RETURN [[noreturn]]
+
Index: test/clang-tidy/modernize-use-nodiscard.cpp
===
--- /dev/null
+++ test/clang-tidy/modernize-use-nodiscard.cpp
@@ -0,0 +1,250 @@
+// RUN: %check_clang_tidy %s modernize-use-nodiscard %t -- \
+// RUN:   -config="{CheckOptions: [{key: modernize-use-nodiscard.ReplacementString, value: 'NO_DISCARD'}]}" \
+// RUN: -- -std=c++17 
+
+#include 
+
+namespace boost {
+template  
+class function;
+}
+
+#include "modernize-use-nodiscard.h"
+
+#define BOOLEAN_FUNC bool f23() const
+
+typedef unsigned my_unsigned;
+typedef unsigned &my_unsigned_reference;
+typedef const unsigned &my_unsigned_const_reference;
+
+class Foo {
+public:
+using size_type = unsigned;
+
+bool f1() const;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function 'f1' should be marked NO_DISCARD [modernize-use-nodiscard] 
+// CHECK-FIXES: NO_DISCARD bool f1() const;
+
+bool f2(int) const;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function 'f2' should be marked NO_DISCARD [modernize-use-nodiscard]
+// CHECK-FIXES: NO_DISCARD bool f2(int) const;
+
+bool f3(const int &) const;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function 'f3' should be marked NO_DISCARD [modernize-use-nodiscard]
+// CHECK-FIXES: NO_DISCARD bool f3(const int &) const;
+
+bool f4(void) const;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function 'f4' should be marked NO_DISCARD [modernize-use-nodiscard]
+// CHECK-FIXES: NO_DISCARD bool f4(void) const;
+
+// negative tests
+
+void f5() const;
+// CHECK-MESSAGES-NOT: warning:
+
+bool f6();
+// CHECK-MESSAGES-NOT: warning:
+
+bool f7(int &);
+// CHECK-MESSAGES-NOT: warning:
+
+bool f8(int &) const;
+// CHECK-MESSAGES-NOT: warning:
+
+bool f9(int *) const;
+// CHECK-MESSAGES-NOT: warning:
+
+bool f10(const int &, int &) const;
+// CHECK-MESSAGES-NOT: warning:
+
+NO_DISCARD bool f12() const;
+// CHECK-MESSAGES-NOT: warning:
+
+MUST_USE_RESULT bool f13() const;
+// CHECK-MESSAGES-NOT: warning:
+
+[[nodiscard]] bool f11() const;
+// CHECK-MESSAGES-NOT: warning:
+
+[[clang::warn_unused_result]] bool f11a() const;
+// CHECK-MESSAGES-NOT: warning:
+
+[[gnu::warn_unused_result]] bool f11b() const;
+// CHECK-MESSAGES-NOT: warning:
+
+bool _f20() const;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function '_f20' should be marked NO_DISCARD [modernize-use-nodiscard]
+// CHECK-FIXES: NO_DISCARD bool _f20() const;
+
+NO_RETURN bool f21() const;
+// CHECK-MESSAGES-NOT: warning:
+
+~Foo();
+// CHECK-MESSAGES-NOT: warning:
+
+bool operator+=(int) const;
+// CHECK-MESSAGES-NOT: warning:
+
+// extra keywords (virtual,inline,const) on return type
+
+virtual bool f14() const;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function 'f14' should be marked NO_DISCARD [modernize-use-nodiscard]
+// CHECK-FIXES: NO_DISCARD virtual bool f14() const;
+
+const bool f15() const;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function 'f15' should be marked NO_DISCARD [modernize-use-nodiscard]
+// CHECK-FIXES: NO_DISCARD const bool f15() const;
+
+inline const bool f16() const;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function 'f16' should be marked NO_DISCARD [modernize-use-nodiscard]
+// CHECK-FIXES: NO_DISCARD inline const bool f16() const;
+
+inline const std::string &f45() const;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function 'f45' should be marked NO_DISCARD [modernize-use-nodiscard]
+// CHECK-FI

[PATCH] D56059: [gn build] Add build files for clang/tools/{c-arcmt-test, c-index-test} and their dependency clang/tools/libclang

2018-12-23 Thread Nico Weber via Phabricator via cfe-commits
thakis created this revision.
thakis added a reviewer: phosek.
Herald added a subscriber: arphaman.

libclang is somewhat incomplete. It's just enough to get check-clang to pass, 
but that requires it to be pretty complete. The biggest thing is that it's not 
built as a shared library on Linux. The libclang/BUILD.gn file has a comment 
with details on what else is missing.


https://reviews.llvm.org/D56059

Files:
  llvm/utils/gn/secondary/BUILD.gn
  llvm/utils/gn/secondary/clang/tools/c-arcmt-test/BUILD.gn
  llvm/utils/gn/secondary/clang/tools/c-index-test/BUILD.gn
  llvm/utils/gn/secondary/clang/tools/libclang/BUILD.gn

Index: llvm/utils/gn/secondary/clang/tools/libclang/BUILD.gn
===
--- /dev/null
+++ llvm/utils/gn/secondary/clang/tools/libclang/BUILD.gn
@@ -0,0 +1,84 @@
+import("//clang/lib/ARCMigrate/enable.gni")
+import("//llvm/version.gni")
+
+# This build file is just enough to get check-clang to pass, it's missing
+# several things from the CMake build:
+# - linking in clangTidyPlugin and clangIncludeFixerPlugin from
+#   clang-tools-extra (which doesn't have any GN build files yet)
+# - using libclang.exports
+# - an build target copying the Python bindings
+# - the GN linux build always builds without -fPIC (as if LLVM_ENABLE_PIC=OFF
+#   in the CMake build), so libclang is always a static library on linux
+# - the GN build doesn't have LIBCLANG_BUILD_STATIC
+
+libclang_target_type = "shared_library"
+if (host_os == "linux") {
+  # Linux needs -fPIC to build shared libs but they aren't on by default.
+  # For now, make libclang a static lib there.
+  libclang_target_type = "static_library"
+}
+
+target(libclang_target_type, "libclang") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/include/clang/Config",
+"//clang/lib/AST",
+"//clang/lib/Basic",
+"//clang/lib/Frontend",
+"//clang/lib/Headers",
+"//clang/lib/Index",
+"//clang/lib/Lex",
+"//clang/lib/Sema",
+"//clang/lib/Tooling",
+"//llvm/include/llvm/Config:llvm-config",
+"//llvm/lib/IR",
+"//llvm/lib/Support",
+"//llvm/lib/Target:TargetsToBuild",
+  ]
+  if (clang_enable_arcmt) {
+deps += [ "//clang/lib/ARCMigrate" ]
+  }
+
+  if (host_os == "win") {
+defines = [ "_CINDEX_LIB_" ]
+  }
+
+  sources = [
+"ARCMigrate.cpp",
+"BuildSystem.cpp",
+"CIndex.cpp",
+"CIndexCXX.cpp",
+"CIndexCodeCompletion.cpp",
+"CIndexDiagnostic.cpp",
+"CIndexDiagnostic.h",
+"CIndexHigh.cpp",
+"CIndexInclusionStack.cpp",
+"CIndexUSRs.cpp",
+"CIndexer.cpp",
+"CIndexer.h",
+"CXComment.cpp",
+"CXCompilationDatabase.cpp",
+"CXCursor.cpp",
+"CXCursor.h",
+"CXIndexDataConsumer.cpp",
+"CXLoadedDiagnostic.cpp",
+"CXLoadedDiagnostic.h",
+"CXSourceLocation.cpp",
+"CXSourceLocation.h",
+"CXStoredDiagnostic.cpp",
+"CXString.cpp",
+"CXString.h",
+"CXTranslationUnit.h",
+"CXType.cpp",
+"CXType.h",
+"Index_Internal.h",
+"Indexing.cpp",
+  ]
+  if (host_os == "mac") {
+ldflags = [
+  "-Wl,-compatibility_version,1",
+  "-Wl,-current_version,$llvm_version",
+  "-Wl,-install_name,@rpath/libclang.dylib",
+]
+  }
+}
Index: llvm/utils/gn/secondary/clang/tools/c-index-test/BUILD.gn
===
--- /dev/null
+++ llvm/utils/gn/secondary/clang/tools/c-index-test/BUILD.gn
@@ -0,0 +1,28 @@
+executable("c-index-test") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/include/clang/Config",
+"//clang/lib/AST",
+"//clang/lib/Basic",
+"//clang/lib/CodeGen",
+"//clang/lib/Frontend",
+"//clang/lib/Index",
+"//clang/lib/Serialization",
+"//clang/tools/libclang",
+"//llvm/lib/Support",
+"//llvm/utils/gn/build/libs/xml",
+  ]
+  if (host_os != "win") {
+cflags_c = [ "-std=gnu89" ]
+  }
+  sources = [
+"c-index-test.c",
+"core_main.cpp",
+  ]
+
+  # See comment at top of clang/tools/libclang/BUILD.gn for why this isn't
+  # needed on Linux.
+  if (host_os == "mac") {
+ldflags = [ "-Wl,-rpath,@loader_path/../lib" ]
+  }
+}
Index: llvm/utils/gn/secondary/clang/tools/c-arcmt-test/BUILD.gn
===
--- /dev/null
+++ llvm/utils/gn/secondary/clang/tools/c-arcmt-test/BUILD.gn
@@ -0,0 +1,15 @@
+executable("c-arcmt-test") {
+  configs += [ "//llvm/utils/gn/build:clang_code" ]
+  deps = [
+"//clang/tools/libclang",
+  ]
+  sources = [
+"c-arcmt-test.c",
+  ]
+
+  # See comment at top of clang/tools/libclang/BUILD.gn for why this isn't
+  # needed on Linux.
+  if (host_os == "mac") {
+ldflags = [ "-Wl,-rpath,@loader_path/../lib" ]
+  }
+}
Index: llvm/utils/gn/secondary/BUILD.gn
===
--- llvm/utils/gn/secondary/BUILD.gn
+++ llvm/utils/gn/secondary/BUILD.gn
@@ -4,6 +4,7

[PATCH] D55915: [Driver] Make -fno-omit-frame-pointer imply -mno-omit-leaf-frame-pointer

2018-12-23 Thread Yuanfang Chen via Phabricator via cfe-commits
tabloid.adroit updated this revision to Diff 179447.
tabloid.adroit marked an inline comment as done.
tabloid.adroit added a comment.

- update test


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55915/new/

https://reviews.llvm.org/D55915

Files:
  lib/CodeGen/CGCall.cpp
  lib/Driver/ToolChains/Clang.cpp
  test/Driver/cl-options.c
  test/Driver/frame-pointer-elim.c

Index: test/Driver/frame-pointer-elim.c
===
--- test/Driver/frame-pointer-elim.c
+++ test/Driver/frame-pointer-elim.c
@@ -69,5 +69,55 @@
 // RUN: %clang -### -target x86_64-scei-ps4 -S -O2 %s 2>&1 | \
 // RUN:   FileCheck --check-prefix=OMIT_LEAF %s
 
+// RUN: %clang -### -S -Os -fno-omit-frame-pointer %s 2>&1 | \
+// RUN:   FileCheck --check-prefix=NO-OMIT-ALL %s
+// NO-OMIT-ALL: "-mdisable-fp-elim"
+// NO-OMIT-ALL-NOT: "-momit-leaf-frame-pointer"
+
+// RUN: %clang -### -S -Os -fomit-frame-pointer %s 2>&1 | \
+// RUN:   FileCheck --check-prefix=OMIT-ALL %s
+// OMIT-ALL-NOT: "-mdisable-fp-elim"
+// OMIT-ALL: "-momit-leaf-frame-pointer"
+
+// RUN: %clang -### -S -Os -fno-omit-frame-pointer -momit-leaf-frame-pointer %s 2>&1 | \
+// RUN:   FileCheck --check-prefix=NO-OMIT-NONLEAF %s
+// NO-OMIT-NONLEAF: "-mdisable-fp-elim"
+// NO-OMIT-NONLEAF: "-momit-leaf-frame-pointer"
+
+// RUN: %clang -### -S -Os -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer %s 2>&1 | \
+// RUN:   FileCheck --check-prefix=NO-OMIT-ALL2 %s
+// NO-OMIT-ALL2: "-mdisable-fp-elim"
+// NO-OMIT-ALL2-NOT: "-momit-leaf-frame-pointer"
+
+// RUN: %clang -### -S -Os -fomit-frame-pointer -momit-leaf-frame-pointer %s 2>&1 | \
+// RUN:   FileCheck --check-prefix=OMIT-ALL2 %s
+// OMIT-ALL2-NOT: "-mdisable-fp-elim"
+// OMIT-ALL2: "-momit-leaf-frame-pointer"
+
+// RUN: %clang -### -S -Os -fomit-frame-pointer -mno-omit-leaf-frame-pointer %s 2>&1 | \
+// RUN:   FileCheck --check-prefix=OMIT-ALL3 %s
+// OMIT-ALL3-NOT: "-mdisable-fp-elim"
+// OMIT-ALL3-NOT: "-momit-leaf-frame-pointer"
+
+// RUN: %clang -### -S -Os -momit-leaf-frame-pointer -fomit-frame-pointer %s 2>&1 | \
+// RUN:   FileCheck --check-prefix=OMIT-ALL4 %s
+// OMIT-ALL4-NOT: "-mdisable-fp-elim"
+// OMIT-ALL4: "-momit-leaf-frame-pointer"
+
+// RUN: %clang -### -S -Os -momit-leaf-frame-pointer -fno-omit-frame-pointer %s 2>&1 | \
+// RUN:   FileCheck --check-prefix=NO-OMIT-NONLEAF2 %s
+// NO-OMIT-NONLEAF2: "-mdisable-fp-elim"
+// NO-OMIT-NONLEAF2: "-momit-leaf-frame-pointer"
+
+// RUN: %clang -### -S -Os -mno-omit-leaf-frame-pointer -fomit-frame-pointer %s 2>&1 | \
+// RUN:   FileCheck --check-prefix=OMIT-ALL5 %s
+// OMIT-ALL5-NOT: "-mdisable-fp-elim"
+// OMIT-ALL5-NOT: "-momit-leaf-frame-pointer"
+
+// RUN: %clang -### -S -Os -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer %s 2>&1 | \
+// RUN:   FileCheck --check-prefix=NO-OMIT-ALL3 %s
+// NO-OMIT-ALL3: "-mdisable-fp-elim"
+// NO-OMIT-ALL3-NOT: "-momit-leaf-frame-pointer"
+
 void f0() {}
 void f1() { f0(); }
Index: test/Driver/cl-options.c
===
--- test/Driver/cl-options.c
+++ test/Driver/cl-options.c
@@ -171,11 +171,10 @@
 
 // RUN: %clang_cl --target=i686-pc-win32 /O2sy- -### -- %s 2>&1 | FileCheck -check-prefix=PR24003 %s
 // PR24003: -mdisable-fp-elim
-// PR24003: -momit-leaf-frame-pointer
 // PR24003: -Os
 
 // RUN: %clang_cl --target=i686-pc-win32 -Werror /Oy- /O2 -### -- %s 2>&1 | FileCheck -check-prefix=Oy_2 %s
-// Oy_2: -momit-leaf-frame-pointer
+// Oy_2: -mdisable-fp-elim
 // Oy_2: -O2
 
 // RUN: %clang_cl --target=i686-pc-win32 -Werror /O2 /O2 -### -- %s 2>&1 | FileCheck -check-prefix=O2O2 %s
Index: lib/Driver/ToolChains/Clang.cpp
===
--- lib/Driver/ToolChains/Clang.cpp
+++ lib/Driver/ToolChains/Clang.cpp
@@ -498,7 +498,7 @@
   return codegenoptions::LimitedDebugInfo;
 }
 
-static bool mustUseNonLeafFramePointerForTarget(const llvm::Triple &Triple) {
+static bool mustUseFramePointerForTarget(const llvm::Triple &Triple) {
   switch (Triple.getArch()){
   default:
 return false;
@@ -575,7 +575,7 @@
   if (Arg *A = Args.getLastArg(options::OPT_fno_omit_frame_pointer,
options::OPT_fomit_frame_pointer))
 return A->getOption().matches(options::OPT_fno_omit_frame_pointer) ||
-   mustUseNonLeafFramePointerForTarget(Triple);
+   mustUseFramePointerForTarget(Triple);
 
   if (Args.hasArg(options::OPT_pg))
 return true;
@@ -589,6 +589,11 @@
options::OPT_momit_leaf_frame_pointer))
 return A->getOption().matches(options::OPT_mno_omit_leaf_frame_pointer);
 
+  if (Arg *A = Args.getLastArg(options::OPT_fno_omit_frame_pointer,
+   options::OPT_fomit_frame_pointer))
+return A->getOption().matches(options::OPT_fno_omit_frame_pointer) ||
+   mustUseFramePointerForTarget(Triple);
+
   if (Args.hasArg(options::OPT_pg))
 return 

[PATCH] D55915: [Driver] Make -fno-omit-frame-pointer imply -mno-omit-leaf-frame-pointer

2018-12-23 Thread Yuanfang Chen via Phabricator via cfe-commits
tabloid.adroit marked 2 inline comments as done.
tabloid.adroit added a comment.

Thanks for the review! Comments inline.




Comment at: lib/CodeGen/CGCall.cpp:1739
   FuncAttrs.addAttribute("no-frame-pointer-elim", "true");
-  FuncAttrs.addAttribute("no-frame-pointer-elim-non-leaf");
 }

chandlerc wrote:
> This seems like an unrelated change?
The only user of "no-frame-pointer-elim-non-leaf" is 
TargetOptions::DisableFramePointerElim where "no-frame-pointer-elim-non-leaf" 
matters only if "no-frame-pointer-elim" is "false".  This is to make it less 
confusing.



Comment at: lib/Driver/ToolChains/Clang.cpp:592-595
+  if (Arg *A = Args.getLastArg(options::OPT_fno_omit_frame_pointer,
+   options::OPT_fomit_frame_pointer))
+return A->getOption().matches(options::OPT_fno_omit_frame_pointer) ||
+   mustUseFramePointerForTarget(Triple);

chandlerc wrote:
> This doesn't correctly handle "last-flag-wins". Consider the case of 
> `-mno-omit-leaf-frame-pointer -fomit-frame-pointer`. That should omit the 
> leaf frame pointer, but if I read this correctly the logic here will use a 
> leaf frame pointer.
Updated test with this case along with some other cases.

// RUN: %clang -### -S -Os -mno-omit-leaf-frame-pointer -fomit-frame-pointer %s 
2>&1 | \
// RUN:   FileCheck --check-prefix=OMIT-ALL5 %s
// OMIT-ALL5-NOT: "-mdisable-fp-elim"
// OMIT-ALL5-NOT: "-momit-leaf-frame-pointer"

This falls into lib/CodeGen/CGCall.cpp:1733, which causes 
TargetOptions::DisableFramePointerElim returns false for all frames.




Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55915/new/

https://reviews.llvm.org/D55915



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


[PATCH] D56061: [clang-tools-extra] [clangd] Fix detecting atomics in stand-alone builds

2018-12-23 Thread Michał Górny via Phabricator via cfe-commits
mgorny created this revision.
mgorny added reviewers: bkramer, sdardis, sammccall, ilya-biryukov.
Herald added subscribers: kadircet, jfb, arphaman, jkorous, MaskRay, ioeric.

Include CheckAtomic CMake module from LLVM in order to detect support
for atomics when building stand-alone.  Otherwise,
the HAVE_CXX_ATOMICS64_WITHOUT_LIB variable is undefined and clangd
wrongly attempts to link -latomic on systems not using the library.

Original bug report: https://bugs.gentoo.org/667016


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D56061

Files:
  clangd/CMakeLists.txt


Index: clangd/CMakeLists.txt
===
--- clangd/CMakeLists.txt
+++ clangd/CMakeLists.txt
@@ -2,6 +2,11 @@
   Support
   )
 
+if(CLANG_BUILT_STANDALONE)
+  # needed to get HAVE_CXX_ATOMICS64_WITHOUT_LIB defined
+  include(CheckAtomic)
+endif()
+
 set(CLANGD_ATOMIC_LIB "")
 if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
   list(APPEND CLANGD_ATOMIC_LIB "atomic")


Index: clangd/CMakeLists.txt
===
--- clangd/CMakeLists.txt
+++ clangd/CMakeLists.txt
@@ -2,6 +2,11 @@
   Support
   )
 
+if(CLANG_BUILT_STANDALONE)
+  # needed to get HAVE_CXX_ATOMICS64_WITHOUT_LIB defined
+  include(CheckAtomic)
+endif()
+
 set(CLANGD_ATOMIC_LIB "")
 if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
   list(APPEND CLANGD_ATOMIC_LIB "atomic")
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] r350037 - [clangd] Delete trailing ; NFC

2018-12-23 Thread Fangrui Song via cfe-commits
Author: maskray
Date: Sun Dec 23 14:20:34 2018
New Revision: 350037

URL: http://llvm.org/viewvc/llvm-project?rev=350037&view=rev
Log:
[clangd] Delete trailing ; NFC

Modified:
clang-tools-extra/trunk/clangd/TUScheduler.h

Modified: clang-tools-extra/trunk/clangd/TUScheduler.h
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/TUScheduler.h?rev=350037&r1=350036&r2=350037&view=diff
==
--- clang-tools-extra/trunk/clangd/TUScheduler.h (original)
+++ clang-tools-extra/trunk/clangd/TUScheduler.h Sun Dec 23 14:20:34 2018
@@ -62,7 +62,7 @@ struct TUAction {
 Idle, // Indicates the worker thread is idle, and ready to run any upcoming
   // actions.
   };
-  TUAction(State S, llvm::StringRef Name) : S(S), Name(Name){};
+  TUAction(State S, llvm::StringRef Name) : S(S), Name(Name) {}
   State S;
   /// The name of the action currently running, e.g. Update, GoToDef, Hover.
   /// Empty if we are in the idle state.


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


[PATCH] D47817: [compiler-rt] [sanitizer_common] Fix using libtirpc on Linux

2018-12-23 Thread Michał Górny via Phabricator via cfe-commits
mgorny updated this revision to Diff 179453.
mgorny retitled this revision from "[sanitizer_common] Fix using libtirpc on 
Linux" to "[compiler-rt] [sanitizer_common] Fix using libtirpc on Linux".
mgorny edited the summary of this revision.
mgorny added a reviewer: Lekensteyn.
mgorny added a comment.
Herald added a subscriber: dberris.

Ok, I give up. Here's a version using `find_package()`. Can we finally get this 
fixed?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D47817/new/

https://reviews.llvm.org/D47817

Files:
  cmake/Modules/FindLibtirpc.cmake
  lib/sanitizer_common/CMakeLists.txt
  lib/sanitizer_common/sanitizer_platform_limits_posix.cc


Index: lib/sanitizer_common/sanitizer_platform_limits_posix.cc
===
--- lib/sanitizer_common/sanitizer_platform_limits_posix.cc
+++ lib/sanitizer_common/sanitizer_platform_limits_posix.cc
@@ -114,8 +114,6 @@
 #include 
 #if HAVE_RPC_XDR_H
 # include 
-#elif HAVE_TIRPC_RPC_XDR_H
-# include 
 #endif
 #include 
 #include 
@@ -1210,7 +1208,7 @@
 CHECK_SIZE_AND_OFFSET(group, gr_gid);
 CHECK_SIZE_AND_OFFSET(group, gr_mem);
 
-#if HAVE_RPC_XDR_H || HAVE_TIRPC_RPC_XDR_H
+#if HAVE_RPC_XDR_H
 CHECK_TYPE_SIZE(XDR);
 CHECK_SIZE_AND_OFFSET(XDR, x_op);
 CHECK_SIZE_AND_OFFSET(XDR, x_ops);
Index: lib/sanitizer_common/CMakeLists.txt
===
--- lib/sanitizer_common/CMakeLists.txt
+++ lib/sanitizer_common/CMakeLists.txt
@@ -193,9 +193,12 @@
 
 set(SANITIZER_COMMON_DEFINITIONS)
 
-include(CheckIncludeFile)
-append_have_file_definition(rpc/xdr.h HAVE_RPC_XDR_H 
SANITIZER_COMMON_DEFINITIONS)
-append_have_file_definition(tirpc/rpc/xdr.h HAVE_TIRPC_RPC_XDR_H 
SANITIZER_COMMON_DEFINITIONS)
+find_package(Libtirpc)
+
+if (Libtirpc_FOUND)
+  include_directories(${Libtirpc_INCLUDE_DIRS})
+  list(APPEND SANITIZER_COMMON_DEFINITIONS HAVE_RPC_XDR_H=1)
+endif()
 
 set(SANITIZER_CFLAGS ${SANITIZER_COMMON_CFLAGS})
 append_rtti_flag(OFF SANITIZER_CFLAGS)
Index: cmake/Modules/FindLibtirpc.cmake
===
--- /dev/null
+++ cmake/Modules/FindLibtirpc.cmake
@@ -0,0 +1,22 @@
+# CMake find_package() Module for libtirpc
+#
+# Example usage:
+#
+# find_package(Libtirpc)
+#
+# If successful the following variables will be defined
+# Libtirpc_FOUND
+# Libtirpc_INCLUDE_DIRS
+
+find_path(Libtirpc_INCLUDE_DIR
+  NAMES rpc/xdr.h
+  PATH_SUFFIXES tirpc
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Libtirpc
+   REQUIRED_VARS Libtirpc_INCLUDE_DIR)
+
+if(Libtirpc_FOUND)
+  set(Libtirpc_INCLUDE_DIRS ${Libtirpc_INCLUDE_DIR})
+endif()


Index: lib/sanitizer_common/sanitizer_platform_limits_posix.cc
===
--- lib/sanitizer_common/sanitizer_platform_limits_posix.cc
+++ lib/sanitizer_common/sanitizer_platform_limits_posix.cc
@@ -114,8 +114,6 @@
 #include 
 #if HAVE_RPC_XDR_H
 # include 
-#elif HAVE_TIRPC_RPC_XDR_H
-# include 
 #endif
 #include 
 #include 
@@ -1210,7 +1208,7 @@
 CHECK_SIZE_AND_OFFSET(group, gr_gid);
 CHECK_SIZE_AND_OFFSET(group, gr_mem);
 
-#if HAVE_RPC_XDR_H || HAVE_TIRPC_RPC_XDR_H
+#if HAVE_RPC_XDR_H
 CHECK_TYPE_SIZE(XDR);
 CHECK_SIZE_AND_OFFSET(XDR, x_op);
 CHECK_SIZE_AND_OFFSET(XDR, x_ops);
Index: lib/sanitizer_common/CMakeLists.txt
===
--- lib/sanitizer_common/CMakeLists.txt
+++ lib/sanitizer_common/CMakeLists.txt
@@ -193,9 +193,12 @@
 
 set(SANITIZER_COMMON_DEFINITIONS)
 
-include(CheckIncludeFile)
-append_have_file_definition(rpc/xdr.h HAVE_RPC_XDR_H SANITIZER_COMMON_DEFINITIONS)
-append_have_file_definition(tirpc/rpc/xdr.h HAVE_TIRPC_RPC_XDR_H SANITIZER_COMMON_DEFINITIONS)
+find_package(Libtirpc)
+
+if (Libtirpc_FOUND)
+  include_directories(${Libtirpc_INCLUDE_DIRS})
+  list(APPEND SANITIZER_COMMON_DEFINITIONS HAVE_RPC_XDR_H=1)
+endif()
 
 set(SANITIZER_CFLAGS ${SANITIZER_COMMON_CFLAGS})
 append_rtti_flag(OFF SANITIZER_CFLAGS)
Index: cmake/Modules/FindLibtirpc.cmake
===
--- /dev/null
+++ cmake/Modules/FindLibtirpc.cmake
@@ -0,0 +1,22 @@
+# CMake find_package() Module for libtirpc
+#
+# Example usage:
+#
+# find_package(Libtirpc)
+#
+# If successful the following variables will be defined
+# Libtirpc_FOUND
+# Libtirpc_INCLUDE_DIRS
+
+find_path(Libtirpc_INCLUDE_DIR
+  NAMES rpc/xdr.h
+  PATH_SUFFIXES tirpc
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Libtirpc
+	REQUIRED_VARS Libtirpc_INCLUDE_DIR)
+
+if(Libtirpc_FOUND)
+  set(Libtirpc_INCLUDE_DIRS ${Libtirpc_INCLUDE_DIR})
+endif()
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D47819: [compiler-rt] [test] Support using libtirpc on Linux

2018-12-23 Thread Michał Górny via Phabricator via cfe-commits
mgorny updated this revision to Diff 179454.
mgorny retitled this revision from "[test] Support using libtirpc on Linux" to 
"[compiler-rt] [test] Support using libtirpc on Linux".
mgorny edited the summary of this revision.
mgorny added a reviewer: Lekensteyn.
mgorny set the repository for this revision to rCRT Compiler Runtime.
mgorny added a comment.
Herald added a subscriber: dberris.

Updated to use `find_package()`.


Repository:
  rCRT Compiler Runtime

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D47819/new/

https://reviews.llvm.org/D47819

Files:
  cmake/base-config-ix.cmake
  lib/sanitizer_common/CMakeLists.txt
  test/msan/lit.cfg
  test/msan/lit.site.cfg.in
  test/tsan/lit.cfg
  test/tsan/lit.site.cfg.in


Index: test/tsan/lit.site.cfg.in
===
--- test/tsan/lit.site.cfg.in
+++ test/tsan/lit.site.cfg.in
@@ -6,6 +6,7 @@
 config.apple_platform = "@TSAN_TEST_APPLE_PLATFORM@"
 config.target_cflags = "@TSAN_TEST_TARGET_CFLAGS@"
 config.target_arch = "@TSAN_TEST_TARGET_ARCH@"
+config.libtirpc_include_dirs = "@Libtirpc_INCLUDE_DIRS@"
 
 # Load common config for all compiler-rt lit tests.
 lit_config.load_config(config, 
"@COMPILER_RT_BINARY_DIR@/test/lit.common.configured")
Index: test/tsan/lit.cfg
===
--- test/tsan/lit.cfg
+++ test/tsan/lit.cfg
@@ -49,7 +49,8 @@
   [config.target_cflags] +
   config.debug_info_flags +
   extra_cflags +
-  ["-I%s" % tsan_incdir])
+  ["-I%s" % tsan_incdir] +
+  [("-I" + x) for x in config.libtirpc_include_dirs])
 clang_tsan_cxxflags = config.cxx_mode_flags + clang_tsan_cflags + 
["-std=c++11"] + ["-I%s" % tsan_incdir]
 # Add additional flags if we're using instrumented libc++.
 # Instrumented libcxx currently not supported on Darwin.
Index: test/msan/lit.site.cfg.in
===
--- test/msan/lit.site.cfg.in
+++ test/msan/lit.site.cfg.in
@@ -6,6 +6,7 @@
 config.target_arch = "@MSAN_TEST_TARGET_ARCH@"
 config.use_lld = @MSAN_TEST_USE_LLD@
 config.use_thinlto = @MSAN_TEST_USE_THINLTO@
+config.libtirpc_include_dirs = "@Libtirpc_INCLUDE_DIRS@"
 
 # Load common config for all compiler-rt lit tests.
 lit_config.load_config(config, 
"@COMPILER_RT_BINARY_DIR@/test/lit.common.configured")
Index: test/msan/lit.cfg
===
--- test/msan/lit.cfg
+++ test/msan/lit.cfg
@@ -14,7 +14,8 @@
   "-fno-omit-frame-pointer",
   "-fno-optimize-sibling-calls"] +
   [config.target_cflags] +
-  config.debug_info_flags)
+  config.debug_info_flags +
+  [("-I" + x) for x in config.libtirpc_include_dirs])
 # Some Msan tests leverage backtrace() which requires libexecinfo on FreeBSD.
 if config.host_os == 'FreeBSD':
   clang_msan_cflags += ["-lexecinfo", "-fPIC"]
Index: lib/sanitizer_common/CMakeLists.txt
===
--- lib/sanitizer_common/CMakeLists.txt
+++ lib/sanitizer_common/CMakeLists.txt
@@ -193,8 +193,6 @@
 
 set(SANITIZER_COMMON_DEFINITIONS)
 
-find_package(Libtirpc)
-
 if (Libtirpc_FOUND)
   include_directories(${Libtirpc_INCLUDE_DIRS})
   list(APPEND SANITIZER_COMMON_DEFINITIONS HAVE_RPC_XDR_H=1)
Index: cmake/base-config-ix.cmake
===
--- cmake/base-config-ix.cmake
+++ cmake/base-config-ix.cmake
@@ -8,6 +8,9 @@
 
 check_include_file(unwind.h HAVE_UNWIND_H)
 
+# used in sanitizer_common and tests
+find_package(Libtirpc)
+
 # Top level target used to build all compiler-rt libraries.
 add_custom_target(compiler-rt ALL)
 add_custom_target(install-compiler-rt)


Index: test/tsan/lit.site.cfg.in
===
--- test/tsan/lit.site.cfg.in
+++ test/tsan/lit.site.cfg.in
@@ -6,6 +6,7 @@
 config.apple_platform = "@TSAN_TEST_APPLE_PLATFORM@"
 config.target_cflags = "@TSAN_TEST_TARGET_CFLAGS@"
 config.target_arch = "@TSAN_TEST_TARGET_ARCH@"
+config.libtirpc_include_dirs = "@Libtirpc_INCLUDE_DIRS@"
 
 # Load common config for all compiler-rt lit tests.
 lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured")
Index: test/tsan/lit.cfg
===
--- test/tsan/lit.cfg
+++ test/tsan/lit.cfg
@@ -49,7 +49,8 @@
   [config.target_cflags] +
   config.debug_info_flags +
   extra_cflags +
-  ["-I%s" % tsan_incdir])
+  ["-I%s" % tsan_incdir] +
+  [("-I" + x) for x in config.libtirpc_include_dirs])
 clang_tsan_cxxflags = config.cxx_mode_flags + clang_tsan_cflags

[PATCH] D47817: [compiler-rt] [sanitizer_common] Fix using libtirpc on Linux

2018-12-23 Thread Peter Wu via Phabricator via cfe-commits
Lekensteyn added a comment.

There appears to be other definitions for HAVE_TIRPC_RPC_XDR_H in
lib/sanitizer_common/sanitizer_platform.h
lib/sanitizer_common/sanitizer_platform_limits_freebsd.cc

While at it, perhaps the `#if HAVE_FOO` could be replaced by `#ifdef HAVE_FOO`?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D47817/new/

https://reviews.llvm.org/D47817



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


[PATCH] D47819: [compiler-rt] [test] Support using libtirpc on Linux

2018-12-23 Thread Michał Górny via Phabricator via cfe-commits
mgorny updated this revision to Diff 179455.
mgorny added a comment.

Fix bug in previous patch.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D47819/new/

https://reviews.llvm.org/D47819

Files:
  cmake/base-config-ix.cmake
  lib/sanitizer_common/CMakeLists.txt
  test/msan/lit.cfg
  test/msan/lit.site.cfg.in
  test/tsan/lit.cfg
  test/tsan/lit.site.cfg.in


Index: test/tsan/lit.site.cfg.in
===
--- test/tsan/lit.site.cfg.in
+++ test/tsan/lit.site.cfg.in
@@ -6,6 +6,7 @@
 config.apple_platform = "@TSAN_TEST_APPLE_PLATFORM@"
 config.target_cflags = "@TSAN_TEST_TARGET_CFLAGS@"
 config.target_arch = "@TSAN_TEST_TARGET_ARCH@"
+config.libtirpc_include_dirs = "@Libtirpc_INCLUDE_DIRS@"
 
 # Load common config for all compiler-rt lit tests.
 lit_config.load_config(config, 
"@COMPILER_RT_BINARY_DIR@/test/lit.common.configured")
Index: test/tsan/lit.cfg
===
--- test/tsan/lit.cfg
+++ test/tsan/lit.cfg
@@ -49,7 +49,8 @@
   [config.target_cflags] +
   config.debug_info_flags +
   extra_cflags +
-  ["-I%s" % tsan_incdir])
+  ["-I%s" % tsan_incdir] +
+  [("-I" + x) for x in 
config.libtirpc_include_dirs.split(';')])
 clang_tsan_cxxflags = config.cxx_mode_flags + clang_tsan_cflags + 
["-std=c++11"] + ["-I%s" % tsan_incdir]
 # Add additional flags if we're using instrumented libc++.
 # Instrumented libcxx currently not supported on Darwin.
Index: test/msan/lit.site.cfg.in
===
--- test/msan/lit.site.cfg.in
+++ test/msan/lit.site.cfg.in
@@ -6,6 +6,7 @@
 config.target_arch = "@MSAN_TEST_TARGET_ARCH@"
 config.use_lld = @MSAN_TEST_USE_LLD@
 config.use_thinlto = @MSAN_TEST_USE_THINLTO@
+config.libtirpc_include_dirs = "@Libtirpc_INCLUDE_DIRS@"
 
 # Load common config for all compiler-rt lit tests.
 lit_config.load_config(config, 
"@COMPILER_RT_BINARY_DIR@/test/lit.common.configured")
Index: test/msan/lit.cfg
===
--- test/msan/lit.cfg
+++ test/msan/lit.cfg
@@ -14,7 +14,8 @@
   "-fno-omit-frame-pointer",
   "-fno-optimize-sibling-calls"] +
   [config.target_cflags] +
-  config.debug_info_flags)
+  config.debug_info_flags +
+  [("-I" + x) for x in 
config.libtirpc_include_dirs.split(';')])
 # Some Msan tests leverage backtrace() which requires libexecinfo on FreeBSD.
 if config.host_os == 'FreeBSD':
   clang_msan_cflags += ["-lexecinfo", "-fPIC"]
Index: lib/sanitizer_common/CMakeLists.txt
===
--- lib/sanitizer_common/CMakeLists.txt
+++ lib/sanitizer_common/CMakeLists.txt
@@ -193,8 +193,6 @@
 
 set(SANITIZER_COMMON_DEFINITIONS)
 
-find_package(Libtirpc)
-
 if (Libtirpc_FOUND)
   include_directories(${Libtirpc_INCLUDE_DIRS})
   list(APPEND SANITIZER_COMMON_DEFINITIONS HAVE_RPC_XDR_H=1)
Index: cmake/base-config-ix.cmake
===
--- cmake/base-config-ix.cmake
+++ cmake/base-config-ix.cmake
@@ -8,6 +8,9 @@
 
 check_include_file(unwind.h HAVE_UNWIND_H)
 
+# used in sanitizer_common and tests
+find_package(Libtirpc)
+
 # Top level target used to build all compiler-rt libraries.
 add_custom_target(compiler-rt ALL)
 add_custom_target(install-compiler-rt)


Index: test/tsan/lit.site.cfg.in
===
--- test/tsan/lit.site.cfg.in
+++ test/tsan/lit.site.cfg.in
@@ -6,6 +6,7 @@
 config.apple_platform = "@TSAN_TEST_APPLE_PLATFORM@"
 config.target_cflags = "@TSAN_TEST_TARGET_CFLAGS@"
 config.target_arch = "@TSAN_TEST_TARGET_ARCH@"
+config.libtirpc_include_dirs = "@Libtirpc_INCLUDE_DIRS@"
 
 # Load common config for all compiler-rt lit tests.
 lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured")
Index: test/tsan/lit.cfg
===
--- test/tsan/lit.cfg
+++ test/tsan/lit.cfg
@@ -49,7 +49,8 @@
   [config.target_cflags] +
   config.debug_info_flags +
   extra_cflags +
-  ["-I%s" % tsan_incdir])
+  ["-I%s" % tsan_incdir] +
+  [("-I" + x) for x in config.libtirpc_include_dirs.split(';')])
 clang_tsan_cxxflags = config.cxx_mode_flags + clang_tsan_cflags + ["-std=c++11"] + ["-I%s" % tsan_incdir]
 # Add additional flags if we're using instrumented libc++.
 # Instrumented libcxx currently not supported on Darwin.
Index: test/msan/lit.site.cfg.in
===
--- test/msan/lit.site.cfg.in
+++ test/msan/lit.site.cfg.in
@@ -6,6 +

[PATCH] D55878: [Driver] Use --hash-style=gnu instead of both on FreeBSD

2018-12-23 Thread Brad Smith via Phabricator via cfe-commits
brad added a comment.

I've been told there is no desire to make gnu the default on OpenBSD.


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55878/new/

https://reviews.llvm.org/D55878



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


[PATCH] D56062: [compiler-rt] [test] Detect glibc-2.27+ and XFAIL appropriate tests

2018-12-23 Thread Michał Górny via Phabricator via cfe-commits
mgorny created this revision.
mgorny added reviewers: eugenis, kcc, samsonov, vitalybuka.
Herald added subscribers: Sanitizers, llvm-commits, dberris.

XFAIL the tests known to fail with glibc-2.27+.  This takes away
the burden of handling known failures from users, and ensures that
we will be verbosely informed when they actually start working again.

Bug report: https://bugs.llvm.org/show_bug.cgi?id=37804


Repository:
  rCRT Compiler Runtime

https://reviews.llvm.org/D56062

Files:
  test/lit.common.cfg
  test/lsan/TestCases/Linux/use_tls_dynamic.cc
  test/msan/dtls_test.c


Index: test/msan/dtls_test.c
===
--- test/msan/dtls_test.c
+++ test/msan/dtls_test.c
@@ -11,6 +11,11 @@
 
// Reports use-of-uninitialized-value, not analyzed
XFAIL: netbsd
+
+   // This is known to be broken with glibc-2.27+
+   // https://bugs.llvm.org/show_bug.cgi?id=37804
+   // XFAIL: glibc-2.27
+
 */
 
 #ifndef BUILD_SO
Index: test/lsan/TestCases/Linux/use_tls_dynamic.cc
===
--- test/lsan/TestCases/Linux/use_tls_dynamic.cc
+++ test/lsan/TestCases/Linux/use_tls_dynamic.cc
@@ -1,4 +1,9 @@
 // Test that dynamically allocated TLS space is included in the root set.
+
+// This is known to be broken with glibc-2.27+
+// https://bugs.llvm.org/show_bug.cgi?id=37804
+// XFAIL: glibc-2.27
+
 // RUN: 
LSAN_BASE="report_objects=1:use_stacks=0:use_registers=0:use_ld_allocations=0"
 // RUN: %clangxx %s -DBUILD_DSO -fPIC -shared -o %t-so.so
 // RUN: %clangxx_lsan %s -o %t
Index: test/lit.common.cfg
===
--- test/lit.common.cfg
+++ test/lit.common.cfg
@@ -287,6 +287,21 @@
   if android_api_level >= 26:
 config.available_features.add('android-26')
 
+if config.host_os == 'Linux':
+  # detect whether we are using glibc, and which version
+  # NB: 'ldd' is just one of the tools commonly installed as part of glibc
+  ldd_ver_cmd = subprocess.Popen(['ldd', '--version'],
+ stdout=subprocess.PIPE,
+ env={'LANG': 'C'})
+  sout, _ = ldd_ver_cmd.communicate()
+  ver_line = sout.splitlines()[0]
+  if ver_line.startswith(b"ldd "):
+from distutils.version import LooseVersion
+ver = LooseVersion(ver_line.split()[-1].decode())
+# 2.27 introduced some incompatibilities
+if ver >= LooseVersion("2.27"):
+  config.available_features.add("glibc-2.27")
+
 sancovcc_path = os.path.join(config.llvm_tools_dir, "sancov")
 if os.path.exists(sancovcc_path):
   config.available_features.add("has_sancovcc")


Index: test/msan/dtls_test.c
===
--- test/msan/dtls_test.c
+++ test/msan/dtls_test.c
@@ -11,6 +11,11 @@
 
// Reports use-of-uninitialized-value, not analyzed
XFAIL: netbsd
+
+   // This is known to be broken with glibc-2.27+
+   // https://bugs.llvm.org/show_bug.cgi?id=37804
+   // XFAIL: glibc-2.27
+
 */
 
 #ifndef BUILD_SO
Index: test/lsan/TestCases/Linux/use_tls_dynamic.cc
===
--- test/lsan/TestCases/Linux/use_tls_dynamic.cc
+++ test/lsan/TestCases/Linux/use_tls_dynamic.cc
@@ -1,4 +1,9 @@
 // Test that dynamically allocated TLS space is included in the root set.
+
+// This is known to be broken with glibc-2.27+
+// https://bugs.llvm.org/show_bug.cgi?id=37804
+// XFAIL: glibc-2.27
+
 // RUN: LSAN_BASE="report_objects=1:use_stacks=0:use_registers=0:use_ld_allocations=0"
 // RUN: %clangxx %s -DBUILD_DSO -fPIC -shared -o %t-so.so
 // RUN: %clangxx_lsan %s -o %t
Index: test/lit.common.cfg
===
--- test/lit.common.cfg
+++ test/lit.common.cfg
@@ -287,6 +287,21 @@
   if android_api_level >= 26:
 config.available_features.add('android-26')
 
+if config.host_os == 'Linux':
+  # detect whether we are using glibc, and which version
+  # NB: 'ldd' is just one of the tools commonly installed as part of glibc
+  ldd_ver_cmd = subprocess.Popen(['ldd', '--version'],
+ stdout=subprocess.PIPE,
+ env={'LANG': 'C'})
+  sout, _ = ldd_ver_cmd.communicate()
+  ver_line = sout.splitlines()[0]
+  if ver_line.startswith(b"ldd "):
+from distutils.version import LooseVersion
+ver = LooseVersion(ver_line.split()[-1].decode())
+# 2.27 introduced some incompatibilities
+if ver >= LooseVersion("2.27"):
+  config.available_features.add("glibc-2.27")
+
 sancovcc_path = os.path.join(config.llvm_tools_dir, "sancov")
 if os.path.exists(sancovcc_path):
   config.available_features.add("has_sancovcc")
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] r350040 - [clangd] Delete stray semicolon. NFC

2018-12-23 Thread Fangrui Song via cfe-commits
Author: maskray
Date: Sun Dec 23 19:19:53 2018
New Revision: 350040

URL: http://llvm.org/viewvc/llvm-project?rev=350040&view=rev
Log:
[clangd] Delete stray semicolon. NFC

Modified:
clang-tools-extra/trunk/clangd/Function.h

Modified: clang-tools-extra/trunk/clangd/Function.h
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/Function.h?rev=350040&r1=350039&r2=350040&view=diff
==
--- clang-tools-extra/trunk/clangd/Function.h (original)
+++ clang-tools-extra/trunk/clangd/Function.h Sun Dec 23 19:19:53 2018
@@ -133,7 +133,6 @@ public:
 std::lock_guard Lock(ListenersMu);
 Listeners.push_back({std::move(L), ++ListenerCount});
 return Subscription(this, ListenerCount);
-;
   }
 
   // Synchronously sends an event to all registered listeners.


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


[PATCH] D54945: This commit adds a chapter about clang-tidy integrations

2018-12-23 Thread Marina Kalashina via Phabricator via cfe-commits
MarinaKalashina added a comment.

@alexfh Just for me to be sure, should there be the following structure in 
http://clang.llvm.org/extra/index.html:
Clang-Tidy

  The list of clang-tidy checks
  Using clang-tidy
  Suppressing Undesired Diagnostics
  Clang-tidy Integrated (separate page)
  Getting Involved (separate page)

And should the latter two pages be linked from 'Clang-Tidy' index.rs like 'The 
list of clang-tidy checks', which is placed in 'See also'?
Thank you.




Comment at: docs/clang-tidy/index.rst:262
+
+Clang-tidy integrated
+-

alexfh wrote:
> So how about moving this chapter to a separate page and adding a link to it 
> at the top of this document? While certainly useful, the information in this 
> section has a different focus from the rest of the documentation. Given that 
> the document has grown significantly, I suggest to split out this section and 
> the "Getting involved" section. (The latter can be done separately)
Just for me to be sure, should there be the following structure in 
http://clang.llvm.org/extra/index.html:
Clang-Tidy
  The list of clang-tidy checks
  Using clang-tidy
  Suppressing Undesired Diagnostics
  Clang-tidy Integrated (separate page)
  Getting Involved (separate page)
And should the latter two pages be linked from 'Clang-Tidy' index.rs like 'The 
list of clang-tidy checks', which is placed in 'See also'?
Thank you.



CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D54945/new/

https://reviews.llvm.org/D54945



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