Re: [PATCH] D23343: [clang-tidy] modernize-make-{smart_ptr} private ctor bugfix

2016-08-21 Thread Piotr Padlewski via cfe-commits
Prazek updated this revision to Diff 68824.
Prazek added a comment.

- fixes


https://reviews.llvm.org/D23343

Files:
  clang-tidy/modernize/MakeSmartPtrCheck.cpp
  docs/ReleaseNotes.rst
  test/clang-tidy/modernize-make-shared.cpp
  test/clang-tidy/modernize-make-unique.cpp

Index: test/clang-tidy/modernize-make-unique.cpp
===
--- test/clang-tidy/modernize-make-unique.cpp
+++ test/clang-tidy/modernize-make-unique.cpp
@@ -103,6 +103,38 @@
   std::unique_ptr Placement = std::unique_ptr(new (PInt) int{3});
 }
 
+// Calling make_smart_ptr from within a member function of a type with a
+// private or protected constructor would be ill-formed.
+class Private {
+private:
+  Private(int z) {}
+
+public:
+  Private() {}
+  void create() {
+auto callsPublic = std::unique_ptr(new Private);
+// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: use std::make_unique instead
+// CHECK-FIXES: auto callsPublic = std::make_unique();
+auto ptr = std::unique_ptr(new Private(42));
+  }
+
+  virtual ~Private();
+};
+
+class Protected {
+protected:
+  Protected() {}
+
+public:
+  Protected(int, int) {}
+  void create() {
+auto callsPublic = std::unique_ptr(new Protected(1, 2));
+// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: use std::make_unique instead
+// CHECK-FIXES: auto callsPublic = std::make_unique(1, 2);
+auto ptr = std::unique_ptr(new Protected);
+  }
+};
+
 void initialization(int T, Base b) {
   // Test different kinds of initialization of the pointee.
 
Index: test/clang-tidy/modernize-make-shared.cpp
===
--- test/clang-tidy/modernize-make-shared.cpp
+++ test/clang-tidy/modernize-make-shared.cpp
@@ -100,6 +100,38 @@
   std::shared_ptr Placement = std::shared_ptr(new (PInt) int{3});
 }
 
+// Calling make_smart_ptr from within a member function of a type with a
+// private or protected constructor would be ill-formed.
+class Private {
+private:
+  Private(int z) {}
+
+public:
+  Private() {}
+  void create() {
+auto callsPublic = std::shared_ptr(new Private);
+// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: use std::make_shared instead
+// CHECK-FIXES: auto callsPublic = std::make_shared();
+auto ptr = std::shared_ptr(new Private(42));
+  }
+
+  virtual ~Private();
+};
+
+class Protected {
+protected:
+  Protected() {}
+
+public:
+  Protected(int, int) {}
+  void create() {
+auto callsPublic = std::shared_ptr(new Protected(1, 2));
+// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: use std::make_shared instead
+// CHECK-FIXES: auto callsPublic = std::make_shared(1, 2);
+auto ptr = std::shared_ptr(new Protected);
+  }
+};
+
 void initialization(int T, Base b) {
   // Test different kinds of initialization of the pointee.
 
Index: docs/ReleaseNotes.rst
===
--- docs/ReleaseNotes.rst
+++ docs/ReleaseNotes.rst
@@ -85,6 +85,15 @@
   Warns about the performance overhead arising from concatenating strings using
   the ``operator+``, instead of ``operator+=``.
 
+
+Fixed bugs:
+- `modernize-make-unique
+  `_
+  and `modernize-make-shared
+  `_
+  Calling ``make_{unique|shared}`` from within a member function of a type
+  with a private or protected constructor would be ill-formed.
+
 Improvements to include-fixer
 -
 
Index: clang-tidy/modernize/MakeSmartPtrCheck.cpp
===
--- clang-tidy/modernize/MakeSmartPtrCheck.cpp
+++ clang-tidy/modernize/MakeSmartPtrCheck.cpp
@@ -29,13 +29,19 @@
   if (!getLangOpts().CPlusPlus11)
 return;
 
+  // Calling make_smart_ptr from within a member function of a type with a
+  // private or protected constructor would be ill-formed.
+  auto CanCallCtor = unless(has(ignoringImpCasts(cxxConstructExpr(
+  hasDeclaration(decl(unless(isPublic(;
+
   Finder->addMatcher(
   cxxBindTemporaryExpr(has(ignoringParenImpCasts(
   cxxConstructExpr(
   hasType(getSmartPointerTypeMatcher()), argumentCountIs(1),
   hasArgument(0,
   cxxNewExpr(hasType(pointsTo(qualType(hasCanonicalType(
- equalsBoundNode(PointerType))
+ equalsBoundNode(PointerType),
+ CanCallCtor)
   .bind(NewExpression)))
   .bind(ConstructorCall,
   this);
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r279374 - [Sema] Don't crash on scanf on forward-declared enums.

2016-08-21 Thread Vitaly Buka via cfe-commits
flake

On Sat, Aug 20, 2016 at 11:30 AM Benjamin Kramer 
wrote:

> It cycled back to green. flake?
>
> On Sat, Aug 20, 2016 at 7:27 PM, Vitaly Buka 
> wrote:
> > msan is not happy about this change
> >
> http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/15681/steps/check-llvm%20msan/logs/stdio
> >
> > On Sat, Aug 20, 2016 at 9:59 AM Benjamin Kramer via cfe-commits
> >  wrote:
> >>
> >> Author: d0k
> >> Date: Sat Aug 20 11:51:33 2016
> >> New Revision: 279374
> >>
> >> URL: http://llvm.org/viewvc/llvm-project?rev=279374=rev
> >> Log:
> >> [Sema] Don't crash on scanf on forward-declared enums.
> >>
> >> This is valid in GNU C, which allows pointers to incomplete enums. GCC
> >> just pretends that the underlying type is 'int' in those cases, follow
> >> that behavior.
> >>
> >> Modified:
> >> cfe/trunk/lib/Analysis/FormatString.cpp
> >> cfe/trunk/lib/Analysis/ScanfFormatString.cpp
> >> cfe/trunk/test/Sema/format-strings-enum.c
> >>
> >> Modified: cfe/trunk/lib/Analysis/FormatString.cpp
> >> URL:
> >>
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/FormatString.cpp?rev=279374=279373=279374=diff
> >>
> >>
> ==
> >> --- cfe/trunk/lib/Analysis/FormatString.cpp (original)
> >> +++ cfe/trunk/lib/Analysis/FormatString.cpp Sat Aug 20 11:51:33 2016
> >> @@ -310,8 +310,13 @@ ArgType::matchesType(ASTContext , Qual
> >>return Match;
> >>
> >>  case AnyCharTy: {
> >> -  if (const EnumType *ETy = argTy->getAs())
> >> +  if (const EnumType *ETy = argTy->getAs()) {
> >> +// If the enum is incomplete we know nothing about the
> underlying
> >> type.
> >> +// Assume that it's 'int'.
> >> +if (!ETy->getDecl()->isComplete())
> >> +  return NoMatch;
> >>  argTy = ETy->getDecl()->getIntegerType();
> >> +  }
> >>
> >>if (const BuiltinType *BT = argTy->getAs())
> >>  switch (BT->getKind()) {
> >> @@ -327,8 +332,14 @@ ArgType::matchesType(ASTContext , Qual
> >>  }
> >>
> >>  case SpecificTy: {
> >> -  if (const EnumType *ETy = argTy->getAs())
> >> -argTy = ETy->getDecl()->getIntegerType();
> >> +  if (const EnumType *ETy = argTy->getAs()) {
> >> +// If the enum is incomplete we know nothing about the
> underlying
> >> type.
> >> +// Assume that it's 'int'.
> >> +if (!ETy->getDecl()->isComplete())
> >> +  argTy = C.IntTy;
> >> +else
> >> +  argTy = ETy->getDecl()->getIntegerType();
> >> +  }
> >>argTy = C.getCanonicalType(argTy).getUnqualifiedType();
> >>
> >>if (T == argTy)
> >>
> >> Modified: cfe/trunk/lib/Analysis/ScanfFormatString.cpp
> >> URL:
> >>
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/ScanfFormatString.cpp?rev=279374=279373=279374=diff
> >>
> >>
> ==
> >> --- cfe/trunk/lib/Analysis/ScanfFormatString.cpp (original)
> >> +++ cfe/trunk/lib/Analysis/ScanfFormatString.cpp Sat Aug 20 11:51:33
> 2016
> >> @@ -418,8 +418,12 @@ bool ScanfSpecifier::fixType(QualType QT
> >>QualType PT = QT->getPointeeType();
> >>
> >>// If it's an enum, get its underlying type.
> >> -  if (const EnumType *ETy = PT->getAs())
> >> +  if (const EnumType *ETy = PT->getAs()) {
> >> +// Don't try to fix incomplete enums.
> >> +if (!ETy->getDecl()->isComplete())
> >> +  return false;
> >>  PT = ETy->getDecl()->getIntegerType();
> >> +  }
> >>
> >>const BuiltinType *BT = PT->getAs();
> >>if (!BT)
> >>
> >> Modified: cfe/trunk/test/Sema/format-strings-enum.c
> >> URL:
> >>
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/format-strings-enum.c?rev=279374=279373=279374=diff
> >>
> >>
> ==
> >> --- cfe/trunk/test/Sema/format-strings-enum.c (original)
> >> +++ cfe/trunk/test/Sema/format-strings-enum.c Sat Aug 20 11:51:33 2016
> >> @@ -11,6 +11,7 @@
> >>  #endif
> >>
> >>  EXTERN_C int printf(const char *,...);
> >> +EXTERN_C int scanf(const char *, ...);
> >>
> >>  typedef enum { Constant = 0 } TestEnum;
> >>  // Note that in C, the type of 'Constant' is 'int'. In C++ it is
> >> 'TestEnum'.
> >> @@ -34,3 +35,18 @@ void testLong(LongEnum input) {
> >>printf("%lu", input);
> >>printf("%lu", LongConstant);
> >>  }
> >> +
> >> +#ifndef __cplusplus
> >> +// GNU C allows forward declaring enums.
> >> +extern enum forward_declared *fwd;
> >> +
> >> +void forward_enum() {
> >> +  printf("%u", fwd); // expected-warning{{format specifies type
> 'unsigned
> >> int' but the argument has type 'enum forward_declared *}}
> >> +  printf("%p", fwd);
> >> +
> >> +  scanf("%c", fwd); // expected-warning{{format specifies type 'char *'
> >> but the argument has type 'enum forward_declared *}}
> >> +  

Re: [PATCH] D23761: clang-format: [JS] supports casts to types starting with punctuation ("{[(").

2016-08-21 Thread Yunzhong Gao via cfe-commits
ygao added a subscriber: ygao.


Comment at: lib/Format/FormatTokenLexer.cpp:245
@@ -241,1 +244,3 @@
   ++Offset; // Skip the escaped character.
+if (Offset + 1 < Lex->getBuffer().end() && *Offset == '$' &&
+*(Offset + 1) == '{') {

What happens if the '${' is immediately after a backslash (the if statement 
above), should the '${' get escaped?


https://reviews.llvm.org/D23761



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


[PATCH] D23761: clang-format: [JS] supports casts to types starting with punctuation ("{[(").

2016-08-21 Thread Martin Probst via cfe-commits
mprobst created this revision.
mprobst added a reviewer: djasper.
mprobst added subscribers: cfe-commits, klimek.

https://reviews.llvm.org/D23761

Files:
  lib/Format/FormatTokenLexer.cpp
  lib/Format/FormatTokenLexer.h
  lib/Format/TokenAnnotator.cpp
  unittests/Format/FormatTestJS.cpp

Index: unittests/Format/FormatTestJS.cpp
===
--- unittests/Format/FormatTestJS.cpp
+++ unittests/Format/FormatTestJS.cpp
@@ -1122,7 +1122,7 @@
 TEST_F(FormatTestJS, TemplateStrings) {
   // Keeps any whitespace/indentation within the template string.
   verifyFormat("var x = `hello\n"
-" ${  name}\n"
+" ${name}\n"
 "  !`;",
 "var x=`hello\n"
" ${  name}\n"
@@ -1206,6 +1206,12 @@
"var y;",
"var x = ` \\` a`;\n"
"var y;");
+  verifyFormat(
+  "var x = `${xs.map(x => `${x}`).join('\\n')}`;");
+}
+
+TEST_F(FormatTestJS, TaggedTemplateStrings) {
+  verifyFormat("var x = html``;");
 }
 
 TEST_F(FormatTestJS, CastSyntax) {
@@ -1219,6 +1225,9 @@
"  2\n"
"];");
   verifyFormat("var x = [{x: 1} as type];");
+  verifyFormat("x = x as [a, b];");
+  verifyFormat("x = x as {a: string};");
+  verifyFormat("x = x as (string);");
 }
 
 TEST_F(FormatTestJS, TypeArguments) {
Index: lib/Format/TokenAnnotator.cpp
===
--- lib/Format/TokenAnnotator.cpp
+++ lib/Format/TokenAnnotator.cpp
@@ -858,7 +858,7 @@
 if (!CurrentToken->isOneOf(TT_LambdaLSquare, TT_ForEachMacro,
TT_FunctionLBrace, TT_ImplicitStringLiteral,
TT_InlineASMBrace, TT_JsFatArrow, TT_LambdaArrow,
-   TT_RegexLiteral))
+   TT_RegexLiteral, TT_TemplateString))
   CurrentToken->Type = TT_Unknown;
 CurrentToken->Role.reset();
 CurrentToken->MatchingParen = nullptr;
@@ -1816,6 +1816,9 @@
   return 100;
 if (Left.is(TT_JsTypeColon))
   return 35;
+if ((Left.is(TT_TemplateString) && Left.TokenText.endswith("${")) ||
+(Right.is(TT_TemplateString) && Right.TokenText.startswith("}")))
+  return 100;
   }
 
   if (Left.is(tok::comma) || (Right.is(tok::identifier) && Right.Next &&
@@ -2114,13 +2117,21 @@
   } else if (Style.Language == FormatStyle::LK_JavaScript) {
 if (Left.is(TT_JsFatArrow))
   return true;
+if ((Left.is(TT_TemplateString) && Left.TokenText.endswith("${")) ||
+(Right.is(TT_TemplateString) && Right.TokenText.startswith("}")))
+  return false;
+if (Left.is(tok::identifier) && Right.is(TT_TemplateString))
+  return false;
 if (Right.is(tok::star) &&
 Left.isOneOf(Keywords.kw_function, Keywords.kw_yield))
   return false;
 if (Left.isOneOf(Keywords.kw_let, Keywords.kw_var, Keywords.kw_in,
  Keywords.kw_of, tok::kw_const) &&
 (!Left.Previous || !Left.Previous->is(tok::period)))
   return true;
+if (Left.is(Keywords.kw_as) &&
+Right.isOneOf(tok::l_square, tok::l_brace, tok::l_paren))
+  return true;
 if (Left.is(tok::kw_default) && Left.Previous &&
 Left.Previous->is(tok::kw_export))
   return true;
Index: lib/Format/FormatTokenLexer.h
===
--- lib/Format/FormatTokenLexer.h
+++ lib/Format/FormatTokenLexer.h
@@ -66,6 +66,7 @@
   FormatToken *FormatTok;
   bool IsFirstToken;
   bool GreaterStashed, LessStashed;
+  unsigned TemplateStringDepth;
   unsigned Column;
   unsigned TrailingWhitespace;
   std::unique_ptr Lex;
Index: lib/Format/FormatTokenLexer.cpp
===
--- lib/Format/FormatTokenLexer.cpp
+++ lib/Format/FormatTokenLexer.cpp
@@ -27,8 +27,8 @@
const FormatStyle ,
encoding::Encoding Encoding)
 : FormatTok(nullptr), IsFirstToken(true), GreaterStashed(false),
-  LessStashed(false), Column(0), TrailingWhitespace(0),
-  SourceMgr(SourceMgr), ID(ID), Style(Style),
+  LessStashed(false), TemplateStringDepth(0), Column(0),
+  TrailingWhitespace(0), SourceMgr(SourceMgr), ID(ID), Style(Style),
   IdentTable(getFormattingLangOpts(Style)), Keywords(IdentTable),
   Encoding(Encoding), FirstInLineIndex(0), FormattingDisabled(false),
   MacroBlockBeginRegex(Style.MacroBlockBegin),
@@ -230,15 +230,25 @@
 
 void FormatTokenLexer::tryParseTemplateString() {
   FormatToken *BacktickToken = Tokens.back();
-  if (!BacktickToken->is(tok::unknown) || BacktickToken->TokenText != "`")
+  if (TemplateStringDepth > 0 && BacktickToken->TokenText == "}")
+TemplateStringDepth--;
+  else if (!BacktickToken->is(tok::unknown) ||
+ BacktickToken->TokenText != "`")
 return;
 
   // 

Re: [PATCH] D19979: [analyzer] ScopeContext - initial implementation

2016-08-21 Thread Devin Coughlin via cfe-commits
dcoughlin added a comment.

This has been requested by PR29069 https://llvm.org/bugs/show_bug.cgi?id=29069


https://reviews.llvm.org/D19979



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


Re: [PATCH] D23651: [clang-rename] improve performance for rename-all

2016-08-21 Thread Kirill Bobyrev via cfe-commits
omtcyfz marked an inline comment as done.
omtcyfz added a comment.

In https://reviews.llvm.org/D23651#521031, @vmiklos wrote:

> It is expected that either SymbolOffsets or OldNames is empty, and the size 
> of the non-empty container is the same as the size of the NewNames container. 
> So no, the code does not rely on the offsets and the old names having the 
> same length.


If I understood correctly, you and Alex are talking about different things.

As far as I understand Alex what he meant is the code inside 
`USRFindingAction.cpp` relies on `SymbolOffsetsVector` and `OldNamesVector` (or 
whatever I actually called them) having same size. And that's right. See 
`clang-rename/USRFindingAction.cpp` line 153 in current diff. And I actually 
construct them to have the same size (see line 212 in 
`clang-rename/ClangRename.cpp`). I do not claim this to be the best solution, 
open to any other ideas, but it isn't too ugly to do so IMO.

If I understand you correctly code doesn't rely on `SymbolOffsets` and 
`OldNames` having equal size. And that's also correct.

Thus said, what Alex proposes (bind offset and old-name together while passing 
to `USRFindingAction`) makes sense to me.


https://reviews.llvm.org/D23651



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


Re: [PATCH] D15227: [analyzer] Valist checkers.

2016-08-21 Thread Artem Dergachev via cfe-commits
NoQ added a comment.

In https://reviews.llvm.org/D15227#519239, @xazax.hun wrote:

> I suspect that slightly different AST is generated for those architectures 
> that cause the different behavior. I will further investigate those problems.


Seems so, because on my machine when i append `-triple hexagon-unknown-linux` 
to the test run line, a bunch of things start failing. You may also consider 
hardcoding the runline in the current test and commit (which is so often a good 
idea), and fix other stuff in later commits. A proper investigation would be 
great, of course :)

P.S. Just curious - do you plan to eventually model `va_arg()`, as we discussed 
with Michael Tandy in 
http://lists.llvm.org/pipermail/cfe-dev/2016-August/050202.html ?


Repository:
  rL LLVM

https://reviews.llvm.org/D15227



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


[PATCH] D23758: cmake: Support stand-alone Sphinx & doxygen doc build

2016-08-21 Thread Michał Górny via cfe-commits
mgorny created this revision.
mgorny added a reviewer: chapuni.
mgorny added a subscriber: cfe-commits.

Copy the necessary options and configuration checks from LLVM to clang,
to support stand-alone documentation builds.


https://reviews.llvm.org/D23758

Files:
  CMakeLists.txt

Index: CMakeLists.txt
===
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -162,6 +162,43 @@
 endif()
   endif()
 
+  option (LLVM_BUILD_DOCS "Build the llvm documentation." OFF)
+  option (LLVM_INCLUDE_DOCS "Generate build targets for llvm documentation." 
ON)
+  option (LLVM_ENABLE_DOXYGEN "Use doxygen to generate llvm API 
documentation." OFF)
+  option (LLVM_ENABLE_SPHINX "Use Sphinx to generate llvm documentation." OFF)
+
+  if (LLVM_ENABLE_DOXYGEN)
+message(STATUS "Doxygen enabled.")
+find_package(Doxygen REQUIRED)
+
+if (DOXYGEN_FOUND)
+  # If we find doxygen and we want to enable doxygen by default create a
+  # global aggregate doxygen target for generating llvm and any/all
+  # subprojects doxygen documentation.
+  if (LLVM_BUILD_DOCS)
+add_custom_target(doxygen ALL)
+  endif()
+
+  option(LLVM_DOXYGEN_EXTERNAL_SEARCH "Enable doxygen external search." 
OFF)
+  if (LLVM_DOXYGEN_EXTERNAL_SEARCH)
+set(LLVM_DOXYGEN_SEARCHENGINE_URL "" CACHE STRING "URL to use for 
external search.")
+set(LLVM_DOXYGEN_SEARCH_MAPPINGS "" CACHE STRING "Doxygen Search 
Mappings")
+  endif()
+endif()
+  else()
+message(STATUS "Doxygen disabled.")
+  endif()
+
+  if (LLVM_ENABLE_SPHINX)
+message(STATUS "Sphinx enabled.")
+find_package(Sphinx REQUIRED)
+if (LLVM_BUILD_DOCS)
+  add_custom_target(sphinx ALL)
+endif()
+  else()
+message(STATUS "Sphinx disabled.")
+  endif()
+
   set( CLANG_BUILT_STANDALONE 1 )
   set(BACKEND_PACKAGE_STRING "LLVM ${LLVM_PACKAGE_VERSION}")
 else()


Index: CMakeLists.txt
===
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -162,6 +162,43 @@
 endif()
   endif()
 
+  option (LLVM_BUILD_DOCS "Build the llvm documentation." OFF)
+  option (LLVM_INCLUDE_DOCS "Generate build targets for llvm documentation." ON)
+  option (LLVM_ENABLE_DOXYGEN "Use doxygen to generate llvm API documentation." OFF)
+  option (LLVM_ENABLE_SPHINX "Use Sphinx to generate llvm documentation." OFF)
+
+  if (LLVM_ENABLE_DOXYGEN)
+message(STATUS "Doxygen enabled.")
+find_package(Doxygen REQUIRED)
+
+if (DOXYGEN_FOUND)
+  # If we find doxygen and we want to enable doxygen by default create a
+  # global aggregate doxygen target for generating llvm and any/all
+  # subprojects doxygen documentation.
+  if (LLVM_BUILD_DOCS)
+add_custom_target(doxygen ALL)
+  endif()
+
+  option(LLVM_DOXYGEN_EXTERNAL_SEARCH "Enable doxygen external search." OFF)
+  if (LLVM_DOXYGEN_EXTERNAL_SEARCH)
+set(LLVM_DOXYGEN_SEARCHENGINE_URL "" CACHE STRING "URL to use for external search.")
+set(LLVM_DOXYGEN_SEARCH_MAPPINGS "" CACHE STRING "Doxygen Search Mappings")
+  endif()
+endif()
+  else()
+message(STATUS "Doxygen disabled.")
+  endif()
+
+  if (LLVM_ENABLE_SPHINX)
+message(STATUS "Sphinx enabled.")
+find_package(Sphinx REQUIRED)
+if (LLVM_BUILD_DOCS)
+  add_custom_target(sphinx ALL)
+endif()
+  else()
+message(STATUS "Sphinx disabled.")
+  endif()
+
   set( CLANG_BUILT_STANDALONE 1 )
   set(BACKEND_PACKAGE_STRING "LLVM ${LLVM_PACKAGE_VERSION}")
 else()
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D23753: [AVX512] Arguments to _mm512_[mask_]abs_ps|d must have "__" prefix

2016-08-21 Thread Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL279392: [X86][AVX512F] minor fix of the parameter names 
(authored by abadouh).

Changed prior to commit:
  https://reviews.llvm.org/D23753?vs=68801=68805#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D23753

Files:
  cfe/trunk/lib/Headers/avx512fintrin.h

Index: cfe/trunk/lib/Headers/avx512fintrin.h
===
--- cfe/trunk/lib/Headers/avx512fintrin.h
+++ cfe/trunk/lib/Headers/avx512fintrin.h
@@ -9557,27 +9557,27 @@
 (e4),(e3),(e2),(e1),(e0))
 
 static __inline__ __m512 __DEFAULT_FN_ATTRS
-_mm512_abs_ps(__m512 A)
+_mm512_abs_ps(__m512 __A)
 {
-  return (__m512)_mm512_and_epi32(_mm512_set1_epi32(0x7FFF),(__m512i)A) ;
+  return (__m512)_mm512_and_epi32(_mm512_set1_epi32(0x7FFF),(__m512i)__A) ;
 }
 
 static __inline__ __m512 __DEFAULT_FN_ATTRS
-_mm512_mask_abs_ps(__m512 W, __mmask16 K, __m512 A)
+_mm512_mask_abs_ps(__m512 __W, __mmask16 __K, __m512 __A)
 {
-  return (__m512)_mm512_mask_and_epi32((__m512i)W, K, 
_mm512_set1_epi32(0x7FFF),(__m512i)A) ;
+  return (__m512)_mm512_mask_and_epi32((__m512i)__W, __K, 
_mm512_set1_epi32(0x7FFF),(__m512i)__A) ;
 }
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_abs_pd(__m512d A)
+_mm512_abs_pd(__m512d __A)
 {
-  return 
(__m512d)_mm512_and_epi64(_mm512_set1_epi64(0x7FFF),(__v8di)A) ;
+  return 
(__m512d)_mm512_and_epi64(_mm512_set1_epi64(0x7FFF),(__v8di)__A) ;
 }
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_mask_abs_pd(__m512d W, __mmask8 K, __m512d A)
+_mm512_mask_abs_pd(__m512d __W, __mmask8 __K, __m512d __A)
 {
-  return (__m512d)_mm512_mask_and_epi64((__v8di)W, K, 
_mm512_set1_epi64(0x7FFF),(__v8di)A);
+  return (__m512d)_mm512_mask_and_epi64((__v8di)__W, __K, 
_mm512_set1_epi64(0x7FFF),(__v8di)__A);
 }
 
 #undef __DEFAULT_FN_ATTRS


Index: cfe/trunk/lib/Headers/avx512fintrin.h
===
--- cfe/trunk/lib/Headers/avx512fintrin.h
+++ cfe/trunk/lib/Headers/avx512fintrin.h
@@ -9557,27 +9557,27 @@
 (e4),(e3),(e2),(e1),(e0))
 
 static __inline__ __m512 __DEFAULT_FN_ATTRS
-_mm512_abs_ps(__m512 A)
+_mm512_abs_ps(__m512 __A)
 {
-  return (__m512)_mm512_and_epi32(_mm512_set1_epi32(0x7FFF),(__m512i)A) ;
+  return (__m512)_mm512_and_epi32(_mm512_set1_epi32(0x7FFF),(__m512i)__A) ;
 }
 
 static __inline__ __m512 __DEFAULT_FN_ATTRS
-_mm512_mask_abs_ps(__m512 W, __mmask16 K, __m512 A)
+_mm512_mask_abs_ps(__m512 __W, __mmask16 __K, __m512 __A)
 {
-  return (__m512)_mm512_mask_and_epi32((__m512i)W, K, _mm512_set1_epi32(0x7FFF),(__m512i)A) ;
+  return (__m512)_mm512_mask_and_epi32((__m512i)__W, __K, _mm512_set1_epi32(0x7FFF),(__m512i)__A) ;
 }
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_abs_pd(__m512d A)
+_mm512_abs_pd(__m512d __A)
 {
-  return (__m512d)_mm512_and_epi64(_mm512_set1_epi64(0x7FFF),(__v8di)A) ;
+  return (__m512d)_mm512_and_epi64(_mm512_set1_epi64(0x7FFF),(__v8di)__A) ;
 }
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_mask_abs_pd(__m512d W, __mmask8 K, __m512d A)
+_mm512_mask_abs_pd(__m512d __W, __mmask8 __K, __m512d __A)
 {
-  return (__m512d)_mm512_mask_and_epi64((__v8di)W, K, _mm512_set1_epi64(0x7FFF),(__v8di)A);
+  return (__m512d)_mm512_mask_and_epi64((__v8di)__W, __K, _mm512_set1_epi64(0x7FFF),(__v8di)__A);
 }
 
 #undef __DEFAULT_FN_ATTRS
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r279392 - [X86][AVX512F] minor fix of the parameter names

2016-08-21 Thread Asaf Badouh via cfe-commits
Author: abadouh
Date: Sun Aug 21 02:56:47 2016
New Revision: 279392

URL: http://llvm.org/viewvc/llvm-project?rev=279392=rev
Log:
[X86][AVX512F] minor fix of the parameter names
add "__" prefix

Bug 28842 https://llvm.org/bugs/show_bug.cgi?id=29040

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


 

Modified:
cfe/trunk/lib/Headers/avx512fintrin.h

Modified: cfe/trunk/lib/Headers/avx512fintrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512fintrin.h?rev=279392=279391=279392=diff
==
--- cfe/trunk/lib/Headers/avx512fintrin.h (original)
+++ cfe/trunk/lib/Headers/avx512fintrin.h Sun Aug 21 02:56:47 2016
@@ -9557,27 +9557,27 @@ _mm512_set_ps (float __A, float __B, flo
 (e4),(e3),(e2),(e1),(e0))
 
 static __inline__ __m512 __DEFAULT_FN_ATTRS
-_mm512_abs_ps(__m512 A)
+_mm512_abs_ps(__m512 __A)
 {
-  return (__m512)_mm512_and_epi32(_mm512_set1_epi32(0x7FFF),(__m512i)A) ;
+  return (__m512)_mm512_and_epi32(_mm512_set1_epi32(0x7FFF),(__m512i)__A) ;
 }
 
 static __inline__ __m512 __DEFAULT_FN_ATTRS
-_mm512_mask_abs_ps(__m512 W, __mmask16 K, __m512 A)
+_mm512_mask_abs_ps(__m512 __W, __mmask16 __K, __m512 __A)
 {
-  return (__m512)_mm512_mask_and_epi32((__m512i)W, K, 
_mm512_set1_epi32(0x7FFF),(__m512i)A) ;
+  return (__m512)_mm512_mask_and_epi32((__m512i)__W, __K, 
_mm512_set1_epi32(0x7FFF),(__m512i)__A) ;
 }
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_abs_pd(__m512d A)
+_mm512_abs_pd(__m512d __A)
 {
-  return 
(__m512d)_mm512_and_epi64(_mm512_set1_epi64(0x7FFF),(__v8di)A) ;
+  return 
(__m512d)_mm512_and_epi64(_mm512_set1_epi64(0x7FFF),(__v8di)__A) ;
 }
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_mask_abs_pd(__m512d W, __mmask8 K, __m512d A)
+_mm512_mask_abs_pd(__m512d __W, __mmask8 __K, __m512d __A)
 {
-  return (__m512d)_mm512_mask_and_epi64((__v8di)W, K, 
_mm512_set1_epi64(0x7FFF),(__v8di)A);
+  return (__m512d)_mm512_mask_and_epi64((__v8di)__W, __K, 
_mm512_set1_epi64(0x7FFF),(__v8di)__A);
 }
 
 #undef __DEFAULT_FN_ATTRS


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


[PATCH] D23754: cmake: Add CLANG_GOLD_LIBDIR_SUFFIX to specify loc of LLVMgold.so

2016-08-21 Thread Michał Górny via cfe-commits
mgorny created this revision.
mgorny added a reviewer: rafael.
mgorny added a subscriber: cfe-commits.

Add CLANG_GOLD_LIBDIR_SUFFIX that defaults to ${LLVM_LIBDIR_SUFFIX}
and can be overriden if LLVMgold.so is installed elsewhere. The use case
are multilib systems where binutils is 64-bit and clang is 32-bit,
therefore the gold plugin is installed in 64-bit libdir while clang
is not.

Bug: https://llvm.org/bugs/show_bug.cgi?id=23793
Depends on: https://reviews.llvm.org/D23752

https://reviews.llvm.org/D23754

Files:
  CMakeLists.txt
  include/clang/Config/config.h.cmake
  lib/Driver/Tools.cpp

Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -2007,7 +2007,7 @@
   // forward.
   CmdArgs.push_back("-plugin");
   std::string Plugin =
-  ToolChain.getDriver().Dir + "/../lib" CLANG_LIBDIR_SUFFIX "/LLVMgold.so";
+  ToolChain.getDriver().Dir + "/../lib" CLANG_GOLD_LIBDIR_SUFFIX 
"/LLVMgold.so";
   CmdArgs.push_back(Args.MakeArgString(Plugin));
 
   // Try to pass driver level flags relevant to LTO code generation down to
Index: include/clang/Config/config.h.cmake
===
--- include/clang/Config/config.h.cmake
+++ include/clang/Config/config.h.cmake
@@ -20,6 +20,9 @@
 /* Multilib suffix for libdir. */
 #define CLANG_LIBDIR_SUFFIX "${CLANG_LIBDIR_SUFFIX}"
 
+/* Multilib suffix for libdir containing LLVMgold.so. */
+#define CLANG_GOLD_LIBDIR_SUFFIX "${CLANG_GOLD_LIBDIR_SUFFIX}"
+
 /* Relative directory for resource files */
 #define CLANG_RESOURCE_DIR "${CLANG_RESOURCE_DIR}"
 
Index: CMakeLists.txt
===
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -239,6 +239,9 @@
   STRING "Define suffix of library directory name for clang runtime (32/64)")
 set(CLANG_LIBRARY_OUTPUT_INTDIR 
${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${CLANG_LIBDIR_SUFFIX})
 
+set(CLANG_GOLD_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}" CACHE
+  STRING "Define suffix of library directory name that contains LLVMgold.so 
(32/64)")
+
 set(CLANG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 set(CLANG_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
 


Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -2007,7 +2007,7 @@
   // forward.
   CmdArgs.push_back("-plugin");
   std::string Plugin =
-  ToolChain.getDriver().Dir + "/../lib" CLANG_LIBDIR_SUFFIX "/LLVMgold.so";
+  ToolChain.getDriver().Dir + "/../lib" CLANG_GOLD_LIBDIR_SUFFIX "/LLVMgold.so";
   CmdArgs.push_back(Args.MakeArgString(Plugin));
 
   // Try to pass driver level flags relevant to LTO code generation down to
Index: include/clang/Config/config.h.cmake
===
--- include/clang/Config/config.h.cmake
+++ include/clang/Config/config.h.cmake
@@ -20,6 +20,9 @@
 /* Multilib suffix for libdir. */
 #define CLANG_LIBDIR_SUFFIX "${CLANG_LIBDIR_SUFFIX}"
 
+/* Multilib suffix for libdir containing LLVMgold.so. */
+#define CLANG_GOLD_LIBDIR_SUFFIX "${CLANG_GOLD_LIBDIR_SUFFIX}"
+
 /* Relative directory for resource files */
 #define CLANG_RESOURCE_DIR "${CLANG_RESOURCE_DIR}"
 
Index: CMakeLists.txt
===
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -239,6 +239,9 @@
   STRING "Define suffix of library directory name for clang runtime (32/64)")
 set(CLANG_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${CLANG_LIBDIR_SUFFIX})
 
+set(CLANG_GOLD_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}" CACHE
+  STRING "Define suffix of library directory name that contains LLVMgold.so (32/64)")
+
 set(CLANG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 set(CLANG_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
 
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D23753: [AVX512] Arguments to _mm512_[mask_]abs_ps|d must have "__" prefix

2016-08-21 Thread Asaf Badouh via cfe-commits
AsafBadouh created this revision.
AsafBadouh added a reviewer: igorb.
AsafBadouh added a subscriber: cfe-commits.
AsafBadouh set the repository for this revision to rL LLVM.

Repository:
  rL LLVM

https://reviews.llvm.org/D23753

Files:
  ../tunkClang/tools/clang/lib/Headers/avx512fintrin.h

Index: ../tunkClang/tools/clang/lib/Headers/avx512fintrin.h
===
--- ../tunkClang/tools/clang/lib/Headers/avx512fintrin.h
+++ ../tunkClang/tools/clang/lib/Headers/avx512fintrin.h
@@ -9557,27 +9557,27 @@
 (e4),(e3),(e2),(e1),(e0))
 
 static __inline__ __m512 __DEFAULT_FN_ATTRS
-_mm512_abs_ps(__m512 A)
+_mm512_abs_ps(__m512 __A)
 {
-  return (__m512)_mm512_and_epi32(_mm512_set1_epi32(0x7FFF),(__m512i)A) ;
+  return (__m512)_mm512_and_epi32(_mm512_set1_epi32(0x7FFF),(__m512i)__A) ;
 }
 
 static __inline__ __m512 __DEFAULT_FN_ATTRS
-_mm512_mask_abs_ps(__m512 W, __mmask16 K, __m512 A)
+_mm512_mask_abs_ps(__m512 __W, __mmask16 __K, __m512 __A)
 {
-  return (__m512)_mm512_mask_and_epi32((__m512i)W, K, 
_mm512_set1_epi32(0x7FFF),(__m512i)A) ;
+  return (__m512)_mm512_mask_and_epi32((__m512i)__W, __K, 
_mm512_set1_epi32(0x7FFF),(__m512i)__A) ;
 }
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_abs_pd(__m512d A)
+_mm512_abs_pd(__m512d __A)
 {
-  return 
(__m512d)_mm512_and_epi64(_mm512_set1_epi64(0x7FFF),(__v8di)A) ;
+  return 
(__m512d)_mm512_and_epi64(_mm512_set1_epi64(0x7FFF),(__v8di)__A) ;
 }
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_mask_abs_pd(__m512d W, __mmask8 K, __m512d A)
+_mm512_mask_abs_pd(__m512d __W, __mmask8 __K, __m512d __A)
 {
-  return (__m512d)_mm512_mask_and_epi64((__v8di)W, K, 
_mm512_set1_epi64(0x7FFF),(__v8di)A);
+  return (__m512d)_mm512_mask_and_epi64((__v8di)__W, __K, 
_mm512_set1_epi64(0x7FFF),(__v8di)__A);
 }
 
 #undef __DEFAULT_FN_ATTRS


Index: ../tunkClang/tools/clang/lib/Headers/avx512fintrin.h
===
--- ../tunkClang/tools/clang/lib/Headers/avx512fintrin.h
+++ ../tunkClang/tools/clang/lib/Headers/avx512fintrin.h
@@ -9557,27 +9557,27 @@
 (e4),(e3),(e2),(e1),(e0))
 
 static __inline__ __m512 __DEFAULT_FN_ATTRS
-_mm512_abs_ps(__m512 A)
+_mm512_abs_ps(__m512 __A)
 {
-  return (__m512)_mm512_and_epi32(_mm512_set1_epi32(0x7FFF),(__m512i)A) ;
+  return (__m512)_mm512_and_epi32(_mm512_set1_epi32(0x7FFF),(__m512i)__A) ;
 }
 
 static __inline__ __m512 __DEFAULT_FN_ATTRS
-_mm512_mask_abs_ps(__m512 W, __mmask16 K, __m512 A)
+_mm512_mask_abs_ps(__m512 __W, __mmask16 __K, __m512 __A)
 {
-  return (__m512)_mm512_mask_and_epi32((__m512i)W, K, _mm512_set1_epi32(0x7FFF),(__m512i)A) ;
+  return (__m512)_mm512_mask_and_epi32((__m512i)__W, __K, _mm512_set1_epi32(0x7FFF),(__m512i)__A) ;
 }
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_abs_pd(__m512d A)
+_mm512_abs_pd(__m512d __A)
 {
-  return (__m512d)_mm512_and_epi64(_mm512_set1_epi64(0x7FFF),(__v8di)A) ;
+  return (__m512d)_mm512_and_epi64(_mm512_set1_epi64(0x7FFF),(__v8di)__A) ;
 }
 
 static __inline__ __m512d __DEFAULT_FN_ATTRS
-_mm512_mask_abs_pd(__m512d W, __mmask8 K, __m512d A)
+_mm512_mask_abs_pd(__m512d __W, __mmask8 __K, __m512d __A)
 {
-  return (__m512d)_mm512_mask_and_epi64((__v8di)W, K, _mm512_set1_epi64(0x7FFF),(__v8di)A);
+  return (__m512d)_mm512_mask_and_epi64((__v8di)__W, __K, _mm512_set1_epi64(0x7FFF),(__v8di)__A);
 }
 
 #undef __DEFAULT_FN_ATTRS
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D23752: cmake: Supporting overriding runtime libdir via CLANG_LIBDIR_SUFFIX

2016-08-21 Thread Michał Górny via cfe-commits
mgorny created this revision.
mgorny added reviewers: chandlerc, chapuni, samsonov.
mgorny added a subscriber: cfe-commits.

Make it possible to override the value of CLANG_LIBDIR_SUFFIX, and use it 
uniformly to control install location of runtimes (i.e. lib/clang), therefore 
supporting sharing a common runtime between multiple multilib variants.

Previously, CLANG_LIBDIR_SUFFIX was pinned to LLVM_LIBDIR_SUFFIX and used only 
to define runtime path in driver code. This patch extends its use to building 
and installing the runtime (the former is needed for tests to work correctly).

The goal is to support install layout alike "LLVM_LIBDIR_SUFFIX=64 
CLANG_LIBDIR_SUFFIX=''" -- where all shared libraries would be installed into 
ABI-specific /usr/lib64, while runtime (that is common between multilib ABIs) 
would be installed into /usr/lib.

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

https://reviews.llvm.org/D23752

Files:
  CMakeLists.txt
  lib/Headers/CMakeLists.txt
  runtime/CMakeLists.txt

Index: runtime/CMakeLists.txt
===
--- runtime/CMakeLists.txt
+++ runtime/CMakeLists.txt
@@ -71,9 +71,9 @@
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
-DLLVM_CONFIG_PATH=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-config
-DLLVM_LIT_ARGS=${LLVM_LIT_ARGS}
-   
-DCOMPILER_RT_OUTPUT_DIR=${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}
+   
-DCOMPILER_RT_OUTPUT_DIR=${CLANG_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}
-DCOMPILER_RT_EXEC_OUTPUT_DIR=${LLVM_RUNTIME_OUTPUT_INTDIR}
-   
-DCOMPILER_RT_INSTALL_PATH:STRING=lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}
+   
-DCOMPILER_RT_INSTALL_PATH:STRING=lib${CLANG_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}
-DCOMPILER_RT_INCLUDE_TESTS=${LLVM_INCLUDE_TESTS}
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
-DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX}
Index: lib/Headers/CMakeLists.txt
===
--- lib/Headers/CMakeLists.txt
+++ lib/Headers/CMakeLists.txt
@@ -88,7 +88,7 @@
   xtestintrin.h
   )
 
-set(output_dir ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}/include)
+set(output_dir ${CLANG_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}/include)
 
 # Generate arm_neon.h
 clang_tablegen(arm_neon.h -gen-arm-neon
@@ -118,7 +118,7 @@
   FILES ${files} ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h
   COMPONENT clang-headers
   PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
-  DESTINATION lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
+  DESTINATION lib${CLANG_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
 
 if (NOT CMAKE_CONFIGURATION_TYPES) # don't add this for IDE's.
   add_custom_target(install-clang-headers
Index: CMakeLists.txt
===
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -235,8 +235,9 @@
 set(CLANG_VENDOR_UTI "org.llvm.clang" CACHE STRING
   "Vendor-specific uti.")
 
-# The libdir suffix must exactly match whatever LLVM's configuration used.
-set(CLANG_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}")
+set(CLANG_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}" CACHE
+  STRING "Define suffix of library directory name for clang runtime (32/64)")
+set(CLANG_LIBRARY_OUTPUT_INTDIR 
${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${CLANG_LIBDIR_SUFFIX})
 
 set(CLANG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 set(CLANG_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})


Index: runtime/CMakeLists.txt
===
--- runtime/CMakeLists.txt
+++ runtime/CMakeLists.txt
@@ -71,9 +71,9 @@
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
-DLLVM_CONFIG_PATH=${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-config
-DLLVM_LIT_ARGS=${LLVM_LIT_ARGS}
-   -DCOMPILER_RT_OUTPUT_DIR=${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}
+   -DCOMPILER_RT_OUTPUT_DIR=${CLANG_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}
-DCOMPILER_RT_EXEC_OUTPUT_DIR=${LLVM_RUNTIME_OUTPUT_INTDIR}
-   -DCOMPILER_RT_INSTALL_PATH:STRING=lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}
+   -DCOMPILER_RT_INSTALL_PATH:STRING=lib${CLANG_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}
-DCOMPILER_RT_INCLUDE_TESTS=${LLVM_INCLUDE_TESTS}
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
-DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX}
Index: lib/Headers/CMakeLists.txt
===
--- lib/Headers/CMakeLists.txt
+++ lib/Headers/CMakeLists.txt
@@ -88,7 +88,7 @@
   xtestintrin.h
   )
 
-set(output_dir ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}/include)
+set(output_dir ${CLANG_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}/include)
 
 # Generate arm_neon.h
 clang_tablegen(arm_neon.h