Re: [PATCH] D78853: [Analysis] Fix null pointer dereference warnings [1/n]

2020-04-29 Thread Mandeep Singh Grang via cfe-commits
My previous email details why we are doing this:
http://lists.llvm.org/pipermail/llvm-dev/2020-April/141167.html
Basically, we ran the PREfast static analysis tool on LLVM/Clang and it
reported a lot of warnings. I guess some of them are false positives after
all.

As David suggests that maybe I should validate these warnings by also
running the clang static analyzer. There are a lot of other warnings
reported by the tool. Here is the full list:
https://docs.google.com/spreadsheets/d/1h_3tHxsgBampxb7PXoB5lgwiBSpTty9RLe5maIQxnTk/edit?usp=sharing.
If the community is interested in getting those fixed I can upstream
patches.

--Mandeep

On Tue, Apr 28, 2020 at 10:44 AM Aaron Puchert via Phabricator <
revi...@reviews.llvm.org> wrote:

> aaronpuchert added a comment.
>
> Could you explain why we are doing this? Clang has its own static analyzer
> , which can find null dereferences <
> https://clang.llvm.org/docs/analyzer/checkers.html#core-nulldereference-c-c-objc>
> as well but also tracks constraints to prevent false positives like this.
>
> There is a page somewhere with current analysis runs on LLVM, although I
> can't find it right now.
>
>
>
> 
> Comment at: clang/lib/Analysis/ThreadSafety.cpp:1938-1940
> +// The default value for the argument VD to the current function is
> +// nullptr. So we assert that VD is non null because we deref VD here.
> +assert(VD && "!VD");
> 
> dblaikie wrote:
> > Doesn't seem like the most informative comment or assertion string - the
> invariant  "isScopedVar implies VD is non-null" is established earlier in
> the function, where isScopedVar only becomes true under the "VD is
> non-null" condition at 1809.
> >
> > Would it be better to improve whatever static analysis you're using to
> be able to track that correlation, rather than adding lots of extra
> assertions to LLVM? (can the Clang Static Analyzer understand this code and
> avoid warning on it, for instance - that'd be a good existence proof for
> such "smarts" being reasonably possible for static analysis)
> I haven't tested it, but the Clang static analyzer shouldn't complain
> here. It explores different code paths and collects constraints along them.
> All code paths including the assignment `isScopedVar = true` should have
> `VD` being non-null as constraint, because that's the condition to get
> there.
>
> I know that solving constraints can be hard in general, but here the
> constraint is exactly what we need to disprove null references from
> happening.
>
>
> CHANGES SINCE LAST ACTION
>   https://reviews.llvm.org/D78853/new/
>
> https://reviews.llvm.org/D78853
>
>
>
>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r361664 - [Analyzer] Checker for non-determinism caused by iteration of unordered container of pointers

2019-05-24 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Fri May 24 12:24:08 2019
New Revision: 361664

URL: http://llvm.org/viewvc/llvm-project?rev=361664=rev
Log:
[Analyzer] Checker for non-determinism caused by iteration of unordered 
container of pointers

Summary: Added a checker for non-determinism caused by iterating unordered 
containers like std::unordered_set containing pointer elements.

Reviewers: NoQ, george.karpenkov, whisperity, Szelethus, baloghadamsoftware

Reviewed By: Szelethus

Subscribers: mgorny, xazax.hun, baloghadamsoftware, szepet, rnkovacs, 
a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, jdoerfert, Charusso, cfe-commits

Tags: #clang

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

Added:
cfe/trunk/lib/StaticAnalyzer/Checkers/PointerIterationChecker.cpp
cfe/trunk/test/Analysis/ptr-iter.cpp
Modified:
cfe/trunk/docs/analyzer/checkers.rst
cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td
cfe/trunk/lib/StaticAnalyzer/Checkers/CMakeLists.txt
cfe/trunk/test/Analysis/Inputs/system-header-simulator-cxx.h
cfe/trunk/www/analyzer/alpha_checks.html

Modified: cfe/trunk/docs/analyzer/checkers.rst
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/analyzer/checkers.rst?rev=361664=361663=361664=diff
==
--- cfe/trunk/docs/analyzer/checkers.rst (original)
+++ cfe/trunk/docs/analyzer/checkers.rst Fri May 24 12:24:08 2019
@@ -211,8 +211,8 @@ Check for uninitialized values being ret
 .. _cplusplus-checkers:
 
 
-cpluslus
-
+cplusplus
+^
 
 C++ Checkers.
 
@@ -1951,6 +1951,20 @@ Check for out-of-bounds access in string
int y = strlen((char *)); // warn
  }
 
+alpha.nondeterminism.PointerIteration (C++)
+"""
+Check for non-determinism caused by iterating unordered containers of pointers.
+
+.. code-block:: c
+
+ void test() {
+  int a = 1, b = 2;
+  std::unordered_set UnorderedPtrSet = {, };
+
+  for (auto i : UnorderedPtrSet) // warn
+f(i);
+ }
+
 alpha.nondeterminism.PointerSorting (C++)
 "
 Check for non-determinism caused by sorting of pointers.

Modified: cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td?rev=361664=361663=361664=diff
==
--- cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td (original)
+++ cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td Fri May 24 
12:24:08 2019
@@ -1340,6 +1340,10 @@ def UnixAPIPortabilityChecker : Checker<
 
 let ParentPackage = NonDeterminismAlpha in {
 
+def PointerIterationChecker : Checker<"PointerIteration">,
+  HelpText<"Checks for non-determinism caused by iteration of unordered 
containers of pointers">,
+  Documentation;
+
 def PointerSortingChecker : Checker<"PointerSorting">,
   HelpText<"Check for non-determinism caused by sorting of pointers">,
   Documentation;

Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/CMakeLists.txt?rev=361664=361663=361664=diff
==
--- cfe/trunk/lib/StaticAnalyzer/Checkers/CMakeLists.txt (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/CMakeLists.txt Fri May 24 12:24:08 
2019
@@ -75,6 +75,7 @@ add_clang_library(clangStaticAnalyzerChe
   OSObjectCStyleCast.cpp
   PaddingChecker.cpp
   PointerArithChecker.cpp
+  PointerIterationChecker.cpp
   PointerSortingChecker.cpp
   PointerSubChecker.cpp
   PthreadLockChecker.cpp

Added: cfe/trunk/lib/StaticAnalyzer/Checkers/PointerIterationChecker.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/PointerIterationChecker.cpp?rev=361664=auto
==
--- cfe/trunk/lib/StaticAnalyzer/Checkers/PointerIterationChecker.cpp (added)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/PointerIterationChecker.cpp Fri May 
24 12:24:08 2019
@@ -0,0 +1,100 @@
+//== PointerIterationChecker.cpp --- -*- C++ 
-*--=//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===--===//
+//
+// This file defines PointerIterationChecker which checks for non-determinism
+// caused due to iteration of unordered containers of pointer elements.
+//
+//===--===//
+
+#include "clang/ASTMatchers/ASTMatchFinder.h"
+#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
+#include "clang/StaticAnalyzer/Core/Checker.h"

r359932 - [COFF, ARM64] Fix ABI implementation of struct returns

2019-05-03 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Fri May  3 14:12:24 2019
New Revision: 359932

URL: http://llvm.org/viewvc/llvm-project?rev=359932=rev
Log:
[COFF, ARM64] Fix ABI implementation of struct returns

Summary:
Related llvm patch: D60348.
Patch co-authored by Sanjin Sijaric.

Reviewers: rnk, efriedma, TomTan, ssijaric, ostannard

Reviewed By: efriedma

Subscribers: dmajor, richard.townsend.arm, ostannard, javed.absar, 
kristof.beyls, cfe-commits

Tags: #clang

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

Modified:
cfe/trunk/include/clang/AST/DeclCXX.h
cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h
cfe/trunk/lib/CodeGen/CGCall.cpp
cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp
cfe/trunk/lib/Sema/SemaDeclCXX.cpp
cfe/trunk/test/CodeGen/arm64-microsoft-arguments.cpp
cfe/trunk/test/CodeGenCXX/microsoft-abi-sret-and-byval.cpp

Modified: cfe/trunk/include/clang/AST/DeclCXX.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclCXX.h?rev=359932=359931=359932=diff
==
--- cfe/trunk/include/clang/AST/DeclCXX.h (original)
+++ cfe/trunk/include/clang/AST/DeclCXX.h Fri May  3 14:12:24 2019
@@ -1325,6 +1325,14 @@ public:
   /// \note This does NOT include a check for union-ness.
   bool isEmpty() const { return data().Empty; }
 
+  bool hasPrivateFields() const {
+return data().HasPrivateFields;
+  }
+
+  bool hasProtectedFields() const {
+return data().HasProtectedFields;
+  }
+
   /// Determine whether this class has direct non-static data members.
   bool hasDirectFields() const {
 auto  = data();

Modified: cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h?rev=359932=359931=359932=diff
==
--- cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h (original)
+++ cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h Fri May  3 14:12:24 2019
@@ -95,7 +95,6 @@ private:
   bool InReg : 1;   // isDirect() || isExtend() || isIndirect()
   bool CanBeFlattened: 1;   // isDirect()
   bool SignExt : 1; // isExtend()
-  bool SuppressSRet : 1;// isIndirect()
 
   bool canHavePaddingType() const {
 return isDirect() || isExtend() || isIndirect() || isExpand();
@@ -111,14 +110,13 @@ private:
   }
 
   ABIArgInfo(Kind K)
-  : TheKind(K), PaddingInReg(false), InReg(false), SuppressSRet(false) {
+  : TheKind(K), PaddingInReg(false), InReg(false) {
   }
 
 public:
   ABIArgInfo()
   : TypeData(nullptr), PaddingType(nullptr), DirectOffset(0),
-TheKind(Direct), PaddingInReg(false), InReg(false),
-SuppressSRet(false) {}
+TheKind(Direct), PaddingInReg(false), InReg(false) {}
 
   static ABIArgInfo getDirect(llvm::Type *T = nullptr, unsigned Offset = 0,
   llvm::Type *Padding = nullptr,
@@ -407,16 +405,6 @@ public:
 CanBeFlattened = Flatten;
   }
 
-  bool getSuppressSRet() const {
-assert(isIndirect() && "Invalid kind!");
-return SuppressSRet;
-  }
-
-  void setSuppressSRet(bool Suppress) {
-assert(isIndirect() && "Invalid kind!");
-SuppressSRet = Suppress;
-  }
-
   void dump() const;
 };
 

Modified: cfe/trunk/lib/CodeGen/CGCall.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCall.cpp?rev=359932=359931=359932=diff
==
--- cfe/trunk/lib/CodeGen/CGCall.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGCall.cpp Fri May  3 14:12:24 2019
@@ -1999,8 +1999,7 @@ void CodeGenModule::ConstructAttributeLi
   // Attach attributes to sret.
   if (IRFunctionArgs.hasSRetArg()) {
 llvm::AttrBuilder SRETAttrs;
-if (!RetAI.getSuppressSRet())
-  SRETAttrs.addAttribute(llvm::Attribute::StructRet);
+SRETAttrs.addAttribute(llvm::Attribute::StructRet);
 hasUsedSRet = true;
 if (RetAI.getInReg())
   SRETAttrs.addAttribute(llvm::Attribute::InReg);

Modified: cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp?rev=359932=359931=359932=diff
==
--- cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp (original)
+++ cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp Fri May  3 14:12:24 2019
@@ -1051,33 +1051,55 @@ bool MicrosoftCXXABI::hasMostDerivedRetu
   return isDeletingDtor(GD);
 }
 
+static bool IsSizeGreaterThan128(const CXXRecordDecl *RD) {
+  return RD->getASTContext().getTypeSize(RD->getTypeForDecl()) > 128;
+}
+
+static bool hasMicrosoftABIRestrictions(const CXXRecordDecl *RD) {
+  // For AArch64, we use the C++14 definition of an aggregate, so we also
+  // check for:
+  //   No private or protected non static data members.
+  //   No base classes
+  //   No virtual functions
+  // Additionally, we need to ensure that there is 

r356088 - [Analyzer] Clean up test/Analysis/ptr-sort.cpp

2019-03-13 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Wed Mar 13 12:21:11 2019
New Revision: 356088

URL: http://llvm.org/viewvc/llvm-project?rev=356088=rev
Log:
[Analyzer] Clean up test/Analysis/ptr-sort.cpp

Modified:
cfe/trunk/test/Analysis/ptr-sort.cpp

Modified: cfe/trunk/test/Analysis/ptr-sort.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/ptr-sort.cpp?rev=356088=356087=356088=diff
==
--- cfe/trunk/test/Analysis/ptr-sort.cpp (original)
+++ cfe/trunk/test/Analysis/ptr-sort.cpp Wed Mar 13 12:21:11 2019
@@ -1,12 +1,13 @@
-// RUN: %clang_analyze_cc1 
-analyzer-checker=core,alpha.nondeterminism.PointerSorting %s 
-analyzer-output=text -verify
+// RUN: %clang_analyze_cc1 %s -analyzer-output=text -verify \
+// RUN: -analyzer-checker=core,alpha.nondeterminism.PointerSorting
 
 #include "Inputs/system-header-simulator-cxx.h"
 
-bool f (int x) { return true; }
-bool g (int *x) { return true; }
+bool f(int x) { return true; }
+bool g(int *x) { return true; }
 
 void PointerSorting() {
-  int a = 1, b = 2, c = 3;
+  int a = 1, b = 2;
   std::vector V1 = {a, b};
   std::vector V2 = {, };
 


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


r356086 - [Analyzer] Update the LLVM license in PointerSortingChecker.cpp

2019-03-13 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Wed Mar 13 12:09:48 2019
New Revision: 356086

URL: http://llvm.org/viewvc/llvm-project?rev=356086=rev
Log:
[Analyzer] Update the LLVM license in PointerSortingChecker.cpp

Modified:
cfe/trunk/lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp

Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp?rev=356086=356085=356086=diff
==
--- cfe/trunk/lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp Wed Mar 13 
12:09:48 2019
@@ -1,9 +1,8 @@
-//=== PointerSortingChecker.cpp - Pointer sorting checker --*- C++ 
-*--===//
+//== PointerSortingChecker.cpp - -*- C++ 
-*--=//
 //
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 //
 
//===--===//
 //


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


r355726 - [docs] Fix checkers.rst doc for PointerSorting checker

2019-03-08 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Fri Mar  8 12:35:25 2019
New Revision: 355726

URL: http://llvm.org/viewvc/llvm-project?rev=355726=rev
Log:
[docs] Fix checkers.rst doc for PointerSorting checker

Modified:
cfe/trunk/docs/analyzer/checkers.rst

Modified: cfe/trunk/docs/analyzer/checkers.rst
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/analyzer/checkers.rst?rev=355726=355725=355726=diff
==
--- cfe/trunk/docs/analyzer/checkers.rst (original)
+++ cfe/trunk/docs/analyzer/checkers.rst Fri Mar  8 12:35:25 2019
@@ -1944,7 +1944,7 @@ Check for out-of-bounds access in string
  }
 
 alpha.nondeterminism.PointerSorting (C++)
-"
+"
 Check for non-determinism caused by sorting of pointers.
 
 .. code-block:: c


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


r355720 - [Analyzer] Checker for non-determinism caused by sorting of pointer-like elements

2019-03-08 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Fri Mar  8 12:13:53 2019
New Revision: 355720

URL: http://llvm.org/viewvc/llvm-project?rev=355720=rev
Log:
[Analyzer] Checker for non-determinism caused by sorting of pointer-like 
elements

Summary:
Added a new category of checkers for non-determinism. Added a checker for 
non-determinism
caused due to sorting containers with pointer-like elements.

Reviewers: NoQ, george.karpenkov, whisperity, Szelethus

Reviewed By: NoQ, Szelethus

Subscribers: Charusso, baloghadamsoftware, jdoerfert, donat.nagy, dkrupp, 
martong, dblaikie, MTC, Szelethus, mgorny, xazax.hun, szepet, rnkovacs, 
a.sidorin, mikhail.ramalho, cfe-commits

Tags: #clang

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

Added:
cfe/trunk/lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp
cfe/trunk/test/Analysis/ptr-sort.cpp
Modified:
cfe/trunk/docs/analyzer/checkers.rst
cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td
cfe/trunk/lib/StaticAnalyzer/Checkers/CMakeLists.txt
cfe/trunk/test/Analysis/Inputs/system-header-simulator-cxx.h
cfe/trunk/www/analyzer/alpha_checks.html

Modified: cfe/trunk/docs/analyzer/checkers.rst
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/analyzer/checkers.rst?rev=355720=355719=355720=diff
==
--- cfe/trunk/docs/analyzer/checkers.rst (original)
+++ cfe/trunk/docs/analyzer/checkers.rst Fri Mar  8 12:13:53 2019
@@ -1943,6 +1943,18 @@ Check for out-of-bounds access in string
int y = strlen((char *)); // warn
  }
 
+alpha.nondeterminism.PointerSorting (C++)
+"
+Check for non-determinism caused by sorting of pointers.
+
+.. code-block:: c
+
+ void test() {
+  int a = 1, b = 2;
+  std::vector V = {, };
+  std::sort(V.begin(), V.end()); // warn
+ }
+
 
 Debug Checkers
 ---

Modified: cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td?rev=355720=355719=355720=diff
==
--- cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td (original)
+++ cfe/trunk/include/clang/StaticAnalyzer/Checkers/Checkers.td Fri Mar  8 
12:13:53 2019
@@ -94,6 +94,8 @@ def Debug : Package<"debug">;
 
 def CloneDetectionAlpha : Package<"clone">, ParentPackage;
 
+def NonDeterminismAlpha : Package<"nondeterminism">, ParentPackage;
+
 
//===--===//
 // Core Checkers.
 
//===--===//
@@ -1043,3 +1045,15 @@ def UnixAPIPortabilityChecker : Checker<
   Documentation;
 
 } // end optin.portability
+
+//===--===//
+// NonDeterminism checkers.
+//===--===//
+
+let ParentPackage = NonDeterminismAlpha in {
+
+def PointerSortingChecker : Checker<"PointerSorting">,
+  HelpText<"Check for non-determinism caused by sorting of pointers">,
+  Documentation;
+
+} // end alpha.nondeterminism

Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/CMakeLists.txt?rev=355720=355719=355720=diff
==
--- cfe/trunk/lib/StaticAnalyzer/Checkers/CMakeLists.txt (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/CMakeLists.txt Fri Mar  8 12:13:53 
2019
@@ -75,6 +75,7 @@ add_clang_library(clangStaticAnalyzerChe
   OSObjectCStyleCast.cpp
   PaddingChecker.cpp
   PointerArithChecker.cpp
+  PointerSortingChecker.cpp
   PointerSubChecker.cpp
   PthreadLockChecker.cpp
   RetainCountChecker/RetainCountChecker.cpp

Added: cfe/trunk/lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp?rev=355720=auto
==
--- cfe/trunk/lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp (added)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/PointerSortingChecker.cpp Fri Mar  8 
12:13:53 2019
@@ -0,0 +1,114 @@
+//=== PointerSortingChecker.cpp - Pointer sorting checker --*- C++ 
-*--===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+//
+// This file defines PointerSortingChecker which checks for non-determinism
+// caused due to sorting containers with pointer-like elements.
+//
+//===--===//
+
+#include "clang/ASTMatchers/ASTMatchFinder.h"

r354608 - [test] Fix typo: 's/ ot / to /' [NFC]

2019-02-21 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Thu Feb 21 11:11:15 2019
New Revision: 354608

URL: http://llvm.org/viewvc/llvm-project?rev=354608=rev
Log:
[test] Fix typo: 's/ ot / to /' [NFC]

Modified:
cfe/trunk/test/CodeGenCXX/cxx11-special-members.cpp

Modified: cfe/trunk/test/CodeGenCXX/cxx11-special-members.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/cxx11-special-members.cpp?rev=354608=354607=354608=diff
==
--- cfe/trunk/test/CodeGenCXX/cxx11-special-members.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/cxx11-special-members.cpp Thu Feb 21 11:11:15 2019
@@ -40,7 +40,7 @@ void f3() {
   D b;
 }
 // Trivial default ctor, might or might not be defined, but we must not expect
-// someone else ot define it.
+// someone else to define it.
 // CHECK-NOT: declare {{.*}} @_ZN1CILi0EEC1Ev
 // CHECK: define {{.*}} @_ZN1DC1Ev
 


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


r351573 - [clang] Change to range-based invocation of llvm::sort

2019-01-18 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Fri Jan 18 10:45:26 2019
New Revision: 351573

URL: http://llvm.org/viewvc/llvm-project?rev=351573=rev
Log:
[clang] Change to range-based invocation of llvm::sort

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

Modified: cfe/trunk/lib/Format/Format.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=351573=351572=351573=diff
==
--- cfe/trunk/lib/Format/Format.cpp (original)
+++ cfe/trunk/lib/Format/Format.cpp Fri Jan 18 10:45:26 2019
@@ -1868,7 +1868,7 @@ static void sortJavaImports(const Format
 JavaImportGroups.push_back(
 findJavaImportGroup(Style, Imports[i].Identifier));
   }
-  llvm::sort(Indices.begin(), Indices.end(), [&](unsigned LHSI, unsigned RHSI) 
{
+  llvm::sort(Indices, [&](unsigned LHSI, unsigned RHSI) {
 // Negating IsStatic to push static imports above non-static imports.
 return std::make_tuple(!Imports[LHSI].IsStatic, JavaImportGroups[LHSI],
Imports[LHSI].Identifier) <


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


r351147 - [COFF, ARM64] Add __byteswap intrinsics

2019-01-14 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Jan 14 17:26:26 2019
New Revision: 351147

URL: http://llvm.org/viewvc/llvm-project?rev=351147=rev
Log:
[COFF, ARM64] Add __byteswap intrinsics

Reviewers: rnk, efriedma, ssijaric, TomTan, haripul

Reviewed By: efriedma

Subscribers: javed.absar, cfe-commits, kristof.beyls

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

Modified:
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/test/Headers/ms-arm64-intrin.cpp

Modified: cfe/trunk/lib/Headers/intrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/intrin.h?rev=351147=351146=351147=diff
==
--- cfe/trunk/lib/Headers/intrin.h (original)
+++ cfe/trunk/lib/Headers/intrin.h Mon Jan 14 17:26:26 2019
@@ -566,6 +566,16 @@ unsigned __int64 __getReg(int);
 long _InterlockedAdd(long volatile *Addend, long Value);
 int _ReadStatusReg(int);
 void _WriteStatusReg(int, int);
+
+static inline unsigned short _byteswap_ushort (unsigned short val) {
+  return __builtin_bswap16(val);
+}
+static inline unsigned long _byteswap_ulong (unsigned long val) {
+  return __builtin_bswap32(val);
+}
+static inline unsigned __int64 _byteswap_uint64 (unsigned __int64 val) {
+  return __builtin_bswap64(val);
+}
 #endif
 
 
/**\

Modified: cfe/trunk/test/Headers/ms-arm64-intrin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/ms-arm64-intrin.cpp?rev=351147=351146=351147=diff
==
--- cfe/trunk/test/Headers/ms-arm64-intrin.cpp (original)
+++ cfe/trunk/test/Headers/ms-arm64-intrin.cpp Mon Jan 14 17:26:26 2019
@@ -1,13 +1,29 @@
-// RUN: %clang_cc1 -triple arm64-windows \
+// REQUIRES: aarch64-registered-target
+
+// RUN: %clang_cc1 -triple arm64-windows -O1 \
 // RUN: -fms-compatibility -fms-compatibility-version=17.00 \
 // RUN: -ffreestanding -fsyntax-only -Werror \
-// RUN: -isystem %S/Inputs/include %s -S -o - 2>&1 | FileCheck %s
-
-// REQUIRES: aarch64-registered-target
+// RUN: -isystem %S/Inputs/include %s -S -o - -emit-llvm 2>&1 \
+// RUN: | FileCheck %s
 
 #include 
 
-void f() {
-// CHECK: nop
+void check_nop() {
+// CHECK: "nop"
   __nop();
 }
+
+unsigned short check_byteswap_ushort(unsigned short val) {
+// CHECK: call i16 @llvm.bswap.i16(i16 %val)
+  return _byteswap_ushort(val);
+}
+
+unsigned long check_byteswap_ulong(unsigned long val) {
+// CHECK: call i32 @llvm.bswap.i32(i32 %val)
+  return _byteswap_ulong(val);
+}
+
+unsigned __int64 check_byteswap_uint64(unsigned __int64 val) {
+// CHECK: call i64 @llvm.bswap.i64(i64 %val)
+  return _byteswap_uint64(val);
+}


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


r351137 - [Sema] Change std::sort to llvm::sort

2019-01-14 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Jan 14 15:45:58 2019
New Revision: 351137

URL: http://llvm.org/viewvc/llvm-project?rev=351137=rev
Log:
[Sema] Change std::sort to llvm::sort

Modified:
cfe/trunk/lib/Sema/SemaChecking.cpp

Modified: cfe/trunk/lib/Sema/SemaChecking.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaChecking.cpp?rev=351137=351136=351137=diff
==
--- cfe/trunk/lib/Sema/SemaChecking.cpp (original)
+++ cfe/trunk/lib/Sema/SemaChecking.cpp Mon Jan 14 15:45:58 2019
@@ -2610,8 +2610,8 @@ bool Sema::CheckHexagonBuiltinCpu(unsign
 return LHS.BuiltinID < RHS.BuiltinID;
   };
   static const bool SortOnce =
-  (std::sort(std::begin(ValidCPU), std::end(ValidCPU), SortCmp),
-   std::sort(std::begin(ValidHVX), std::end(ValidHVX), SortCmp), true);
+  (llvm::sort(ValidCPU, SortCmp),
+   llvm::sort(ValidHVX, SortCmp), true);
   (void)SortOnce;
   auto LowerBoundCmp = [](const BuiltinAndString , unsigned BuiltinID) {
 return BI.BuiltinID < BuiltinID;
@@ -2860,7 +2860,7 @@ bool Sema::CheckHexagonBuiltinArgument(u
   // Use a dynamically initialized static to sort the table exactly once on
   // first run.
   static const bool SortOnce =
-  (std::sort(std::begin(Infos), std::end(Infos),
+  (llvm::sort(Infos,
  [](const BuiltinInfo , const BuiltinInfo ) {
return LHS.BuiltinID < RHS.BuiltinID;
  }),


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


r351135 - [COFF, ARM64] Add __nop intrinsic

2019-01-14 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Jan 14 15:26:01 2019
New Revision: 351135

URL: http://llvm.org/viewvc/llvm-project?rev=351135=rev
Log:
[COFF, ARM64] Add __nop intrinsic

Reviewers: rnk, efriedma, TomTan, haripul, ssijaric

Reviewed By: rnk, efriedma

Subscribers: javed.absar, kristof.beyls, cfe-commits

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

Added:
cfe/trunk/test/Headers/ms-arm64-intrin.cpp
Modified:
cfe/trunk/lib/Headers/intrin.h

Modified: cfe/trunk/lib/Headers/intrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/intrin.h?rev=351135=351134=351135=diff
==
--- cfe/trunk/lib/Headers/intrin.h (original)
+++ cfe/trunk/lib/Headers/intrin.h Mon Jan 14 15:26:01 2019
@@ -549,6 +549,9 @@ static __inline__ void __DEFAULT_FN_ATTR
 __halt(void) {
   __asm__ volatile ("hlt");
 }
+#endif
+
+#if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__)
 static __inline__ void __DEFAULT_FN_ATTRS
 __nop(void) {
   __asm__ volatile ("nop");

Added: cfe/trunk/test/Headers/ms-arm64-intrin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/ms-arm64-intrin.cpp?rev=351135=auto
==
--- cfe/trunk/test/Headers/ms-arm64-intrin.cpp (added)
+++ cfe/trunk/test/Headers/ms-arm64-intrin.cpp Mon Jan 14 15:26:01 2019
@@ -0,0 +1,13 @@
+// RUN: %clang_cc1 -triple arm64-windows \
+// RUN: -fms-compatibility -fms-compatibility-version=17.00 \
+// RUN: -ffreestanding -fsyntax-only -Werror \
+// RUN: -isystem %S/Inputs/include %s -S -o - 2>&1 | FileCheck %s
+
+// REQUIRES: aarch64-registered-target
+
+#include 
+
+void f() {
+// CHECK: nop
+  __nop();
+}


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


r348402 - Revert "[RISCV] Mark unit tests as "requires: riscv-registered-target""

2018-12-05 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Wed Dec  5 11:19:38 2018
New Revision: 348402

URL: http://llvm.org/viewvc/llvm-project?rev=348402=rev
Log:
Revert "[RISCV] Mark unit tests as "requires: riscv-registered-target""

This reverts commit 8908dd12e7bbfc74e264233e900206ad31e285f0.

Modified:
cfe/trunk/test/Driver/riscv-abi.c
cfe/trunk/test/Driver/riscv-arch.c
cfe/trunk/test/Driver/riscv-features.c
cfe/trunk/test/Driver/riscv-gnutools.c
cfe/trunk/test/Driver/riscv32-toolchain.c
cfe/trunk/test/Driver/riscv64-toolchain.c

Modified: cfe/trunk/test/Driver/riscv-abi.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv-abi.c?rev=348402=348401=348402=diff
==
--- cfe/trunk/test/Driver/riscv-abi.c (original)
+++ cfe/trunk/test/Driver/riscv-abi.c Wed Dec  5 11:19:38 2018
@@ -1,5 +1,3 @@
-// REQUIRES: riscv-registered-target
-
 // RUN: %clang -target riscv32-unknown-elf %s -### -o %t.o 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-ILP32 %s
 // RUN: %clang -target riscv32-unknown-elf %s -### -o %t.o -mabi=ilp32 2>&1 \

Modified: cfe/trunk/test/Driver/riscv-arch.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv-arch.c?rev=348402=348401=348402=diff
==
--- cfe/trunk/test/Driver/riscv-arch.c (original)
+++ cfe/trunk/test/Driver/riscv-arch.c Wed Dec  5 11:19:38 2018
@@ -1,5 +1,3 @@
-// REQUIRES: riscv-registered-target
-
 // RUN: %clang -target riscv32-unknown-elf -march=rv32i -### %s \
 // RUN: -fsyntax-only 2>&1 | FileCheck %s
 // RUN: %clang -target riscv32-unknown-elf -march=rv32im -### %s \

Modified: cfe/trunk/test/Driver/riscv-features.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv-features.c?rev=348402=348401=348402=diff
==
--- cfe/trunk/test/Driver/riscv-features.c (original)
+++ cfe/trunk/test/Driver/riscv-features.c Wed Dec  5 11:19:38 2018
@@ -1,5 +1,3 @@
-// REQUIRES: riscv-registered-target
-
 // RUN: %clang -target riscv32-unknown-elf -### %s -fsyntax-only 2>&1 | 
FileCheck %s
 // RUN: %clang -target riscv64-unknown-elf -### %s -fsyntax-only 2>&1 | 
FileCheck %s
 

Modified: cfe/trunk/test/Driver/riscv-gnutools.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv-gnutools.c?rev=348402=348401=348402=diff
==
--- cfe/trunk/test/Driver/riscv-gnutools.c (original)
+++ cfe/trunk/test/Driver/riscv-gnutools.c Wed Dec  5 11:19:38 2018
@@ -1,5 +1,3 @@
-// REQUIRES: riscv-registered-target
-
 // Check gnutools are invoked with propagated values for -mabi and -march.
 
 // RUN: %clang -target riscv32 -fno-integrated-as %s -###  -c \

Modified: cfe/trunk/test/Driver/riscv32-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv32-toolchain.c?rev=348402=348401=348402=diff
==
--- cfe/trunk/test/Driver/riscv32-toolchain.c (original)
+++ cfe/trunk/test/Driver/riscv32-toolchain.c Wed Dec  5 11:19:38 2018
@@ -1,5 +1,3 @@
-// REQUIRES: riscv-registered-target
-
 // A basic clang -cc1 command-line, and simple environment check.
 
 // RUN: %clang %s -### -no-canonical-prefixes -target riscv32 2>&1 | FileCheck 
-check-prefix=CC1 %s

Modified: cfe/trunk/test/Driver/riscv64-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv64-toolchain.c?rev=348402=348401=348402=diff
==
--- cfe/trunk/test/Driver/riscv64-toolchain.c (original)
+++ cfe/trunk/test/Driver/riscv64-toolchain.c Wed Dec  5 11:19:38 2018
@@ -1,5 +1,3 @@
-// REQUIRES: riscv-registered-target
-
 // A basic clang -cc1 command-line, and simple environment check.
 
 // RUN: %clang %s -### -no-canonical-prefixes -target riscv64 2>&1 | FileCheck 
-check-prefix=CC1 %s


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


r347720 - [RISCV] Mark unit tests as "requires: riscv-registered-target"

2018-11-27 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Tue Nov 27 14:53:57 2018
New Revision: 347720

URL: http://llvm.org/viewvc/llvm-project?rev=347720=rev
Log:
[RISCV] Mark unit tests as "requires: riscv-registered-target"

Some of these tests break if the RISCV backend has not been built.

Reland D54816.

Modified:
cfe/trunk/test/Driver/riscv-abi.c
cfe/trunk/test/Driver/riscv-arch.c
cfe/trunk/test/Driver/riscv-features.c
cfe/trunk/test/Driver/riscv-gnutools.c
cfe/trunk/test/Driver/riscv32-toolchain.c
cfe/trunk/test/Driver/riscv64-toolchain.c

Modified: cfe/trunk/test/Driver/riscv-abi.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv-abi.c?rev=347720=347719=347720=diff
==
--- cfe/trunk/test/Driver/riscv-abi.c (original)
+++ cfe/trunk/test/Driver/riscv-abi.c Tue Nov 27 14:53:57 2018
@@ -1,3 +1,5 @@
+// REQUIRES: riscv-registered-target
+
 // RUN: %clang -target riscv32-unknown-elf %s -### -o %t.o 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-ILP32 %s
 // RUN: %clang -target riscv32-unknown-elf %s -### -o %t.o -mabi=ilp32 2>&1 \

Modified: cfe/trunk/test/Driver/riscv-arch.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv-arch.c?rev=347720=347719=347720=diff
==
--- cfe/trunk/test/Driver/riscv-arch.c (original)
+++ cfe/trunk/test/Driver/riscv-arch.c Tue Nov 27 14:53:57 2018
@@ -1,3 +1,5 @@
+// REQUIRES: riscv-registered-target
+
 // RUN: %clang -target riscv32-unknown-elf -march=rv32i -### %s \
 // RUN: -fsyntax-only 2>&1 | FileCheck %s
 // RUN: %clang -target riscv32-unknown-elf -march=rv32im -### %s \

Modified: cfe/trunk/test/Driver/riscv-features.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv-features.c?rev=347720=347719=347720=diff
==
--- cfe/trunk/test/Driver/riscv-features.c (original)
+++ cfe/trunk/test/Driver/riscv-features.c Tue Nov 27 14:53:57 2018
@@ -1,3 +1,5 @@
+// REQUIRES: riscv-registered-target
+
 // RUN: %clang -target riscv32-unknown-elf -### %s -fsyntax-only 2>&1 | 
FileCheck %s
 // RUN: %clang -target riscv64-unknown-elf -### %s -fsyntax-only 2>&1 | 
FileCheck %s
 

Modified: cfe/trunk/test/Driver/riscv-gnutools.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv-gnutools.c?rev=347720=347719=347720=diff
==
--- cfe/trunk/test/Driver/riscv-gnutools.c (original)
+++ cfe/trunk/test/Driver/riscv-gnutools.c Tue Nov 27 14:53:57 2018
@@ -1,3 +1,5 @@
+// REQUIRES: riscv-registered-target
+
 // Check gnutools are invoked with propagated values for -mabi and -march.
 
 // RUN: %clang -target riscv32 -fno-integrated-as %s -###  -c \

Modified: cfe/trunk/test/Driver/riscv32-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv32-toolchain.c?rev=347720=347719=347720=diff
==
--- cfe/trunk/test/Driver/riscv32-toolchain.c (original)
+++ cfe/trunk/test/Driver/riscv32-toolchain.c Tue Nov 27 14:53:57 2018
@@ -1,3 +1,5 @@
+// REQUIRES: riscv-registered-target
+
 // A basic clang -cc1 command-line, and simple environment check.
 
 // RUN: %clang %s -### -no-canonical-prefixes -target riscv32 2>&1 | FileCheck 
-check-prefix=CC1 %s

Modified: cfe/trunk/test/Driver/riscv64-toolchain.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/riscv64-toolchain.c?rev=347720=347719=347720=diff
==
--- cfe/trunk/test/Driver/riscv64-toolchain.c (original)
+++ cfe/trunk/test/Driver/riscv64-toolchain.c Tue Nov 27 14:53:57 2018
@@ -1,3 +1,5 @@
+// REQUIRES: riscv-registered-target
+
 // A basic clang -cc1 command-line, and simple environment check.
 
 // RUN: %clang %s -### -no-canonical-prefixes -target riscv64 2>&1 | FileCheck 
-check-prefix=CC1 %s


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


r347689 - Revert "[RISCV] Mark unit tests as "requires: riscv-registered-target""

2018-11-27 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Tue Nov 27 11:13:52 2018
New Revision: 347689

URL: http://llvm.org/viewvc/llvm-project?rev=347689=rev
Log:
Revert "[RISCV] Mark unit tests as "requires: riscv-registered-target""

This reverts commit 1a6a0c9ea2716378d55858c11adf5941608531f8.

Added:
cfe/trunk/test/Driver/riscv-abi.c
  - copied, changed from r347688, cfe/trunk/Driver/riscv-abi.c
cfe/trunk/test/Driver/riscv-arch.c
  - copied, changed from r347688, cfe/trunk/Driver/riscv-arch.c
cfe/trunk/test/Driver/riscv-features.c
  - copied, changed from r347688, cfe/trunk/Driver/riscv-features.c
cfe/trunk/test/Driver/riscv-gnutools.c
  - copied, changed from r347688, cfe/trunk/Driver/riscv-gnutools.c
cfe/trunk/test/Driver/riscv32-toolchain.c
  - copied, changed from r347688, cfe/trunk/Driver/riscv32-toolchain.c
cfe/trunk/test/Driver/riscv64-toolchain.c
  - copied, changed from r347688, cfe/trunk/Driver/riscv64-toolchain.c
Removed:
cfe/trunk/Driver/riscv-abi.c
cfe/trunk/Driver/riscv-arch.c
cfe/trunk/Driver/riscv-features.c
cfe/trunk/Driver/riscv-gnutools.c
cfe/trunk/Driver/riscv32-toolchain.c
cfe/trunk/Driver/riscv64-toolchain.c

Removed: cfe/trunk/Driver/riscv-abi.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/riscv-abi.c?rev=347688=auto
==
--- cfe/trunk/Driver/riscv-abi.c (original)
+++ cfe/trunk/Driver/riscv-abi.c (removed)
@@ -1,49 +0,0 @@
-// REQUIRES: riscv-registered-target
-
-// RUN: %clang -target riscv32-unknown-elf %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK-ILP32 %s
-// RUN: %clang -target riscv32-unknown-elf %s -### -o %t.o -mabi=ilp32 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK-ILP32 %s
-
-// CHECK-ILP32: "-target-abi" "ilp32"
-
-// TODO: ilp32f support.
-// RUN: not %clang -target riscv32-unknown-elf %s -o %t.o -mabi=ilp32f 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK-ILP32F %s
-
-// CHECK-ILP32F: error: unknown target ABI 'ilp32f'
-
-// TODO: ilp32d support.
-// RUN: not %clang -target riscv32-unknown-elf %s -o %t.o -mabi=ilp32d 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK-ILP32D %s
-
-// CHECK-ILP32D: error: unknown target ABI 'ilp32d'
-
-// RUN: not %clang -target riscv32-unknown-elf %s -o %t.o -mabi=lp64 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK-RV32-LP64 %s
-
-// CHECK-RV32-LP64: error: unknown target ABI 'lp64'
-
-// RUN: %clang -target riscv64-unknown-elf %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK-LP64 %s
-// RUN: %clang -target riscv64-unknown-elf %s -### -o %t.o -mabi=lp64 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK-LP64 %s
-
-// CHECK-LP64: "-target-abi" "lp64"
-
-// TODO: lp64f support.
-// RUN: not %clang -target riscv64-unknown-elf %s -o %t.o -mabi=lp64f 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK-LP64F %s
-
-// CHECK-LP64F: error: unknown target ABI 'lp64f'
-
-// TODO: lp64d support.
-// RUN: not %clang -target riscv64-unknown-elf %s -o %t.o -mabi=lp64d 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK-LP64D %s
-
-// CHECK-LP64D: error: unknown target ABI 'lp64d'
-
-// RUN: not %clang -target riscv64-unknown-elf %s -o %t.o -mabi=ilp32 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK-RV64-ILP32 %s
-
-// CHECK-RV64-ILP32: error: unknown target ABI 'ilp32'

Removed: cfe/trunk/Driver/riscv-arch.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/riscv-arch.c?rev=347688=auto
==
--- cfe/trunk/Driver/riscv-arch.c (original)
+++ cfe/trunk/Driver/riscv-arch.c (removed)
@@ -1,319 +0,0 @@
-// REQUIRES: riscv-registered-target
-
-// RUN: %clang -target riscv32-unknown-elf -march=rv32i -### %s \
-// RUN: -fsyntax-only 2>&1 | FileCheck %s
-// RUN: %clang -target riscv32-unknown-elf -march=rv32im -### %s \
-// RUN: -fsyntax-only 2>&1 | FileCheck %s
-// RUN: %clang -target riscv32-unknown-elf -march=rv32ima -### %s \
-// RUN: -fsyntax-only 2>&1 | FileCheck %s
-// RUN: %clang -target riscv32-unknown-elf -march=rv32imaf -### %s \
-// RUN: -fsyntax-only 2>&1 | FileCheck %s
-// RUN: %clang -target riscv32-unknown-elf -march=rv32imafd -### %s \
-// RUN: -fsyntax-only 2>&1 | FileCheck %s
-
-// RUN: %clang -target riscv32-unknown-elf -march=rv32ic -### %s \
-// RUN: -fsyntax-only 2>&1 | FileCheck %s
-// RUN: %clang -target riscv32-unknown-elf -march=rv32imc -### %s \
-// RUN: -fsyntax-only 2>&1 | FileCheck %s
-// RUN: %clang -target riscv32-unknown-elf -march=rv32imac -### %s \
-// RUN: -fsyntax-only 2>&1 | FileCheck %s
-// RUN: %clang -target riscv32-unknown-elf -march=rv32imafc -### %s \
-// RUN: -fsyntax-only 2>&1 | FileCheck %s
-// RUN: %clang -target riscv32-unknown-elf -march=rv32imafdc -### %s \
-// RUN: -fsyntax-only 2>&1 | FileCheck %s
-
-// RUN: %clang -target riscv32-unknown-elf -march=rv32ia -### %s \
-// RUN: -fsyntax-only 2>&1 | FileCheck %s
-// RUN: %clang -target riscv32-unknown-elf 

r347688 - [RISCV] Mark unit tests as "requires: riscv-registered-target"

2018-11-27 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Tue Nov 27 11:13:13 2018
New Revision: 347688

URL: http://llvm.org/viewvc/llvm-project?rev=347688=rev
Log:
[RISCV] Mark unit tests as "requires: riscv-registered-target"

Summary: Some of these tests break if the RISCV backend has not been built.

Reviewers: asb, apazos, sabuasal

Reviewed By: sabuasal

Subscribers: rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, 
shiva0217, jrtc27, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, 
the_o, rkruppe, PkmX, jocewei, cfe-commits

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

Added:
cfe/trunk/Driver/
cfe/trunk/Driver/riscv-abi.c
  - copied, changed from r347685, cfe/trunk/test/Driver/riscv-abi.c
cfe/trunk/Driver/riscv-arch.c
  - copied, changed from r347685, cfe/trunk/test/Driver/riscv-arch.c
cfe/trunk/Driver/riscv-features.c
  - copied, changed from r347685, cfe/trunk/test/Driver/riscv-features.c
cfe/trunk/Driver/riscv-gnutools.c
  - copied, changed from r347685, cfe/trunk/test/Driver/riscv-gnutools.c
cfe/trunk/Driver/riscv32-toolchain.c
  - copied, changed from r347685, cfe/trunk/test/Driver/riscv32-toolchain.c
cfe/trunk/Driver/riscv64-toolchain.c
  - copied, changed from r347685, cfe/trunk/test/Driver/riscv64-toolchain.c
Removed:
cfe/trunk/test/Driver/riscv-abi.c
cfe/trunk/test/Driver/riscv-arch.c
cfe/trunk/test/Driver/riscv-features.c
cfe/trunk/test/Driver/riscv-gnutools.c
cfe/trunk/test/Driver/riscv32-toolchain.c
cfe/trunk/test/Driver/riscv64-toolchain.c

Copied: cfe/trunk/Driver/riscv-abi.c (from r347685, 
cfe/trunk/test/Driver/riscv-abi.c)
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/riscv-abi.c?p2=cfe/trunk/Driver/riscv-abi.c=cfe/trunk/test/Driver/riscv-abi.c=347685=347688=347688=diff
==
--- cfe/trunk/test/Driver/riscv-abi.c (original)
+++ cfe/trunk/Driver/riscv-abi.c Tue Nov 27 11:13:13 2018
@@ -1,3 +1,5 @@
+// REQUIRES: riscv-registered-target
+
 // RUN: %clang -target riscv32-unknown-elf %s -### -o %t.o 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-ILP32 %s
 // RUN: %clang -target riscv32-unknown-elf %s -### -o %t.o -mabi=ilp32 2>&1 \

Copied: cfe/trunk/Driver/riscv-arch.c (from r347685, 
cfe/trunk/test/Driver/riscv-arch.c)
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/riscv-arch.c?p2=cfe/trunk/Driver/riscv-arch.c=cfe/trunk/test/Driver/riscv-arch.c=347685=347688=347688=diff
==
--- cfe/trunk/test/Driver/riscv-arch.c (original)
+++ cfe/trunk/Driver/riscv-arch.c Tue Nov 27 11:13:13 2018
@@ -1,3 +1,5 @@
+// REQUIRES: riscv-registered-target
+
 // RUN: %clang -target riscv32-unknown-elf -march=rv32i -### %s \
 // RUN: -fsyntax-only 2>&1 | FileCheck %s
 // RUN: %clang -target riscv32-unknown-elf -march=rv32im -### %s \

Copied: cfe/trunk/Driver/riscv-features.c (from r347685, 
cfe/trunk/test/Driver/riscv-features.c)
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/riscv-features.c?p2=cfe/trunk/Driver/riscv-features.c=cfe/trunk/test/Driver/riscv-features.c=347685=347688=347688=diff
==
--- cfe/trunk/test/Driver/riscv-features.c (original)
+++ cfe/trunk/Driver/riscv-features.c Tue Nov 27 11:13:13 2018
@@ -1,3 +1,5 @@
+// REQUIRES: riscv-registered-target
+
 // RUN: %clang -target riscv32-unknown-elf -### %s -fsyntax-only 2>&1 | 
FileCheck %s
 // RUN: %clang -target riscv64-unknown-elf -### %s -fsyntax-only 2>&1 | 
FileCheck %s
 

Copied: cfe/trunk/Driver/riscv-gnutools.c (from r347685, 
cfe/trunk/test/Driver/riscv-gnutools.c)
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/riscv-gnutools.c?p2=cfe/trunk/Driver/riscv-gnutools.c=cfe/trunk/test/Driver/riscv-gnutools.c=347685=347688=347688=diff
==
--- cfe/trunk/test/Driver/riscv-gnutools.c (original)
+++ cfe/trunk/Driver/riscv-gnutools.c Tue Nov 27 11:13:13 2018
@@ -1,3 +1,5 @@
+// REQUIRES: riscv-registered-target
+
 // Check gnutools are invoked with propagated values for -mabi and -march.
 
 // RUN: %clang -target riscv32 -fno-integrated-as %s -###  -c \

Copied: cfe/trunk/Driver/riscv32-toolchain.c (from r347685, 
cfe/trunk/test/Driver/riscv32-toolchain.c)
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/riscv32-toolchain.c?p2=cfe/trunk/Driver/riscv32-toolchain.c=cfe/trunk/test/Driver/riscv32-toolchain.c=347685=347688=347688=diff
==
--- cfe/trunk/test/Driver/riscv32-toolchain.c (original)
+++ cfe/trunk/Driver/riscv32-toolchain.c Tue Nov 27 11:13:13 2018
@@ -1,3 +1,5 @@
+// REQUIRES: riscv-registered-target
+
 // A basic clang -cc1 command-line, and simple environment check.
 
 // RUN: %clang %s -### -no-canonical-prefixes -target riscv32 2>&1 | 

r346208 - [COFF, ARM64] Implement InterlockedDecrement*_* builtins

2018-11-05 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Nov  5 21:07:43 2018
New Revision: 346208

URL: http://llvm.org/viewvc/llvm-project?rev=346208=rev
Log:
[COFF, ARM64] Implement InterlockedDecrement*_* builtins

This is eight in a series of patches to move intrinsic definitions out of 
intrin.h.

Differential: https://reviews.llvm.org/D54068

Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/include/clang/Basic/BuiltinsARM.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/test/CodeGen/ms-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=346208=346207=346208=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Mon Nov  5 21:07:43 2018
@@ -192,6 +192,16 @@ TARGET_HEADER_BUILTIN(_InterlockedIncrem
 TARGET_HEADER_BUILTIN(_InterlockedIncrement64_nf,  "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedIncrement64_rel, "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedDecrement16_acq, "ssD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement16_nf,  "ssD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement16_rel, "ssD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement_acq,   "LiLiD*",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement_nf,"LiLiD*",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement_rel,   "LiLiD*",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64_acq, "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64_nf,  "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64_rel, "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+
 TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, 
"")
 TARGET_HEADER_BUILTIN(_ReadStatusReg,  "ii",  "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")

Modified: cfe/trunk/include/clang/Basic/BuiltinsARM.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsARM.def?rev=346208=346207=346208=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsARM.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsARM.def Mon Nov  5 21:07:43 2018
@@ -318,6 +318,16 @@ TARGET_HEADER_BUILTIN(_InterlockedIncrem
 TARGET_HEADER_BUILTIN(_InterlockedIncrement64_nf,  "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedIncrement64_rel, "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedDecrement16_acq, "ssD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement16_nf,  "ssD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement16_rel, "ssD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement_acq,   "LiLiD*",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement_nf,"LiLiD*",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement_rel,   "LiLiD*",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64_acq, "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64_nf,  "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64_rel, "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+
 #undef BUILTIN
 #undef LANGBUILTIN
 #undef TARGET_HEADER_BUILTIN

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=346208=346207=346208=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Mon Nov  5 21:07:43 2018
@@ -285,6 +285,19 @@ static Value *EmitAtomicIncrementValue(C
   return CGF.Builder.CreateAdd(Result, ConstantInt::get(IntTy, 1));
 }
 
+static Value *EmitAtomicDecrementValue(CodeGenFunction , const CallExpr *E,
+AtomicOrdering Ordering = AtomicOrdering::SequentiallyConsistent) {
+  assert(E->getArg(0)->getType()->isPointerType());
+
+  auto *IntTy = CGF.ConvertType(E->getType());
+  auto *Result = CGF.Builder.CreateAtomicRMW(
+   AtomicRMWInst::Sub,
+   CGF.EmitScalarExpr(E->getArg(0)),
+   

r346207 - [COFF, ARM64] Implement InterlockedIncrement*_* builtins

2018-11-05 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Nov  5 21:05:32 2018
New Revision: 346207

URL: http://llvm.org/viewvc/llvm-project?rev=346207=rev
Log:
[COFF, ARM64] Implement InterlockedIncrement*_* builtins

This is seventh in a series of patches to move intrinsic definitions out of 
intrin.h.

Differential: https://reviews.llvm.org/D54067

Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/include/clang/Basic/BuiltinsARM.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/test/CodeGen/ms-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=346207=346206=346207=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Mon Nov  5 21:05:32 2018
@@ -182,6 +182,16 @@ TARGET_HEADER_BUILTIN(_InterlockedAnd64_
 TARGET_HEADER_BUILTIN(_InterlockedAnd64_nf,  "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedAnd64_rel, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedIncrement16_acq, "ssD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement16_nf,  "ssD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement16_rel, "ssD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement_acq,   "LiLiD*",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement_nf,"LiLiD*",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement_rel,   "LiLiD*",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64_acq, "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64_nf,  "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64_rel, "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+
 TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, 
"")
 TARGET_HEADER_BUILTIN(_ReadStatusReg,  "ii",  "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")

Modified: cfe/trunk/include/clang/Basic/BuiltinsARM.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsARM.def?rev=346207=346206=346207=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsARM.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsARM.def Mon Nov  5 21:05:32 2018
@@ -308,6 +308,16 @@ TARGET_HEADER_BUILTIN(_InterlockedAnd64_
 TARGET_HEADER_BUILTIN(_InterlockedAnd64_nf,  "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedAnd64_rel, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedIncrement16_acq, "ssD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement16_nf,  "ssD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement16_rel, "ssD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement_acq,   "LiLiD*",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement_nf,"LiLiD*",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement_rel,   "LiLiD*",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64_acq, "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64_nf,  "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64_rel, "LLiLLiD*", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+
 #undef BUILTIN
 #undef LANGBUILTIN
 #undef TARGET_HEADER_BUILTIN

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=346207=346206=346207=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Mon Nov  5 21:05:32 2018
@@ -272,6 +272,19 @@ Value *EmitAtomicCmpXchgForMSIntrin(Code
   return CGF.Builder.CreateExtractValue(Result, 0);
 }
 
+static Value *EmitAtomicIncrementValue(CodeGenFunction , const CallExpr *E,
+AtomicOrdering Ordering = AtomicOrdering::SequentiallyConsistent) {
+  assert(E->getArg(0)->getType()->isPointerType());
+
+  auto *IntTy = CGF.ConvertType(E->getType());
+  auto *Result = CGF.Builder.CreateAtomicRMW(
+   AtomicRMWInst::Add,
+   CGF.EmitScalarExpr(E->getArg(0)),
+   

r346206 - [COFF, ARM64] Implement InterlockedAnd*_* builtins

2018-11-05 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Nov  5 21:03:13 2018
New Revision: 346206

URL: http://llvm.org/viewvc/llvm-project?rev=346206=rev
Log:
[COFF, ARM64] Implement InterlockedAnd*_* builtins

This is sixth in a series of patches to move intrinsic definitions out of 
intrin.h.

Differential: https://reviews.llvm.org/D54066

Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/include/clang/Basic/BuiltinsARM.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/test/CodeGen/ms-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=346206=346205=346206=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Mon Nov  5 21:03:13 2018
@@ -169,6 +169,19 @@ TARGET_HEADER_BUILTIN(_InterlockedXor64_
 TARGET_HEADER_BUILTIN(_InterlockedXor64_nf,  "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedXor64_rel, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedAnd8_acq,  "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd8_nf,   "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd8_rel,  "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd16_acq, "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd16_nf,  "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd16_rel, "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd_acq,   "LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd_nf,"LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd_rel,   "LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd64_acq, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd64_nf,  "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd64_rel, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+
 TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, 
"")
 TARGET_HEADER_BUILTIN(_ReadStatusReg,  "ii",  "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")

Modified: cfe/trunk/include/clang/Basic/BuiltinsARM.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsARM.def?rev=346206=346205=346206=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsARM.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsARM.def Mon Nov  5 21:03:13 2018
@@ -295,6 +295,19 @@ TARGET_HEADER_BUILTIN(_InterlockedXor64_
 TARGET_HEADER_BUILTIN(_InterlockedXor64_nf,  "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedXor64_rel, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedAnd8_acq,  "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd8_nf,   "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd8_rel,  "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd16_acq, "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd16_nf,  "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd16_rel, "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd_acq,   "LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd_nf,"LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd_rel,   "LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd64_acq, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd64_nf,  "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedAnd64_rel, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+
 #undef BUILTIN
 #undef LANGBUILTIN
 #undef TARGET_HEADER_BUILTIN

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=346206=346205=346206=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Mon Nov  5 

r346205 - [COFF, ARM64] Implement InterlockedXor*_* builtins

2018-11-05 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Nov  5 20:55:20 2018
New Revision: 346205

URL: http://llvm.org/viewvc/llvm-project?rev=346205=rev
Log:
[COFF, ARM64] Implement InterlockedXor*_* builtins

This is fifth in a series of patches to move intrinsic definitions out of 
intrin.h.

Note: This was reviewed and approved in D54065 but somehow that diff was messed
up. Committing this again with the proper diff.

Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/include/clang/Basic/BuiltinsARM.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/test/CodeGen/ms-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=346205=346204=346205=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Mon Nov  5 20:55:20 2018
@@ -156,6 +156,19 @@ TARGET_HEADER_BUILTIN(_InterlockedOr64_a
 TARGET_HEADER_BUILTIN(_InterlockedOr64_nf,  "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedOr64_rel, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedXor8_acq,  "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor8_nf,   "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor8_rel,  "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor16_acq, "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor16_nf,  "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor16_rel, "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor_acq,   "LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor_nf,"LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor_rel,   "LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64_acq, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64_nf,  "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64_rel, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+
 TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, 
"")
 TARGET_HEADER_BUILTIN(_ReadStatusReg,  "ii",  "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")

Modified: cfe/trunk/include/clang/Basic/BuiltinsARM.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsARM.def?rev=346205=346204=346205=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsARM.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsARM.def Mon Nov  5 20:55:20 2018
@@ -282,6 +282,19 @@ TARGET_HEADER_BUILTIN(_InterlockedOr64_a
 TARGET_HEADER_BUILTIN(_InterlockedOr64_nf,  "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedOr64_rel, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedXor8_acq,  "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor8_nf,   "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor8_rel,  "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor16_acq, "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor16_nf,  "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor16_rel, "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor_acq,   "LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor_nf,"LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor_rel,   "LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64_acq, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64_nf,  "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64_rel, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+
 #undef BUILTIN
 #undef LANGBUILTIN
 #undef TARGET_HEADER_BUILTIN

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=346205=346204=346205=diff
==
--- 

r346190 - [COFF, ARM64] Implement InterlockedOr*_* builtins

2018-11-05 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Nov  5 17:11:25 2018
New Revision: 346190

URL: http://llvm.org/viewvc/llvm-project?rev=346190=rev
Log:
[COFF, ARM64] Implement InterlockedOr*_* builtins

This is fourth in a series of patches to move intrinsic definitions out of 
intrin.h.

Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/include/clang/Basic/BuiltinsARM.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/test/CodeGen/ms-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=346190=346189=346190=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Mon Nov  5 17:11:25 2018
@@ -143,6 +143,19 @@ TARGET_HEADER_BUILTIN(_InterlockedCompar
 TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_nf,  "LLiLLiD*LLiLLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_rel, "LLiLLiD*LLiLLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedOr8_acq,  "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr8_nf,   "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr8_rel,  "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr16_acq, "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr16_nf,  "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr16_rel, "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr_acq,   "LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr_nf,"LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr_rel,   "LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64_acq, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64_nf,  "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64_rel, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+
 TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, 
"")
 TARGET_HEADER_BUILTIN(_ReadStatusReg,  "ii",  "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")

Modified: cfe/trunk/include/clang/Basic/BuiltinsARM.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsARM.def?rev=346190=346189=346190=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsARM.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsARM.def Mon Nov  5 17:11:25 2018
@@ -269,6 +269,19 @@ TARGET_HEADER_BUILTIN(_InterlockedCompar
 TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_nf,  "LLiLLiD*LLiLLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_rel, "LLiLLiD*LLiLLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedOr8_acq,  "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr8_nf,   "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr8_rel,  "ccD*c",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr16_acq, "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr16_nf,  "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr16_rel, "ssD*s",   "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr_acq,   "LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr_nf,"LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr_rel,   "LiLiD*Li","nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64_acq, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64_nf,  "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64_rel, "LLiLLiD*LLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+
 #undef BUILTIN
 #undef LANGBUILTIN
 #undef TARGET_HEADER_BUILTIN

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=346190=346189=346190=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Mon Nov  5 17:11:25 2018
@@ 

r346189 - [COFF, ARM64] Implement InterlockedCompareExchange*_* builtins

2018-11-05 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Nov  5 16:36:48 2018
New Revision: 346189

URL: http://llvm.org/viewvc/llvm-project?rev=346189=rev
Log:
[COFF, ARM64] Implement InterlockedCompareExchange*_* builtins

Summary: This is third in a series of patches to move intrinsic definitions out 
of intrin.h.

Reviewers: rnk, efriedma, mstorsjo, TomTan

Reviewed By: efriedma

Subscribers: javed.absar, kristof.beyls, chrib, jfb, kristina, cfe-commits

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

Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/include/clang/Basic/BuiltinsARM.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/test/CodeGen/ms-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=346189=346188=346189=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Mon Nov  5 16:36:48 2018
@@ -130,6 +130,19 @@ TARGET_HEADER_BUILTIN(_InterlockedExchan
 TARGET_HEADER_BUILTIN(_InterlockedExchange64_nf,  "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedExchange64_rel, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_acq,  "ccD*cc", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_nf,   "ccD*cc", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_rel,  "ccD*cc", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_acq, "ssD*ss", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_nf,  "ssD*ss", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_rel, "ssD*ss", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_acq,   "LiLiD*LiLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_nf,"LiLiD*LiLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_rel,   "LiLiD*LiLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_acq, "LLiLLiD*LLiLLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_nf,  "LLiLLiD*LLiLLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_rel, "LLiLLiD*LLiLLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+
 TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, 
"")
 TARGET_HEADER_BUILTIN(_ReadStatusReg,  "ii",  "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")

Modified: cfe/trunk/include/clang/Basic/BuiltinsARM.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsARM.def?rev=346189=346188=346189=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsARM.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsARM.def Mon Nov  5 16:36:48 2018
@@ -256,6 +256,19 @@ TARGET_HEADER_BUILTIN(_InterlockedExchan
 TARGET_HEADER_BUILTIN(_InterlockedExchange64_nf,  "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedExchange64_rel, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_acq,  "ccD*cc", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_nf,   "ccD*cc", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange8_rel,  "ccD*cc", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_acq, "ssD*ss", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_nf,  "ssD*ss", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange16_rel, "ssD*ss", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_acq,   "LiLiD*LiLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_nf,"LiLiD*LiLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange_rel,   "LiLiD*LiLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_acq, "LLiLLiD*LLiLLi", 
"nh", "intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedCompareExchange64_nf,  "LLiLLiD*LLiLLi", 
"nh", 

r346044 - [COFF, ARM64] Implement InterlockedExchange*_* builtins

2018-11-02 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Fri Nov  2 14:18:23 2018
New Revision: 346044

URL: http://llvm.org/viewvc/llvm-project?rev=346044=rev
Log:
[COFF, ARM64] Implement InterlockedExchange*_* builtins

Summary: Windows SDK needs these intrinsics to be proper builtins.  This is 
second in a series of patches to move intrinsic defintions out of intrin.h.

Reviewers: rnk, mstorsjo, efriedma, TomTan

Reviewed By: rnk, efriedma

Subscribers: javed.absar, kristof.beyls, chrib, jfb, kristina, cfe-commits

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

Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/include/clang/Basic/BuiltinsARM.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/test/CodeGen/ms-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=346044=346043=346044=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Fri Nov  2 14:18:23 2018
@@ -117,6 +117,19 @@ TARGET_HEADER_BUILTIN(_InterlockedExchan
 TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_rel, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_nf, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedExchange8_acq,  "ccD*c",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange8_nf,   "ccD*c",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange8_rel,  "ccD*c",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange16_acq, "ssD*s",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange16_nf,  "ssD*s",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange16_rel, "ssD*s",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange_acq,   "LiLiD*Li","nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange_nf,"LiLiD*Li","nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange_rel,   "LiLiD*Li","nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64_acq, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64_nf,  "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64_rel, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+
 TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, 
"")
 TARGET_HEADER_BUILTIN(_ReadStatusReg,  "ii",  "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")

Modified: cfe/trunk/include/clang/Basic/BuiltinsARM.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsARM.def?rev=346044=346043=346044=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsARM.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsARM.def Fri Nov  2 14:18:23 2018
@@ -243,6 +243,19 @@ TARGET_HEADER_BUILTIN(_InterlockedExchan
 TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_rel, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64_nf, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedExchange8_acq,  "ccD*c",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange8_nf,   "ccD*c",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange8_rel,  "ccD*c",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange16_acq, "ssD*s",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange16_nf,  "ssD*s",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange16_rel, "ssD*s",   "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange_acq,   "LiLiD*Li","nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange_nf,"LiLiD*Li","nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange_rel,   "LiLiD*Li","nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64_acq, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64_nf,  "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64_rel, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+
 #undef BUILTIN
 #undef 

r346024 - [COFF, ARM64] Change setjmp for AArch64 Windows to use Intrinsic.sponentry

2018-11-02 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Fri Nov  2 11:10:07 2018
New Revision: 346024

URL: http://llvm.org/viewvc/llvm-project?rev=346024=rev
Log:
[COFF, ARM64] Change setjmp for AArch64 Windows to use Intrinsic.sponentry

Summary: ARM64 setjmp expects sp on entry instead of framepointer.

Patch by: Yin Ma (yi...@codeaurora.org)

Reviewers: mgrang, eli.friedman, ssijaric, mstorsjo, rnk, compnerd

Reviewed By: mgrang

Subscribers: efriedma, javed.absar, kristof.beyls, chrib, cfe-commits

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

Modified:
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/test/CodeGen/ms-setjmp.c

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=346024=346023=346024=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Fri Nov  2 11:10:07 2018
@@ -711,8 +711,11 @@ static RValue EmitMSVCRTSetJmp(CodeGenFu
   } else {
 Name = SJKind == MSVCSetJmpKind::_setjmp ? "_setjmp" : "_setjmpex";
 Arg1Ty = CGF.Int8PtrTy;
-Arg1 = 
CGF.Builder.CreateCall(CGF.CGM.getIntrinsic(Intrinsic::frameaddress),
-  llvm::ConstantInt::get(CGF.Int32Ty, 0));
+if (CGF.getTarget().getTriple().getArch() == llvm::Triple::aarch64) {
+  Arg1 = 
CGF.Builder.CreateCall(CGF.CGM.getIntrinsic(Intrinsic::sponentry));
+} else
+  Arg1 = 
CGF.Builder.CreateCall(CGF.CGM.getIntrinsic(Intrinsic::frameaddress),
+llvm::ConstantInt::get(CGF.Int32Ty, 0));
   }
 
   // Mark the call site and declaration with ReturnsTwice.

Modified: cfe/trunk/test/CodeGen/ms-setjmp.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/ms-setjmp.c?rev=346024=346023=346024=diff
==
--- cfe/trunk/test/CodeGen/ms-setjmp.c (original)
+++ cfe/trunk/test/CodeGen/ms-setjmp.c Fri Nov  2 11:10:07 2018
@@ -25,7 +25,7 @@ int test_setjmp() {
   // X64-NEXT:  ret i32 %[[call]]
 
   // AARCH64-LABEL: define dso_local i32 @test_setjmp
-  // AARCH64:   %[[addr:.*]] = call i8* @llvm.frameaddress(i32 0)
+  // AARCH64:   %[[addr:.*]] = call i8* @llvm.sponentry()
   // AARCH64:   %[[call:.*]] = call i32 @_setjmpex(i8* getelementptr 
inbounds ([1 x i8], [1 x i8]* @jb, i32 0, i32 0), i8* %[[addr]])
   // AARCH64-NEXT:  ret i32 %[[call]]
 }
@@ -38,7 +38,7 @@ int test_setjmpex() {
   // X64-NEXT:  ret i32 %[[call]]
 
   // AARCH64-LABEL: define dso_local i32 @test_setjmpex
-  // AARCH64:   %[[addr:.*]] = call i8* @llvm.frameaddress(i32 0)
+  // AARCH64:   %[[addr:.*]] = call i8* @llvm.sponentry()
   // AARCH64:   %[[call:.*]] = call i32 @_setjmpex(i8* getelementptr 
inbounds ([1 x i8], [1 x i8]* @jb, i32 0, i32 0), i8* %[[addr]])
   // AARCH64-NEXT:  ret i32 %[[call]]
 }


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


r345872 - Revert "[COFF, ARM64] Change setjmp for AArch64 Windows to use Intrinsic.sponentry"

2018-11-01 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Thu Nov  1 11:38:26 2018
New Revision: 345872

URL: http://llvm.org/viewvc/llvm-project?rev=345872=rev
Log:
Revert "[COFF, ARM64] Change setjmp for AArch64 Windows to use 
Intrinsic.sponentry"

This reverts commit 619111f5ccf349b635e4987ec02d15777c571495.

Modified:
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/test/CodeGen/ms-setjmp.c

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=345872=345871=345872=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Thu Nov  1 11:38:26 2018
@@ -711,11 +711,8 @@ static RValue EmitMSVCRTSetJmp(CodeGenFu
   } else {
 Name = SJKind == MSVCSetJmpKind::_setjmp ? "_setjmp" : "_setjmpex";
 Arg1Ty = CGF.Int8PtrTy;
-if (CGF.getTarget().getTriple().getArch() == llvm::Triple::aarch64) {
-  Arg1 = 
CGF.Builder.CreateCall(CGF.CGM.getIntrinsic(Intrinsic::sponentry));
-} else
-  Arg1 = 
CGF.Builder.CreateCall(CGF.CGM.getIntrinsic(Intrinsic::frameaddress),
-llvm::ConstantInt::get(CGF.Int32Ty, 0));
+Arg1 = 
CGF.Builder.CreateCall(CGF.CGM.getIntrinsic(Intrinsic::frameaddress),
+  llvm::ConstantInt::get(CGF.Int32Ty, 0));
   }
 
   // Mark the call site and declaration with ReturnsTwice.

Modified: cfe/trunk/test/CodeGen/ms-setjmp.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/ms-setjmp.c?rev=345872=345871=345872=diff
==
--- cfe/trunk/test/CodeGen/ms-setjmp.c (original)
+++ cfe/trunk/test/CodeGen/ms-setjmp.c Thu Nov  1 11:38:26 2018
@@ -25,7 +25,7 @@ int test_setjmp() {
   // X64-NEXT:  ret i32 %[[call]]
 
   // AARCH64-LABEL: define dso_local i32 @test_setjmp
-  // AARCH64:   %[[addr:.*]] = call i8* @llvm.sponentry()
+  // AARCH64:   %[[addr:.*]] = call i8* @llvm.frameaddress(i32 0)
   // AARCH64:   %[[call:.*]] = call i32 @_setjmpex(i8* getelementptr 
inbounds ([1 x i8], [1 x i8]* @jb, i32 0, i32 0), i8* %[[addr]])
   // AARCH64-NEXT:  ret i32 %[[call]]
 }
@@ -38,7 +38,7 @@ int test_setjmpex() {
   // X64-NEXT:  ret i32 %[[call]]
 
   // AARCH64-LABEL: define dso_local i32 @test_setjmpex
-  // AARCH64:   %[[addr:.*]] = call i8* @llvm.sponentry()
+  // AARCH64:   %[[addr:.*]] = call i8* @llvm.frameaddress(i32 0)
   // AARCH64:   %[[call:.*]] = call i32 @_setjmpex(i8* getelementptr 
inbounds ([1 x i8], [1 x i8]* @jb, i32 0, i32 0), i8* %[[addr]])
   // AARCH64-NEXT:  ret i32 %[[call]]
 }


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


r345808 - [COFF, ARM64] Implement llvm.addressofreturnaddress intrinsic

2018-10-31 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Wed Oct 31 18:35:34 2018
New Revision: 345808

URL: http://llvm.org/viewvc/llvm-project?rev=345808=rev
Log:
[COFF, ARM64] Implement llvm.addressofreturnaddress intrinsic

Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/test/CodeGen/ms-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=345808=345807=345808=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Wed Oct 31 18:35:34 2018
@@ -121,6 +121,7 @@ TARGET_HEADER_BUILTIN(_ReadWriteBarrier,
 TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, 
"")
 TARGET_HEADER_BUILTIN(_ReadStatusReg,  "ii",  "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_WriteStatusReg, "vii", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_AddressOfReturnAddress, "v*", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 
 #undef BUILTIN
 #undef LANGBUILTIN

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=345808=345807=345808=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Wed Oct 31 18:35:34 2018
@@ -6770,6 +6770,11 @@ Value *CodeGenFunction::EmitAArch64Built
 return Builder.CreateCall(F, { Metadata, ArgValue });
   }
 
+  if (BuiltinID == AArch64::BI_AddressOfReturnAddress) {
+llvm::Value *F = CGM.getIntrinsic(Intrinsic::addressofreturnaddress);
+return Builder.CreateCall(F);
+  }
+
   // Find out if any arguments are required to be integer constant
   // expressions.
   unsigned ICEArguments = 0;

Modified: cfe/trunk/test/CodeGen/ms-intrinsics.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/ms-intrinsics.c?rev=345808=345807=345808=diff
==
--- cfe/trunk/test/CodeGen/ms-intrinsics.c (original)
+++ cfe/trunk/test/CodeGen/ms-intrinsics.c Wed Oct 31 18:35:34 2018
@@ -137,7 +137,7 @@ void *test_ReturnAddress() {
 // CHECK: = tail call i8* @llvm.returnaddress(i32 0)
 // CHECK: ret i8*
 
-#if defined(__i386__) || defined(__x86_64__)
+#if defined(__i386__) || defined(__x86_64__) || defined (__aarch64__)
 void *test_AddressOfReturnAddress() {
   return _AddressOfReturnAddress();
 }


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


r345792 - [COFF, ARM64] Change setjmp for AArch64 Windows to use Intrinsic.sponentry

2018-10-31 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Wed Oct 31 16:17:36 2018
New Revision: 345792

URL: http://llvm.org/viewvc/llvm-project?rev=345792=rev
Log:
[COFF, ARM64] Change setjmp for AArch64 Windows to use Intrinsic.sponentry

Summary: ARM64 setjmp expects sp on entry instead of framepointer.

Reviewers: mgrang, rnk, TomTan, compnerd, mstorsjo, efriedma

Reviewed By: mstorsjo

Subscribers: javed.absar, kristof.beyls, chrib, cfe-commits

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

Modified:
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/test/CodeGen/ms-setjmp.c

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=345792=345791=345792=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Wed Oct 31 16:17:36 2018
@@ -711,8 +711,11 @@ static RValue EmitMSVCRTSetJmp(CodeGenFu
   } else {
 Name = SJKind == MSVCSetJmpKind::_setjmp ? "_setjmp" : "_setjmpex";
 Arg1Ty = CGF.Int8PtrTy;
-Arg1 = 
CGF.Builder.CreateCall(CGF.CGM.getIntrinsic(Intrinsic::frameaddress),
-  llvm::ConstantInt::get(CGF.Int32Ty, 0));
+if (CGF.getTarget().getTriple().getArch() == llvm::Triple::aarch64) {
+  Arg1 = 
CGF.Builder.CreateCall(CGF.CGM.getIntrinsic(Intrinsic::sponentry));
+} else
+  Arg1 = 
CGF.Builder.CreateCall(CGF.CGM.getIntrinsic(Intrinsic::frameaddress),
+llvm::ConstantInt::get(CGF.Int32Ty, 0));
   }
 
   // Mark the call site and declaration with ReturnsTwice.

Modified: cfe/trunk/test/CodeGen/ms-setjmp.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/ms-setjmp.c?rev=345792=345791=345792=diff
==
--- cfe/trunk/test/CodeGen/ms-setjmp.c (original)
+++ cfe/trunk/test/CodeGen/ms-setjmp.c Wed Oct 31 16:17:36 2018
@@ -25,7 +25,7 @@ int test_setjmp() {
   // X64-NEXT:  ret i32 %[[call]]
 
   // AARCH64-LABEL: define dso_local i32 @test_setjmp
-  // AARCH64:   %[[addr:.*]] = call i8* @llvm.frameaddress(i32 0)
+  // AARCH64:   %[[addr:.*]] = call i8* @llvm.sponentry()
   // AARCH64:   %[[call:.*]] = call i32 @_setjmpex(i8* getelementptr 
inbounds ([1 x i8], [1 x i8]* @jb, i32 0, i32 0), i8* %[[addr]])
   // AARCH64-NEXT:  ret i32 %[[call]]
 }
@@ -38,7 +38,7 @@ int test_setjmpex() {
   // X64-NEXT:  ret i32 %[[call]]
 
   // AARCH64-LABEL: define dso_local i32 @test_setjmpex
-  // AARCH64:   %[[addr:.*]] = call i8* @llvm.frameaddress(i32 0)
+  // AARCH64:   %[[addr:.*]] = call i8* @llvm.sponentry()
   // AARCH64:   %[[call:.*]] = call i32 @_setjmpex(i8* getelementptr 
inbounds ([1 x i8], [1 x i8]* @jb, i32 0, i32 0), i8* %[[addr]])
   // AARCH64-NEXT:  ret i32 %[[call]]
 }


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


r344767 - [COFF, ARM64] Enable unit test arm64-microsoft-status-reg.cpp only for aarch64 target

2018-10-18 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Thu Oct 18 17:05:26 2018
New Revision: 344767

URL: http://llvm.org/viewvc/llvm-project?rev=344767=rev
Log:
[COFF, ARM64] Enable unit test arm64-microsoft-status-reg.cpp only for aarch64 
target

This should unbreak bots broken here:
http://lab.llvm.org:8011/builders/clang-cmake-x86_64-sde-avx512-linux/builds/14391
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/38288

Modified:
cfe/trunk/test/CodeGen/arm64-microsoft-status-reg.cpp

Modified: cfe/trunk/test/CodeGen/arm64-microsoft-status-reg.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm64-microsoft-status-reg.cpp?rev=344767=344766=344767=diff
==
--- cfe/trunk/test/CodeGen/arm64-microsoft-status-reg.cpp (original)
+++ cfe/trunk/test/CodeGen/arm64-microsoft-status-reg.cpp Thu Oct 18 17:05:26 
2018
@@ -1,3 +1,5 @@
+// REQUIRES: aarch64-registered-target
+
 // RUN: %clang_cc1 -triple arm64-windows -fms-compatibility -emit-llvm -S \
 // RUN: -o - %s | FileCheck %s -check-prefix CHECK-ASM
 


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


r344765 - [COFF, ARM64] Add _ReadStatusReg and_WriteStatusReg intrinsics

2018-10-18 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Thu Oct 18 16:35:35 2018
New Revision: 344765

URL: http://llvm.org/viewvc/llvm-project?rev=344765=rev
Log:
[COFF, ARM64] Add _ReadStatusReg and_WriteStatusReg intrinsics

Reviewers: rnk, compnerd, mstorsjo, efriedma, TomTan, haripul, javed.absar

Reviewed By: efriedma

Subscribers: dmajor, kristof.beyls, chrib, cfe-commits

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

Added:
cfe/trunk/test/CodeGen/arm64-microsoft-status-reg.cpp
Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/lib/Sema/SemaChecking.cpp
cfe/trunk/test/Sema/builtins-microsoft-arm64.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=344765=344764=344765=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Thu Oct 18 16:35:35 2018
@@ -106,6 +106,8 @@ TARGET_HEADER_BUILTIN(_InterlockedXor64,
 
 TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, 
"")
+TARGET_HEADER_BUILTIN(_ReadStatusReg,  "ii",  "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_WriteStatusReg, "vii", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 
 #undef BUILTIN
 #undef LANGBUILTIN

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=344765=344764=344765=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Thu Oct 18 16:35:35 2018
@@ -6667,6 +6667,43 @@ Value *CodeGenFunction::EmitAArch64Built
 return EmitSpecialRegisterBuiltin(*this, E, RegisterType, ValueType, 
IsRead);
   }
 
+  if (BuiltinID == AArch64::BI_ReadStatusReg ||
+  BuiltinID == AArch64::BI_WriteStatusReg) {
+LLVMContext  = CGM.getLLVMContext();
+
+unsigned SysReg =
+  E->getArg(0)->EvaluateKnownConstInt(getContext()).getZExtValue();
+
+std::string SysRegStr;
+llvm::raw_string_ostream(SysRegStr) <<
+   ((1 << 1) | ((SysReg >> 14) & 1))  << ":" <<
+   ((SysReg >> 11) & 7)   << ":" <<
+   ((SysReg >> 7)  & 15)  << ":" <<
+   ((SysReg >> 3)  & 15)  << ":" <<
+   ( SysReg& 7);
+
+llvm::Metadata *Ops[] = { llvm::MDString::get(Context, SysRegStr) };
+llvm::MDNode *RegName = llvm::MDNode::get(Context, Ops);
+llvm::Value *Metadata = llvm::MetadataAsValue::get(Context, RegName);
+
+llvm::Type *RegisterType = Int64Ty;
+llvm::Type *ValueType = Int32Ty;
+llvm::Type *Types[] = { RegisterType };
+
+if (BuiltinID == AArch64::BI_ReadStatusReg) {
+  llvm::Value *F = CGM.getIntrinsic(llvm::Intrinsic::read_register, Types);
+  llvm::Value *Call = Builder.CreateCall(F, Metadata);
+
+  return Builder.CreateTrunc(Call, ValueType);
+}
+
+llvm::Value *F = CGM.getIntrinsic(llvm::Intrinsic::write_register, Types);
+llvm::Value *ArgValue = EmitScalarExpr(E->getArg(1));
+ArgValue = Builder.CreateZExt(ArgValue, RegisterType);
+
+return Builder.CreateCall(F, { Metadata, ArgValue });
+  }
+
   // Find out if any arguments are required to be integer constant
   // expressions.
   unsigned ICEArguments = 0;

Modified: cfe/trunk/lib/Headers/intrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/intrin.h?rev=344765=344764=344765=diff
==
--- cfe/trunk/lib/Headers/intrin.h (original)
+++ cfe/trunk/lib/Headers/intrin.h Thu Oct 18 16:35:35 2018
@@ -870,6 +870,8 @@ __nop(void) {
 #if defined(__aarch64__)
 unsigned __int64 __getReg(int);
 long _InterlockedAdd(long volatile *Addend, long Value);
+int _ReadStatusReg(int);
+void _WriteStatusReg(int, int);
 #endif
 
 
/**\

Modified: cfe/trunk/lib/Sema/SemaChecking.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaChecking.cpp?rev=344765=344764=344765=diff
==
--- cfe/trunk/lib/Sema/SemaChecking.cpp (original)
+++ cfe/trunk/lib/Sema/SemaChecking.cpp Thu Oct 18 16:35:35 2018
@@ -1749,6 +1749,13 @@ bool Sema::CheckAArch64BuiltinFunctionCa
   BuiltinID == AArch64::BI__builtin_arm_wsrp)
 return SemaBuiltinARMSpecialReg(BuiltinID, TheCall, 0, 5, true);
 
+  // Only check the valid encoding range. Any constant in this range would be
+  // converted to a register of the form S1_2_C3_C4_5. Let the hardware 

r343894 - [COFF, ARM64] Add _InterlockedAdd intrinsic

2018-10-05 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Fri Oct  5 14:57:41 2018
New Revision: 343894

URL: http://llvm.org/viewvc/llvm-project?rev=343894=rev
Log:
[COFF, ARM64] Add _InterlockedAdd intrinsic

Reviewers: rnk, mstorsjo, compnerd, TomTan, haripul, javed.absar, efriedma

Reviewed By: efriedma

Subscribers: efriedma, kristof.beyls, chrib, jfb, cfe-commits

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

Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=343894=343893=343894=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Fri Oct  5 14:57:41 2018
@@ -94,6 +94,7 @@ TARGET_HEADER_BUILTIN(_BitScanReverse, "
 TARGET_HEADER_BUILTIN(_BitScanForward64, "UcUNi*ULLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_BitScanReverse64, "UcUNi*ULLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_InterlockedAdd,   "LiLiD*Li","nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedAnd64, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedDecrement64,   "LLiLLiD*","nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedExchange64,"LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=343894=343893=343894=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Fri Oct  5 14:57:41 2018
@@ -8517,6 +8517,15 @@ Value *CodeGenFunction::EmitAArch64Built
 return EmitMSVCBuiltinExpr(MSVCIntrin::_InterlockedDecrement, E);
   case AArch64::BI_InterlockedIncrement64:
 return EmitMSVCBuiltinExpr(MSVCIntrin::_InterlockedIncrement, E);
+
+  case AArch64::BI_InterlockedAdd: {
+Value *Arg0 = EmitScalarExpr(E->getArg(0));
+Value *Arg1 = EmitScalarExpr(E->getArg(1));
+AtomicRMWInst *RMWI = Builder.CreateAtomicRMW(
+  AtomicRMWInst::Add, Arg0, Arg1,
+  llvm::AtomicOrdering::SequentiallyConsistent);
+return Builder.CreateAdd(RMWI, Arg1);
+  }
   }
 }
 

Modified: cfe/trunk/lib/Headers/intrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/intrin.h?rev=343894=343893=343894=diff
==
--- cfe/trunk/lib/Headers/intrin.h (original)
+++ cfe/trunk/lib/Headers/intrin.h Fri Oct  5 14:57:41 2018
@@ -869,6 +869,7 @@ __nop(void) {
 
\**/
 #if defined(__aarch64__)
 unsigned __int64 __getReg(int);
+long _InterlockedAdd(long volatile *Addend, long Value);
 #endif
 
 
/**\

Modified: cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c?rev=343894=343893=343894=diff
==
--- cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c (original)
+++ cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c Fri Oct  5 14:57:41 2018
@@ -4,6 +4,16 @@
 // RUN: not %clang_cc1 -triple arm64-linux -Werror -S -o /dev/null %s 2>&1 \
 // RUN:| FileCheck %s -check-prefix CHECK-LINUX
 
+long test_InterlockedAdd(long volatile *Addend, long Value) {
+  return _InterlockedAdd(Addend, Value);
+}
+
+// CHECK-LABEL: define {{.*}} i32 @test_InterlockedAdd(i32* %Addend, i32 
%Value) {{.*}} {
+// CHECK-MSVC: %[[OLDVAL:[0-9]+]] = atomicrmw add i32* %1, i32 %2 seq_cst
+// CHECK-MSVC: %[[NEWVAL:[0-9]+]] = add i32 %[[OLDVAL:[0-9]+]], %2
+// CHECK-MSVC: ret i32 %[[NEWVAL:[0-9]+]]
+// CHECK-LINUX: error: implicit declaration of function '_InterlockedAdd'
+
 void check__dmb(void) {
   __dmb(0);
 }


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


r343881 - [COFF, ARM64] Add _InterlockedCompareExchangePointer_nf intrinsic

2018-10-05 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Fri Oct  5 12:49:36 2018
New Revision: 343881

URL: http://llvm.org/viewvc/llvm-project?rev=343881=rev
Log:
[COFF, ARM64] Add _InterlockedCompareExchangePointer_nf intrinsic

Reviewers: rnk, mstorsjo, compnerd, TomTan, haripul, efriedma

Reviewed By: efriedma

Subscribers: efriedma, kristof.beyls, chrib, jfb, cfe-commits

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

Modified:
cfe/trunk/include/clang/Basic/Builtins.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/test/CodeGen/ms-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/Builtins.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Builtins.def?rev=343881=343880=343881=diff
==
--- cfe/trunk/include/clang/Basic/Builtins.def (original)
+++ cfe/trunk/include/clang/Basic/Builtins.def Fri Oct  5 12:49:36 2018
@@ -786,6 +786,7 @@ LANGBUILTIN(_InterlockedCompareExchange1
 LANGBUILTIN(_InterlockedCompareExchange,"NiNiD*NiNi", "n", 
ALL_MS_LANGUAGES)
 LANGBUILTIN(_InterlockedCompareExchange64,  "LLiLLiD*LLiLLi", "n", 
ALL_MS_LANGUAGES)
 LANGBUILTIN(_InterlockedCompareExchangePointer, "v*v*D*v*v*", "n", 
ALL_MS_LANGUAGES)
+LANGBUILTIN(_InterlockedCompareExchangePointer_nf, "v*v*D*v*v*", "n", 
ALL_MS_LANGUAGES)
 LANGBUILTIN(_InterlockedDecrement16,"ssD*", "n", ALL_MS_LANGUAGES)
 LANGBUILTIN(_InterlockedDecrement,  "NiNiD*",   "n", ALL_MS_LANGUAGES)
 LANGBUILTIN(_InterlockedExchange,   "NiNiD*Ni", "n", 
ALL_MS_LANGUAGES)

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=343881=343880=343881=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Fri Oct  5 12:49:36 2018
@@ -2999,7 +2999,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(
   case Builtin::BI_InterlockedExchangePointer:
 return RValue::get(
 EmitMSVCBuiltinExpr(MSVCIntrin::_InterlockedExchange, E));
-  case Builtin::BI_InterlockedCompareExchangePointer: {
+  case Builtin::BI_InterlockedCompareExchangePointer:
+  case Builtin::BI_InterlockedCompareExchangePointer_nf: {
 llvm::Type *RTy;
 llvm::IntegerType *IntType =
   IntegerType::get(getLLVMContext(),
@@ -3016,10 +3017,12 @@ RValue CodeGenFunction::EmitBuiltinExpr(
 llvm::Value *Comparand =
   Builder.CreatePtrToInt(EmitScalarExpr(E->getArg(2)), IntType);
 
-auto Result =
-Builder.CreateAtomicCmpXchg(Destination, Comparand, Exchange,
-AtomicOrdering::SequentiallyConsistent,
-AtomicOrdering::SequentiallyConsistent);
+auto Ordering =
+  BuiltinID == Builtin::BI_InterlockedCompareExchangePointer_nf ?
+  AtomicOrdering::Monotonic : AtomicOrdering::SequentiallyConsistent;
+
+auto Result = Builder.CreateAtomicCmpXchg(Destination, Comparand, Exchange,
+  Ordering, Ordering);
 Result->setVolatile(true);
 
 return 
RValue::get(Builder.CreateIntToPtr(Builder.CreateExtractValue(Result,

Modified: cfe/trunk/test/CodeGen/ms-intrinsics.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/ms-intrinsics.c?rev=343881=343880=343881=diff
==
--- cfe/trunk/test/CodeGen/ms-intrinsics.c (original)
+++ cfe/trunk/test/CodeGen/ms-intrinsics.c Fri Oct  5 12:49:36 2018
@@ -235,6 +235,21 @@ void *test_InterlockedCompareExchangePoi
 // CHECK:   ret i8* %[[RESULT:[0-9]+]]
 // CHECK: }
 
+void *test_InterlockedCompareExchangePointer_nf(void * volatile *Destination,
+ void *Exchange, void *Comparand) {
+  return _InterlockedCompareExchangePointer_nf(Destination, Exchange, 
Comparand);
+}
+
+// CHECK: define{{.*}}i8* @test_InterlockedCompareExchangePointer_nf(i8** 
{{[a-z_ ]*}}%Destination, i8* {{[a-z_ ]*}}%Exchange, i8* {{[a-z_ 
]*}}%Comparand){{.*}}{
+// CHECK:   %[[DEST:[0-9]+]] = bitcast i8** %Destination to [[iPTR]]*
+// CHECK:   %[[EXCHANGE:[0-9]+]] = ptrtoint i8* %Exchange to [[iPTR]]
+// CHECK:   %[[COMPARAND:[0-9]+]] = ptrtoint i8* %Comparand to [[iPTR]]
+// CHECK:   %[[XCHG:[0-9]+]] = cmpxchg volatile [[iPTR]]* %[[DEST:[0-9]+]], 
[[iPTR]] %[[COMPARAND:[0-9]+]], [[iPTR]] %[[EXCHANGE:[0-9]+]] monotonic 
monotonic
+// CHECK:   %[[EXTRACT:[0-9]+]] = extractvalue { [[iPTR]], i1 } %[[XCHG]], 0
+// CHECK:   %[[RESULT:[0-9]+]] = inttoptr [[iPTR]] %[[EXTRACT]] to i8*
+// CHECK:   ret i8* %[[RESULT:[0-9]+]]
+// CHECK: }
+
 char test_InterlockedExchange8(char volatile *value, char mask) {
   return _InterlockedExchange8(value, mask);
 }


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


r343824 - [COFF, ARM64] Add __getReg intrinsic

2018-10-04 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Thu Oct  4 15:32:42 2018
New Revision: 343824

URL: http://llvm.org/viewvc/llvm-project?rev=343824=rev
Log:
[COFF, ARM64] Add __getReg intrinsic

Reviewers: rnk, mstorsjo, compnerd, TomTan, haripul, javed.absar, efriedma

Reviewed By: efriedma

Subscribers: peter.smith, efriedma, kristof.beyls, chrib, cfe-commits

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

Added:
cfe/trunk/test/Sema/builtins-microsoft-arm64.c
Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/lib/Sema/SemaChecking.cpp
cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=343824=343823=343824=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Thu Oct  4 15:32:42 2018
@@ -104,6 +104,7 @@ TARGET_HEADER_BUILTIN(_InterlockedOr64,
 TARGET_HEADER_BUILTIN(_InterlockedXor64, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 
 TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__getReg, "ULLii", "nh", "intrin.h", ALL_MS_LANGUAGES, 
"")
 
 #undef BUILTIN
 #undef LANGBUILTIN

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=343824=343823=343824=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Thu Oct  4 15:32:42 2018
@@ -6576,6 +6576,23 @@ Value *CodeGenFunction::EmitAArch64Built
 return Builder.CreateCall(F, {StoreVal, StoreAddr}, "stxr");
   }
 
+  if (BuiltinID == AArch64::BI__getReg) {
+APSInt Value;
+if (!E->getArg(0)->EvaluateAsInt(Value, CGM.getContext()))
+  llvm_unreachable("Sema will ensure that the parameter is constant");
+
+LLVMContext  = CGM.getLLVMContext();
+std::string Reg = Value == 31 ? "sp" : "x" + Value.toString(10);
+
+llvm::Metadata *Ops[] = {llvm::MDString::get(Context, Reg)};
+llvm::MDNode *RegName = llvm::MDNode::get(Context, Ops);
+llvm::Value *Metadata = llvm::MetadataAsValue::get(Context, RegName);
+
+llvm::Value *F =
+CGM.getIntrinsic(llvm::Intrinsic::read_register, {Int64Ty});
+return Builder.CreateCall(F, Metadata);
+  }
+
   if (BuiltinID == AArch64::BI__builtin_arm_clrex) {
 Function *F = CGM.getIntrinsic(Intrinsic::aarch64_clrex);
 return Builder.CreateCall(F);

Modified: cfe/trunk/lib/Headers/intrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/intrin.h?rev=343824=343823=343824=diff
==
--- cfe/trunk/lib/Headers/intrin.h (original)
+++ cfe/trunk/lib/Headers/intrin.h Thu Oct  4 15:32:42 2018
@@ -865,6 +865,13 @@ __nop(void) {
 #endif
 
 
/**\
+|* MS AArch64 specific
+\**/
+#if defined(__aarch64__)
+unsigned __int64 __getReg(int);
+#endif
+
+/**\
 |* Privileged intrinsics
 
\**/
 #if defined(__i386__) || defined(__x86_64__)

Modified: cfe/trunk/lib/Sema/SemaChecking.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaChecking.cpp?rev=343824=343823=343824=diff
==
--- cfe/trunk/lib/Sema/SemaChecking.cpp (original)
+++ cfe/trunk/lib/Sema/SemaChecking.cpp Thu Oct  4 15:32:42 2018
@@ -1749,6 +1749,9 @@ bool Sema::CheckAArch64BuiltinFunctionCa
   BuiltinID == AArch64::BI__builtin_arm_wsrp)
 return SemaBuiltinARMSpecialReg(BuiltinID, TheCall, 0, 5, true);
 
+  if (BuiltinID == AArch64::BI__getReg)
+return SemaBuiltinConstantArgRange(TheCall, 0, 0, 31);
+
   if (CheckNeonBuiltinFunctionCall(BuiltinID, TheCall))
 return true;
 

Modified: cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c?rev=343824=343823=343824=diff
==
--- cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c (original)
+++ cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c Thu Oct  4 15:32:42 2018
@@ -66,3 +66,15 @@ void check_ReadWriteBarrier() {
 
 // CHECK-MSVC: fence syncscope("singlethread")
 // CHECK-LINUX: error: implicit declaration of function '_ReadWriteBarrier'
+
+unsigned __int64 check__getReg() {
+  

r343699 - [COFF, ARM64] Add _ReadWriteBarrier intrinsic

2018-10-03 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Wed Oct  3 10:24:21 2018
New Revision: 343699

URL: http://llvm.org/viewvc/llvm-project?rev=343699=rev
Log:
[COFF, ARM64] Add _ReadWriteBarrier intrinsic

Reviewers: rnk, mstorsjo, compnerd, TomTan, haripul, javed.absar

Reviewed By: rnk

Subscribers: kristof.beyls, chrib, jfb, cfe-commits

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

Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=343699=343698=343699=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Wed Oct  3 10:24:21 2018
@@ -103,6 +103,8 @@ TARGET_HEADER_BUILTIN(_InterlockedIncrem
 TARGET_HEADER_BUILTIN(_InterlockedOr64,  "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_InterlockedXor64, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
 
+TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+
 #undef BUILTIN
 #undef LANGBUILTIN
 #undef TARGET_HEADER_BUILTIN

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=343699=343698=343699=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Wed Oct  3 10:24:21 2018
@@ -6581,6 +6581,10 @@ Value *CodeGenFunction::EmitAArch64Built
 return Builder.CreateCall(F);
   }
 
+  if (BuiltinID == AArch64::BI_ReadWriteBarrier)
+return Builder.CreateFence(llvm::AtomicOrdering::SequentiallyConsistent,
+   llvm::SyncScope::SingleThread);
+
   // CRC32
   Intrinsic::ID CRCIntrinsicID = Intrinsic::not_intrinsic;
   switch (BuiltinID) {

Modified: cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c?rev=343699=343698=343699=diff
==
--- cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c (original)
+++ cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c Wed Oct  3 10:24:21 2018
@@ -59,3 +59,10 @@ void check__sevl(void) {
 
 // CHECK-MSVC: @llvm.aarch64.hint(i32 5)
 // CHECK-LINUX: error: implicit declaration of function '__sevl'
+
+void check_ReadWriteBarrier() {
+  _ReadWriteBarrier();
+}
+
+// CHECK-MSVC: fence syncscope("singlethread")
+// CHECK-LINUX: error: implicit declaration of function '_ReadWriteBarrier'


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


r338405 - [COFF, ARM64] Enable SEH for ARM64 Windows

2018-07-31 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Tue Jul 31 10:42:05 2018
New Revision: 338405

URL: http://llvm.org/viewvc/llvm-project?rev=338405=rev
Log:
[COFF, ARM64] Enable SEH for ARM64 Windows

Reviewers: rnk, mstorsjo, ssijaric, haripul, TomTan

Reviewed By: rnk

Subscribers: kristof.beyls, chrib, cfe-commits

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

Modified:
cfe/trunk/include/clang/Basic/TargetInfo.h
cfe/trunk/test/CodeGen/exceptions-seh-finally.c
cfe/trunk/test/CodeGen/exceptions-seh.c

Modified: cfe/trunk/include/clang/Basic/TargetInfo.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetInfo.h?rev=338405=338404=338405=diff
==
--- cfe/trunk/include/clang/Basic/TargetInfo.h (original)
+++ cfe/trunk/include/clang/Basic/TargetInfo.h Tue Jul 31 10:42:05 2018
@@ -1139,7 +1139,8 @@ public:
   bool isSEHTrySupported() const {
 return getTriple().isOSWindows() &&
(getTriple().getArch() == llvm::Triple::x86 ||
-getTriple().getArch() == llvm::Triple::x86_64);
+getTriple().getArch() == llvm::Triple::x86_64 ||
+getTriple().getArch() == llvm::Triple::aarch64);
   }
 
   /// Return true if {|} are normal characters in the asm string.

Modified: cfe/trunk/test/CodeGen/exceptions-seh-finally.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/exceptions-seh-finally.c?rev=338405=338404=338405=diff
==
--- cfe/trunk/test/CodeGen/exceptions-seh-finally.c (original)
+++ cfe/trunk/test/CodeGen/exceptions-seh-finally.c Tue Jul 31 10:42:05 2018
@@ -1,5 +1,6 @@
 // RUN: %clang_cc1 %s -triple x86_64-pc-win32 -fms-extensions -emit-llvm -o - 
| FileCheck %s
 // RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - | 
FileCheck %s
+// RUN: %clang_cc1 %s -triple aarch64-windows -fms-extensions -emit-llvm -o - 
| FileCheck %s
 
 void abort(void) __attribute__((noreturn));
 void might_crash(void);

Modified: cfe/trunk/test/CodeGen/exceptions-seh.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/exceptions-seh.c?rev=338405=338404=338405=diff
==
--- cfe/trunk/test/CodeGen/exceptions-seh.c (original)
+++ cfe/trunk/test/CodeGen/exceptions-seh.c Tue Jul 31 10:42:05 2018
@@ -2,6 +2,8 @@
 // RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=X64
 // RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - \
 // RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=X86
+// RUN: %clang_cc1 %s -triple aarch64-windows -fms-extensions -emit-llvm -o - \
+// RUN: | FileCheck %s --check-prefixes=CHECK,ARM64
 // RUN: %clang_cc1 %s -triple i686-pc-windows-gnu -fms-extensions -emit-llvm 
-o - \
 // RUN: | FileCheck %s --check-prefix=X86-GNU
 // RUN: %clang_cc1 %s -triple x86_64-pc-windows-gnu -fms-extensions -emit-llvm 
-o - \
@@ -29,12 +31,14 @@ int safe_div(int numerator, int denomina
 
 // CHECK-LABEL: define dso_local i32 @safe_div(i32 %numerator, i32 
%denominator, i32* %res)
 // X64-SAME:  personality i8* bitcast (i32 (...)* @__C_specific_handler to 
i8*)
+// ARM64-SAME:personality i8* bitcast (i32 (...)* @__C_specific_handler to 
i8*)
 // X86-SAME:  personality i8* bitcast (i32 (...)* @_except_handler3 to i8*)
 // CHECK: invoke void @try_body(i32 %{{.*}}, i32 %{{.*}}, i32* %{{.*}}) 
#[[NOINLINE:[0-9]+]]
 // CHECK:   to label %{{.*}} unwind label %[[catchpad:[^ ]*]]
 //
 // CHECK: [[catchpad]]
 // X64: %[[padtoken:[^ ]*]] = catchpad within %{{[^ ]*}} [i8* null]
+// ARM64: %[[padtoken:[^ ]*]] = catchpad within %{{[^ ]*}} [i8* null]
 // X86: %[[padtoken:[^ ]*]] = catchpad within %{{[^ ]*}} [i8* bitcast (i32 ()* 
@"?filt$0@0@safe_div@@" to i8*)]
 // CHECK-NEXT: catchret from %[[padtoken]] to label %[[except:[^ ]*]]
 //
@@ -76,8 +80,10 @@ int filter_expr_capture(void) {
 
 // CHECK-LABEL: define dso_local i32 @filter_expr_capture()
 // X64-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
+// ARM64-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to 
i8*)
 // X86-SAME: personality i8* bitcast (i32 (...)* @_except_handler3 to i8*)
 // X64: call void (...) @llvm.localescape(i32* %[[r:[^ ,]*]])
+// ARM64: call void (...) @llvm.localescape(i32* %[[r:[^ ,]*]])
 // X86: call void (...) @llvm.localescape(i32* %[[r:[^ ,]*]], i32* %[[code:[^ 
,]*]])
 // CHECK: store i32 42, i32* %[[r]]
 // CHECK: invoke void @j() #[[NOINLINE]]
@@ -92,6 +98,10 @@ int filter_expr_capture(void) {
 // X64: %[[fp:[^ ]*]] = call i8* @llvm.x86.seh.recoverfp(i8* bitcast (i32 ()* 
@filter_expr_capture to i8*), i8* %frame_pointer)
 // X64: call i8* @llvm.localrecover(i8* bitcast (i32 ()* @filter_expr_capture 
to i8*), i8* %[[fp]], i32 0)
 //
+// ARM64-LABEL: define internal i32 @"?filt$0@0@filter_expr_capture@@"(i8* 

r338294 - [OpenEmbedded] Fix lib paths for OpenEmbedded targets

2018-07-30 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Jul 30 12:44:13 2018
New Revision: 338294

URL: http://llvm.org/viewvc/llvm-project?rev=338294=rev
Log:
[OpenEmbedded] Fix lib paths for OpenEmbedded targets

Summary:
The lib paths are not correctly picked up for OpenEmbedded sysroots (like 
arm-oe-linux-gnueabi) for 2 reasons:

1. OpenEmbedded sysroots are of the form /usr/lib//x.y.z. This 
form is handled in clang but only for Freescale vendor.

2. 64-bit OpenEmbedded sysroots may not have a /usr/lib dir. So they cannot 
find /usr/lib64 as it is referenced as /usr/lib/../lib64 in clang.

This is a follow-up to the llvm patch: D48861

Reviewers: dlj, rengolin, fedor.sergeev, javed.absar, hfinkel, rsmith

Reviewed By: rsmith

Subscribers: rsmith, kristof.beyls, cfe-commits

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

Added:
cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/
cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/
cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/include/

cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/include/c++/

cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/include/c++/6.3.0/

cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/include/c++/6.3.0/backward/

cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/include/c++/6.3.0/backward/.keep
cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/lib64/

cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/lib64/aarch64-oe-linux/

cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/lib64/aarch64-oe-linux/6.3.0/

cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/lib64/aarch64-oe-linux/6.3.0/crtbegin.o

cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/lib64/aarch64-oe-linux/6.3.0/crtend.o

cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/lib64/crt1.o

cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/lib64/crti.o

cfe/trunk/test/Driver/Inputs/openembedded_aarch64_linux_tree/usr/lib64/crtn.o
cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/
cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/
cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/include/
cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/include/c++/

cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/include/c++/6.3.0/

cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/include/c++/6.3.0/backward/

cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/include/c++/6.3.0/backward/.keep
cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/lib/

cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/lib/arm-oe-linux-gnueabi/

cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/lib/arm-oe-linux-gnueabi/6.3.0/

cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/lib/arm-oe-linux-gnueabi/6.3.0/crtbegin.o

cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/lib/arm-oe-linux-gnueabi/6.3.0/crtend.o
cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/lib/crt1.o
cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/lib/crti.o
cfe/trunk/test/Driver/Inputs/openembedded_arm_linux_tree/usr/lib/crtn.o
Modified:
cfe/trunk/lib/Driver/ToolChains/Gnu.cpp
cfe/trunk/lib/Driver/ToolChains/Linux.cpp
cfe/trunk/test/Driver/linux-header-search.cpp
cfe/trunk/test/Driver/linux-ld.c

Modified: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Gnu.cpp?rev=338294=338293=338294=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp Mon Jul 30 12:44:13 2018
@@ -2188,7 +2188,8 @@ void Generic_GCC::GCCInstallationDetecto
   // this on Freescale triples, though, since some systems put a *lot* of
   // files in that location, not just GCC installation data.
   {CandidateTriple.str(), "..",
-   TargetTriple.getVendor() == llvm::Triple::Freescale},
+   TargetTriple.getVendor() == llvm::Triple::Freescale ||
+   TargetTriple.getVendor() == llvm::Triple::OpenEmbedded},
 
   // Natively multiarch systems sometimes put the GCC triple-specific
   // directory within their multiarch lib directory, resulting in the

Modified: cfe/trunk/lib/Driver/ToolChains/Linux.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Linux.cpp?rev=338294=338293=338294=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Linux.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Linux.cpp Mon Jul 30 12:44:13 2018
@@ -376,7 +376,14 @@ Linux::Linux(const Driver , const llvm
   }
 
   

r338050 - [COFF, ARM64] Decide when to mark struct returns as SRet

2018-07-26 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Thu Jul 26 11:07:59 2018
New Revision: 338050

URL: http://llvm.org/viewvc/llvm-project?rev=338050=rev
Log:
[COFF, ARM64] Decide when to mark struct returns as SRet

Summary:
Refer the MS ARM64 ABI Convention for the behavior for struct returns:
https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions#return-values

Reviewers: mstorsjo, compnerd, rnk, javed.absar, yinma, efriedma

Reviewed By: rnk, efriedma

Subscribers: haripul, TomTan, yinma, efriedma, kristof.beyls, chrib, 
llvm-commits

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

Added:
cfe/trunk/test/CodeGen/arm64-microsoft-arguments.cpp
Modified:
cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h
cfe/trunk/lib/CodeGen/CGCall.cpp
cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp

Modified: cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h?rev=338050=338049=338050=diff
==
--- cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h (original)
+++ cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h Thu Jul 26 11:07:59 2018
@@ -96,6 +96,7 @@ private:
   bool InReg : 1;   // isDirect() || isExtend() || isIndirect()
   bool CanBeFlattened: 1;   // isDirect()
   bool SignExt : 1; // isExtend()
+  bool SuppressSRet : 1;// isIndirect()
 
   bool canHavePaddingType() const {
 return isDirect() || isExtend() || isIndirect() || isExpand();
@@ -111,13 +112,14 @@ private:
   }
 
   ABIArgInfo(Kind K)
-  : TheKind(K), PaddingInReg(false), InReg(false) {
+  : TheKind(K), PaddingInReg(false), InReg(false), SuppressSRet(false) {
   }
 
 public:
   ABIArgInfo()
   : TypeData(nullptr), PaddingType(nullptr), DirectOffset(0),
-TheKind(Direct), PaddingInReg(false), InReg(false) {}
+TheKind(Direct), PaddingInReg(false), InReg(false),
+SuppressSRet(false) {}
 
   static ABIArgInfo getDirect(llvm::Type *T = nullptr, unsigned Offset = 0,
   llvm::Type *Padding = nullptr,
@@ -406,6 +408,16 @@ public:
 CanBeFlattened = Flatten;
   }
 
+  bool getSuppressSRet() const {
+assert(isIndirect() && "Invalid kind!");
+return SuppressSRet;
+  }
+
+  void setSuppressSRet(bool Suppress) {
+assert(isIndirect() && "Invalid kind!");
+SuppressSRet = Suppress;
+  }
+
   void dump() const;
 };
 

Modified: cfe/trunk/lib/CodeGen/CGCall.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCall.cpp?rev=338050=338049=338050=diff
==
--- cfe/trunk/lib/CodeGen/CGCall.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGCall.cpp Thu Jul 26 11:07:59 2018
@@ -1988,7 +1988,8 @@ void CodeGenModule::ConstructAttributeLi
   // Attach attributes to sret.
   if (IRFunctionArgs.hasSRetArg()) {
 llvm::AttrBuilder SRETAttrs;
-SRETAttrs.addAttribute(llvm::Attribute::StructRet);
+if (!RetAI.getSuppressSRet())
+  SRETAttrs.addAttribute(llvm::Attribute::StructRet);
 hasUsedSRet = true;
 if (RetAI.getInReg())
   SRETAttrs.addAttribute(llvm::Attribute::InReg);

Modified: cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp?rev=338050=338049=338050=diff
==
--- cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp (original)
+++ cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp Thu Jul 26 11:07:59 2018
@@ -1060,10 +1060,22 @@ bool MicrosoftCXXABI::classifyReturnType
 // the second parameter.
 FI.getReturnInfo() = ABIArgInfo::getIndirect(Align, /*ByVal=*/false);
 FI.getReturnInfo().setSRetAfterThis(FI.isInstanceMethod());
+
+// aarch64-windows requires that instance methods use X1 for the return
+// address. So for aarch64-windows we do not mark the
+// return as SRet.
+FI.getReturnInfo().setSuppressSRet(CGM.getTarget().getTriple().getArch() ==
+   llvm::Triple::aarch64);
 return true;
   } else if (!RD->isPOD()) {
 // If it's a free function, non-POD types are returned indirectly.
 FI.getReturnInfo() = ABIArgInfo::getIndirect(Align, /*ByVal=*/false);
+
+// aarch64-windows requires that non-POD, non-instance returns use X0 for
+// the return address. So for aarch64-windows we do not mark the return as
+// SRet.
+FI.getReturnInfo().setSuppressSRet(CGM.getTarget().getTriple().getArch() ==
+   llvm::Triple::aarch64);
 return true;
   }
 

Added: cfe/trunk/test/CodeGen/arm64-microsoft-arguments.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm64-microsoft-arguments.cpp?rev=338050=auto
==
--- cfe/trunk/test/CodeGen/arm64-microsoft-arguments.cpp (added)

r337327 - [COFF] Add more missing MSVC ARM64 intrinsics

2018-07-17 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Tue Jul 17 15:03:24 2018
New Revision: 337327

URL: http://llvm.org/viewvc/llvm-project?rev=337327=rev
Log:
[COFF] Add more missing MSVC ARM64 intrinsics

Summary:
Added the following intrinsics:
_BitScanForward, _BitScanReverse, _BitScanForward64, _BitScanReverse64
_InterlockedAnd64, _InterlockedDecrement64, _InterlockedExchange64,
_InterlockedExchangeAdd64, _InterlockedExchangeSub64,
_InterlockedIncrement64, _InterlockedOr64, _InterlockedXor64.

Reviewers: compnerd, mstorsjo, rnk, javed.absar

Reviewed By: mstorsjo

Subscribers: kristof.beyls, chrib, llvm-commits

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

Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/test/CodeGen/ms-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=337327=337326=337327=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Tue Jul 17 15:03:24 2018
@@ -18,6 +18,10 @@
 #   define LANGBUILTIN(ID, TYPE, ATTRS, BUILTIN_LANG) BUILTIN(ID, TYPE, ATTRS)
 #endif
 
+#if defined(BUILTIN) && !defined(TARGET_HEADER_BUILTIN)
+#  define TARGET_HEADER_BUILTIN(ID, TYPE, ATTRS, HEADER, LANG, FEATURE) 
BUILTIN(ID, TYPE, ATTRS)
+#endif
+
 // In libgcc
 BUILTIN(__clear_cache, "vv*v*", "i")
 
@@ -85,5 +89,20 @@ LANGBUILTIN(__iso_volatile_store16, "vsD
 LANGBUILTIN(__iso_volatile_store32, "viD*i", "n", ALL_MS_LANGUAGES)
 LANGBUILTIN(__iso_volatile_store64, "vLLiD*LLi", "n", ALL_MS_LANGUAGES)
 
+TARGET_HEADER_BUILTIN(_BitScanForward, "UcUNi*UNi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_BitScanReverse, "UcUNi*UNi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_BitScanForward64, "UcUNi*ULLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_BitScanReverse64, "UcUNi*ULLi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
+
+TARGET_HEADER_BUILTIN(_InterlockedAnd64, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedDecrement64,   "LLiLLiD*","nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchange64,"LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeAdd64, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedExchangeSub64, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedIncrement64,   "LLiLLiD*","nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedOr64,  "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(_InterlockedXor64, "LLiLLiD*LLi", "nh", 
"intrin.h", ALL_MS_LANGUAGES, "")
+
 #undef BUILTIN
 #undef LANGBUILTIN
+#undef TARGET_HEADER_BUILTIN

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=337327=337326=337327=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Tue Jul 17 15:03:24 2018
@@ -732,8 +732,8 @@ static RValue EmitMSVCRTSetJmp(CodeGenFu
   return RValue::get(CS.getInstruction());
 }
 
-// Many of MSVC builtins are on both x64 and ARM; to avoid repeating code, we
-// handle them here.
+// Many of MSVC builtins are on x64, ARM and AArch64; to avoid repeating code,
+// we handle them here.
 enum class CodeGenFunction::MSVCIntrin {
   _BitScanForward,
   _BitScanReverse,
@@ -8385,6 +8385,28 @@ Value *CodeGenFunction::EmitAArch64Built
   case AArch64::BI__iso_volatile_store32:
   case AArch64::BI__iso_volatile_store64:
 return EmitISOVolatileStore(E);
+  case AArch64::BI_BitScanForward:
+  case AArch64::BI_BitScanForward64:
+return EmitMSVCBuiltinExpr(MSVCIntrin::_BitScanForward, E);
+  case AArch64::BI_BitScanReverse:
+  case AArch64::BI_BitScanReverse64:
+return EmitMSVCBuiltinExpr(MSVCIntrin::_BitScanReverse, E);
+  case AArch64::BI_InterlockedAnd64:
+return EmitMSVCBuiltinExpr(MSVCIntrin::_InterlockedAnd, E);
+  case AArch64::BI_InterlockedExchange64:
+return EmitMSVCBuiltinExpr(MSVCIntrin::_InterlockedExchange, E);
+  case AArch64::BI_InterlockedExchangeAdd64:
+return EmitMSVCBuiltinExpr(MSVCIntrin::_InterlockedExchangeAdd, E);
+  case AArch64::BI_InterlockedExchangeSub64:
+return EmitMSVCBuiltinExpr(MSVCIntrin::_InterlockedExchangeSub, E);
+  case AArch64::BI_InterlockedOr64:
+return EmitMSVCBuiltinExpr(MSVCIntrin::_InterlockedOr, E);
+  case AArch64::BI_InterlockedXor64:
+return EmitMSVCBuiltinExpr(MSVCIntrin::_InterlockedXor, E);
+  case AArch64::BI_InterlockedDecrement64:
+

r334639 - [COFF] Add ARM64 intrinsics: __yield, __wfe, __wfi, __sev, __sevl

2018-06-13 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Wed Jun 13 11:49:35 2018
New Revision: 334639

URL: http://llvm.org/viewvc/llvm-project?rev=334639=rev
Log:
[COFF] Add ARM64 intrinsics: __yield, __wfe, __wfi, __sev, __sevl

Summary: These intrinsics result in hint instructions. They are provided here 
for MSVC ARM64 compatibility.

Reviewers: mstorsjo, compnerd, javed.absar

Reviewed By: mstorsjo

Subscribers: kristof.beyls, chrib, cfe-commits

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

Modified:
cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsAArch64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def?rev=334639=334638=334639=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsAArch64.def Wed Jun 13 11:49:35 2018
@@ -65,9 +65,15 @@ BUILTIN(__builtin_arm_wsr, "vcC*Ui", "nc
 BUILTIN(__builtin_arm_wsr64, "vcC*LUi", "nc")
 BUILTIN(__builtin_arm_wsrp, "vcC*vC*", "nc")
 
+// MSVC
 LANGBUILTIN(__dmb, "vUi", "nc", ALL_MS_LANGUAGES)
 LANGBUILTIN(__dsb, "vUi", "nc", ALL_MS_LANGUAGES)
 LANGBUILTIN(__isb, "vUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__yield, "v", "",   ALL_MS_LANGUAGES)
+LANGBUILTIN(__wfe,   "v", "",   ALL_MS_LANGUAGES)
+LANGBUILTIN(__wfi,   "v", "",   ALL_MS_LANGUAGES)
+LANGBUILTIN(__sev,   "v", "",   ALL_MS_LANGUAGES)
+LANGBUILTIN(__sevl,  "v", "",   ALL_MS_LANGUAGES)
 
 // MSVC intrinsics for volatile but non-acquire/release loads and stores
 LANGBUILTIN(__iso_volatile_load8,   "ccCD*", "n", ALL_MS_LANGUAGES)

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=334639=334638=334639=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Wed Jun 13 11:49:35 2018
@@ -6362,18 +6362,23 @@ Value *CodeGenFunction::EmitAArch64Built
 HintID = 0;
 break;
   case AArch64::BI__builtin_arm_yield:
+  case AArch64::BI__yield:
 HintID = 1;
 break;
   case AArch64::BI__builtin_arm_wfe:
+  case AArch64::BI__wfe:
 HintID = 2;
 break;
   case AArch64::BI__builtin_arm_wfi:
+  case AArch64::BI__wfi:
 HintID = 3;
 break;
   case AArch64::BI__builtin_arm_sev:
+  case AArch64::BI__sev:
 HintID = 4;
 break;
   case AArch64::BI__builtin_arm_sevl:
+  case AArch64::BI__sevl:
 HintID = 5;
 break;
   }

Modified: cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c?rev=334639=334638=334639=diff
==
--- cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c (original)
+++ cfe/trunk/test/CodeGen/arm64-microsoft-intrinsics.c Wed Jun 13 11:49:35 2018
@@ -24,3 +24,38 @@ void check__isb(void) {
 
 // CHECK-MSVC: @llvm.aarch64.isb(i32 0)
 // CHECK-LINUX: error: implicit declaration of function '__isb'
+
+void check__yield(void) {
+  __yield();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 1)
+// CHECK-LINUX: error: implicit declaration of function '__yield'
+
+void check__wfe(void) {
+  __wfe();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 2)
+// CHECK-LINUX: error: implicit declaration of function '__wfe'
+
+void check__wfi(void) {
+  __wfi();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 3)
+// CHECK-LINUX: error: implicit declaration of function '__wfi'
+
+void check__sev(void) {
+  __sev();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 4)
+// CHECK-LINUX: error: implicit declaration of function '__sev'
+
+void check__sevl(void) {
+  __sevl();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 5)
+// CHECK-LINUX: error: implicit declaration of function '__sevl'


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


r330561 - [XRay] Change std::sort to llvm::sort in response to r327219

2018-04-22 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Sun Apr 22 17:49:25 2018
New Revision: 330561

URL: http://llvm.org/viewvc/llvm-project?rev=330561=rev
Log:
[XRay] Change std::sort to llvm::sort in response to r327219

r327219 added wrappers to std::sort which randomly shuffle the container before
sorting.  This will help in uncovering non-determinism caused due to undefined
sorting order of objects having the same key.

To make use of that infrastructure we need to invoke llvm::sort instead of
std::sort.

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

Modified: cfe/trunk/lib/Driver/XRayArgs.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/XRayArgs.cpp?rev=330561=330560=330561=diff
==
--- cfe/trunk/lib/Driver/XRayArgs.cpp (original)
+++ cfe/trunk/lib/Driver/XRayArgs.cpp Sun Apr 22 17:49:25 2018
@@ -163,7 +163,7 @@ XRayArgs::XRayArgs(const ToolChain ,
   }
 
 // Then we want to sort and unique the modes we've collected.
-std::sort(Modes.begin(), Modes.end());
+llvm::sort(Modes.begin(), Modes.end());
 Modes.erase(std::unique(Modes.begin(), Modes.end()), Modes.end());
   }
 }


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


r329941 - [RISCV] Fix logic to check if frame pointer should be used

2018-04-12 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Thu Apr 12 12:31:37 2018
New Revision: 329941

URL: http://llvm.org/viewvc/llvm-project?rev=329941=rev
Log:
[RISCV] Fix logic to check if frame pointer should be used

Summary: The logic was broken for Linux triples as it returns true in the 
switch for Triple.isOSLinux().

Reviewers: asb, apazos

Reviewed By: asb

Subscribers: kito-cheng, shiva0217, cfe-commits

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

Modified:
cfe/trunk/lib/Driver/ToolChains/Clang.cpp
cfe/trunk/test/Driver/frame-pointer.c

Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=329941=329940=329941=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Thu Apr 12 12:31:37 2018
@@ -529,6 +529,9 @@ static bool useFramePointerForTargetByDe
 // XCore never wants frame pointers, regardless of OS.
 // WebAssembly never wants frame pointers.
 return false;
+  case llvm::Triple::riscv32:
+  case llvm::Triple::riscv64:
+return !areOptimizationsEnabled(Args);
   default:
 break;
   }
@@ -552,14 +555,6 @@ static bool useFramePointerForTargetByDe
 }
   }
 
-  switch (Triple.getArch()) {
-case llvm::Triple::riscv32:
-case llvm::Triple::riscv64:
-  return !areOptimizationsEnabled(Args);
-default:
-  break;
-  }
-
   if (Triple.isOSWindows()) {
 switch (Triple.getArch()) {
 case llvm::Triple::x86:

Modified: cfe/trunk/test/Driver/frame-pointer.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/frame-pointer.c?rev=329941=329940=329941=diff
==
--- cfe/trunk/test/Driver/frame-pointer.c (original)
+++ cfe/trunk/test/Driver/frame-pointer.c Thu Apr 12 12:31:37 2018
@@ -45,6 +45,18 @@
 // RUN: %clang -target riscv64-unknown-elf -### -S -O3 %s -o %t.s 2>&1 | 
FileCheck -check-prefix=CHECK3-64 %s
 // RUN: %clang -target riscv64-unknown-elf -### -S -Os %s -o %t.s 2>&1 | 
FileCheck -check-prefix=CHECKs-64 %s
 
+// RUN: %clang -target riscv32-unknown-linux-gnu -### -S -O0 %s -o %t.s 2>&1 | 
FileCheck -check-prefix=CHECK0-32 %s
+// RUN: %clang -target riscv32-unknown-linux-gnu -### -S -O1 %s -o %t.s 2>&1 | 
FileCheck -check-prefix=CHECK1-32 %s
+// RUN: %clang -target riscv32-unknown-linux-gnu -### -S -O2 %s -o %t.s 2>&1 | 
FileCheck -check-prefix=CHECK2-32 %s
+// RUN: %clang -target riscv32-unknown-linux-gnu -### -S -O3 %s -o %t.s 2>&1 | 
FileCheck -check-prefix=CHECK3-32 %s
+// RUN: %clang -target riscv32-unknown-linux-gnu -### -S -Os %s -o %t.s 2>&1 | 
FileCheck -check-prefix=CHECKs-32 %s
+
+// RUN: %clang -target riscv64-unknown-linux-gnu -### -S -O0 %s -o %t.s 2>&1 | 
FileCheck -check-prefix=CHECK0-64 %s
+// RUN: %clang -target riscv64-unknown-linux-gnu -### -S -O1 %s -o %t.s 2>&1 | 
FileCheck -check-prefix=CHECK1-64 %s
+// RUN: %clang -target riscv64-unknown-linux-gnu -### -S -O2 %s -o %t.s 2>&1 | 
FileCheck -check-prefix=CHECK2-64 %s
+// RUN: %clang -target riscv64-unknown-linux-gnu -### -S -O3 %s -o %t.s 2>&1 | 
FileCheck -check-prefix=CHECK3-64 %s
+// RUN: %clang -target riscv64-unknown-linux-gnu -### -S -Os %s -o %t.s 2>&1 | 
FileCheck -check-prefix=CHECKs-64 %s
+
 // CHECK0-32: -mdisable-fp-elim
 // CHECK1-32-NOT: -mdisable-fp-elim
 // CHECK2-32-NOT: -mdisable-fp-elim


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


r328636 - [clang] Change std::sort to llvm::sort in response to r327219

2018-03-27 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Tue Mar 27 09:50:00 2018
New Revision: 328636

URL: http://llvm.org/viewvc/llvm-project?rev=328636=rev
Log:
[clang] Change std::sort to llvm::sort in response to r327219

r327219 added wrappers to std::sort which randomly shuffle the container before
sorting.  This will help in uncovering non-determinism caused due to undefined
sorting order of objects having the same key.

To make use of that infrastructure we need to invoke llvm::sort instead of
std::sort.

Modified:
cfe/trunk/include/clang/Basic/Attr.td
cfe/trunk/include/clang/Serialization/ContinuousRangeMap.h
cfe/trunk/lib/AST/ASTContext.cpp
cfe/trunk/lib/AST/ItaniumMangle.cpp
cfe/trunk/lib/AST/VTableBuilder.cpp
cfe/trunk/lib/ASTMatchers/Dynamic/Parser.cpp
cfe/trunk/lib/Analysis/LiveVariables.cpp
cfe/trunk/lib/Basic/VirtualFileSystem.cpp
cfe/trunk/lib/CodeGen/CGVTables.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/TargetInfo.cpp
cfe/trunk/lib/Driver/Driver.cpp
cfe/trunk/lib/Format/FormatTokenLexer.cpp
cfe/trunk/lib/Format/WhitespaceManager.cpp
cfe/trunk/lib/Frontend/CompilerInvocation.cpp
cfe/trunk/lib/Frontend/DiagnosticRenderer.cpp
cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp
cfe/trunk/lib/Sema/SemaDecl.cpp
cfe/trunk/lib/Sema/SemaDeclAttr.cpp
cfe/trunk/lib/Sema/SemaLookup.cpp
cfe/trunk/lib/Sema/SemaOverload.cpp
cfe/trunk/lib/Sema/SemaType.cpp
cfe/trunk/lib/Serialization/ASTReader.cpp
cfe/trunk/lib/Serialization/ASTReaderDecl.cpp
cfe/trunk/lib/Serialization/ASTWriter.cpp
cfe/trunk/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp
cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
cfe/trunk/lib/StaticAnalyzer/Core/CheckerRegistry.cpp
cfe/trunk/lib/Tooling/ASTDiff/ASTDiff.cpp
cfe/trunk/lib/Tooling/Core/Replacement.cpp
cfe/trunk/tools/diagtool/DiagTool.cpp
cfe/trunk/tools/libclang/CIndex.cpp
cfe/trunk/unittests/Basic/VirtualFileSystemTest.cpp
cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp
cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp
cfe/trunk/utils/TableGen/ClangOptionDocEmitter.cpp
cfe/trunk/utils/TableGen/NeonEmitter.cpp

Modified: cfe/trunk/include/clang/Basic/Attr.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=328636=328635=328636=diff
==
--- cfe/trunk/include/clang/Basic/Attr.td (original)
+++ cfe/trunk/include/clang/Basic/Attr.td Tue Mar 27 09:50:00 2018
@@ -1889,7 +1889,7 @@ def Target : InheritableAttr {
 template
 ParsedTargetAttr parse(Compare cmp) const {
   ParsedTargetAttr Attrs = parse();
-  std::sort(std::begin(Attrs.Features), std::end(Attrs.Features), cmp);
+  llvm::sort(std::begin(Attrs.Features), std::end(Attrs.Features), cmp);
   return Attrs;
 }
 

Modified: cfe/trunk/include/clang/Serialization/ContinuousRangeMap.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ContinuousRangeMap.h?rev=328636=328635=328636=diff
==
--- cfe/trunk/include/clang/Serialization/ContinuousRangeMap.h (original)
+++ cfe/trunk/include/clang/Serialization/ContinuousRangeMap.h Tue Mar 27 
09:50:00 2018
@@ -117,7 +117,7 @@ public:
 Builder =(const Builder&) = delete;
 
 ~Builder() {
-  std::sort(Self.Rep.begin(), Self.Rep.end(), Compare());
+  llvm::sort(Self.Rep.begin(), Self.Rep.end(), Compare());
   std::unique(Self.Rep.begin(), Self.Rep.end(),
   [](const_reference A, const_reference B) {
 // FIXME: we should not allow any duplicate keys, but there are a lot 
of

Modified: cfe/trunk/lib/AST/ASTContext.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTContext.cpp?rev=328636=328635=328636=diff
==
--- cfe/trunk/lib/AST/ASTContext.cpp (original)
+++ cfe/trunk/lib/AST/ASTContext.cpp Tue Mar 27 09:50:00 2018
@@ -2186,7 +2186,7 @@ structHasUniqueObjectRepresentations(con
   }
 }
 
-std::sort(
+llvm::sort(
 Bases.begin(), Bases.end(), [&](const std::pair ,
 const std::pair ) 
{
   return Layout.getBaseClassOffset(L.first->getAsCXXRecordDecl()) <

Modified: cfe/trunk/lib/AST/ItaniumMangle.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ItaniumMangle.cpp?rev=328636=328635=328636=diff
==
--- cfe/trunk/lib/AST/ItaniumMangle.cpp (original)
+++ cfe/trunk/lib/AST/ItaniumMangle.cpp Tue Mar 27 09:50:00 2018
@@ -323,7 +323,7 @@ class CXXNameMangler {
AdditionalAbiTags->end());
   }
 
-  std::sort(TagList.begin(), TagList.end());
+  llvm::sort(TagList.begin(), 

r326045 - [RISCV] Enable __int128_t and __uint128_t through clang flag

2018-02-24 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Sat Feb 24 19:58:23 2018
New Revision: 326045

URL: http://llvm.org/viewvc/llvm-project?rev=326045=rev
Log:
[RISCV] Enable __int128_t and __uint128_t through clang flag

Summary:
If the flag -fforce-enable-int128 is passed, it will enable support for 
__int128_t and __uint128_t types.
This flag can then be used to build compiler-rt for RISCV32.

Reviewers: asb, kito-cheng, apazos, efriedma

Reviewed By: asb, efriedma

Subscribers: shiva0217, efriedma, jfb, dschuff, sdardis, sbc100, 
jgravelle-google, aheejin, rbar, johnrusso, simoncook, jordy.potman.lists, 
sabuasal, niosHD, cfe-commits

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

Added:
cfe/trunk/test/Driver/types.c
Modified:
cfe/trunk/include/clang/Basic/TargetInfo.h
cfe/trunk/include/clang/Basic/TargetOptions.h
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Basic/Targets/Mips.h
cfe/trunk/lib/Driver/ToolChains/Clang.cpp
cfe/trunk/lib/Frontend/CompilerInvocation.cpp
cfe/trunk/test/CodeGen/riscv32-abi.c
cfe/trunk/test/Preprocessor/init.c

Modified: cfe/trunk/include/clang/Basic/TargetInfo.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetInfo.h?rev=326045=326044=326045=diff
==
--- cfe/trunk/include/clang/Basic/TargetInfo.h (original)
+++ cfe/trunk/include/clang/Basic/TargetInfo.h Sat Feb 24 19:58:23 2018
@@ -358,7 +358,7 @@ public:
 
   /// \brief Determine whether the __int128 type is supported on this target.
   virtual bool hasInt128Type() const {
-return getPointerWidth(0) >= 64;
+return (getPointerWidth(0) >= 64) || getTargetOpts().ForceEnableInt128;
   } // FIXME
 
   /// \brief Determine whether the __float128 type is supported on this target.

Modified: cfe/trunk/include/clang/Basic/TargetOptions.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetOptions.h?rev=326045=326044=326045=diff
==
--- cfe/trunk/include/clang/Basic/TargetOptions.h (original)
+++ cfe/trunk/include/clang/Basic/TargetOptions.h Sat Feb 24 19:58:23 2018
@@ -60,6 +60,9 @@ public:
   /// \brief The list of OpenCL extensions to enable or disable, as written on
   /// the command line.
   std::vector OpenCLExtensionsAsWritten;
+
+  /// \brief If given, enables support for __int128_t and __uint128_t types.
+  bool ForceEnableInt128;
 };
 
 }  // end namespace clang

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=326045=326044=326045=diff
==
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Sat Feb 24 19:58:23 2018
@@ -849,6 +849,12 @@ def fno_signaling_math : Flag<["-"], "fn
 def fjump_tables : Flag<["-"], "fjump-tables">, Group;
 def fno_jump_tables : Flag<["-"], "fno-jump-tables">, Group, 
Flags<[CC1Option]>,
   HelpText<"Do not use jump tables for lowering switches">;
+def fforce_enable_int128 : Flag<["-"], "fforce-enable-int128">,
+  Group, Flags<[CC1Option]>,
+  HelpText<"Enable support for int128_t type">;
+def fno_force_enable_int128 : Flag<["-"], "fno-force-enable-int128">,
+  Group, Flags<[CC1Option]>,
+  HelpText<"Disable support for int128_t type">;
 
 // Begin sanitizer flags. These should all be core options exposed in all 
driver
 // modes.

Modified: cfe/trunk/lib/Basic/Targets/Mips.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/Mips.h?rev=326045=326044=326045=diff
==
--- cfe/trunk/lib/Basic/Targets/Mips.h (original)
+++ cfe/trunk/lib/Basic/Targets/Mips.h Sat Feb 24 19:58:23 2018
@@ -392,7 +392,9 @@ public:
 return llvm::makeArrayRef(NewABIRegAliases);
   }
 
-  bool hasInt128Type() const override { return ABI == "n32" || ABI == "n64"; }
+  bool hasInt128Type() const override {
+return (ABI == "n32" || ABI == "n64") || getTargetOpts().ForceEnableInt128;
+  }
 
   bool validateTarget(DiagnosticsEngine ) const override;
 };

Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=326045=326044=326045=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Sat Feb 24 19:58:23 2018
@@ -4750,6 +4750,12 @@ void Clang::ConstructJob(Compilation ,
 }
   }
 
+  if (Arg *A = Args.getLastArg(options::OPT_fforce_enable_int128,
+   options::OPT_fno_force_enable_int128)) {
+if (A->getOption().matches(options::OPT_fforce_enable_int128))
+  CmdArgs.push_back("-fforce-enable-int128");
+  }
+
   // Finally add the compile 

r319357 - [SourceLocations] Use stronger sort predicate to remove non-deterministic ordering

2017-11-29 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Wed Nov 29 12:55:13 2017
New Revision: 319357

URL: http://llvm.org/viewvc/llvm-project?rev=319357=rev
Log:
[SourceLocations] Use stronger sort predicate to remove non-deterministic 
ordering

Summary:
This fixes the following failure uncovered by D39245:
  Clang :: Index/getcursor-preamble.m

Reviewers: gbenyei, akyrtzi, bkramer, arphaman

Reviewed By: arphaman

Subscribers: arphaman, cfe-commits

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

Modified:
cfe/trunk/tools/libclang/CIndex.cpp

Modified: cfe/trunk/tools/libclang/CIndex.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=319357=319356=319357=diff
==
--- cfe/trunk/tools/libclang/CIndex.cpp (original)
+++ cfe/trunk/tools/libclang/CIndex.cpp Wed Nov 29 12:55:13 2017
@@ -1025,8 +1025,9 @@ bool CursorVisitor::VisitObjCContainerDe
 [](Decl *A, Decl *B) {
 SourceLocation L_A = A->getLocStart();
 SourceLocation L_B = B->getLocStart();
-assert(L_A.isValid() && L_B.isValid());
-return SM.isBeforeInTranslationUnit(L_A, L_B);
+return L_A != L_B ?
+   SM.isBeforeInTranslationUnit(L_A, L_B) :
+   SM.isBeforeInTranslationUnit(A->getLocEnd(), B->getLocEnd());
   });
 
   // Now visit the decls.


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


r318681 - [AutoComplete] Use stronger sort predicate for autocomplete candidates to remove non-deterministic ordering

2017-11-20 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Nov 20 10:49:14 2017
New Revision: 318681

URL: http://llvm.org/viewvc/llvm-project?rev=318681=rev
Log:
[AutoComplete] Use stronger sort predicate for autocomplete candidates to 
remove non-deterministic ordering

Summary: This fixes the failure in test/Driver/autocomplete.c uncovered by 
D39245.

Reviewers: yamaguchi, teemperor, ruiu

Reviewed By: yamaguchi, ruiu

Subscribers: cfe-commits

Tags: #clang

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

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

Modified: cfe/trunk/lib/Driver/Driver.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=318681=318680=318681=diff
==
--- cfe/trunk/lib/Driver/Driver.cpp (original)
+++ cfe/trunk/lib/Driver/Driver.cpp Mon Nov 20 10:49:14 2017
@@ -1198,7 +1198,11 @@ void Driver::handleAutocompletions(Strin
   // case-insensitive sorting for consistency with the -help option
   // which prints out options in the case-insensitive alphabetical order.
   std::sort(SuggestedCompletions.begin(), SuggestedCompletions.end(),
-[](StringRef A, StringRef B) { return A.compare_lower(B) < 0; });
+[](StringRef A, StringRef B) {
+  if (int X = A.compare_lower(B))
+return X < 0;
+  return A.compare(B) > 0;
+});
 
   llvm::outs() << llvm::join(SuggestedCompletions, "\n") << '\n';
 }


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


r318121 - [Sema] Stable sort OverloadCandidates to remove non-deterministic ordering

2017-11-13 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Nov 13 16:22:24 2017
New Revision: 318121

URL: http://llvm.org/viewvc/llvm-project?rev=318121=rev
Log:
[Sema] Stable sort OverloadCandidates to remove non-deterministic ordering

Summary: This fixes failure in Misc/diag-template-diffing.cpp uncovered by 
D39245.

Reviewers: rjmccall, rsmith

Reviewed By: rjmccall

Subscribers: cfe-commits

Tags: #clang

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

Modified:
cfe/trunk/lib/Sema/SemaOverload.cpp

Modified: cfe/trunk/lib/Sema/SemaOverload.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaOverload.cpp?rev=318121=318120=318121=diff
==
--- cfe/trunk/lib/Sema/SemaOverload.cpp (original)
+++ cfe/trunk/lib/Sema/SemaOverload.cpp Mon Nov 13 16:22:24 2017
@@ -10516,7 +10516,7 @@ void OverloadCandidateSet::NoteCandidate
 }
   }
 
-  std::sort(Cands.begin(), Cands.end(),
+  std::stable_sort(Cands.begin(), Cands.end(),
 CompareOverloadCandidatesForDisplay(S, OpLoc, Args.size(), Kind));
 
   bool ReportedAmbiguousConversions = false;


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


r318074 - [clang] Remove redundant return [NFC]

2017-11-13 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Nov 13 11:29:31 2017
New Revision: 318074

URL: http://llvm.org/viewvc/llvm-project?rev=318074=rev
Log:
 [clang] Remove redundant return [NFC]

Reviewers: rsmith, sfantao, mcrosier

Reviewed By: mcrosier

Subscribers: jholewinski, cfe-commits

Tags: #clang

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

Modified:
cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
cfe/trunk/lib/Driver/Driver.cpp
cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp

Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp?rev=318074=318073=318074=diff
==
--- cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp Mon Nov 13 11:29:31 2017
@@ -411,7 +411,6 @@ void CGOpenMPRuntimeNVPTX::emitSpmdKerne
   CodeGen.setAction(Action);
   emitTargetOutlinedFunctionHelper(D, ParentName, OutlinedFn, OutlinedFnID,
IsOffloadEntry, CodeGen);
-  return;
 }
 
 void CGOpenMPRuntimeNVPTX::emitSpmdEntryHeader(

Modified: cfe/trunk/lib/Driver/Driver.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=318074=318073=318074=diff
==
--- cfe/trunk/lib/Driver/Driver.cpp (original)
+++ cfe/trunk/lib/Driver/Driver.cpp Mon Nov 13 11:29:31 2017
@@ -598,8 +598,6 @@ void Driver::CreateOffloadingDeviceToolC
   //
   // TODO: Add support for other offloading programming models here.
   //
-
-  return;
 }
 
 Compilation *Driver::BuildCompilation(ArrayRef ArgList) {

Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp?rev=318074=318073=318074=diff
==
--- cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp Mon Nov 
13 11:29:31 2017
@@ -107,8 +107,6 @@ void ObjCSuperDeallocChecker::checkPreOb
   }
 
   reportUseAfterDealloc(ReceiverSymbol, Desc, M.getOriginExpr(), C);
-
-  return;
 }
 
 void ObjCSuperDeallocChecker::checkPreCall(const CallEvent ,


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


r312677 - [StaticAnalyzer] Fix failures due to the iteration order of ExplodedNode

2017-09-06 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Wed Sep  6 15:54:59 2017
New Revision: 312677

URL: http://llvm.org/viewvc/llvm-project?rev=312677=rev
Log:
[StaticAnalyzer] Fix failures due to the iteration order of ExplodedNode

Summary:
This fixes failures seen in the reverse iteration builder:
http://lab.llvm.org:8011/builders/reverse-iteration/builds/26

Failing Tests (4):
Clang :: Analysis/MisusedMovedObject.cpp
Clang :: Analysis/keychainAPI.m
Clang :: Analysis/loop-unrolling.cpp
Clang :: Analysis/malloc.c

Reviewers: zaks.anna, bkramer, chandlerc, krememek, nikhgupt

Reviewed By: zaks.anna

Subscribers: dcoughlin, NoQ, cfe-commits

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

Modified:
cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h

Modified: 
cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h?rev=312677=312676=312677=diff
==
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h 
(original)
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h 
Wed Sep  6 15:54:59 2017
@@ -27,7 +27,7 @@
 #include "llvm/ADT/DepthFirstIterator.h"
 #include "llvm/ADT/FoldingSet.h"
 #include "llvm/ADT/GraphTraits.h"
-#include "llvm/ADT/SmallPtrSet.h"
+#include "llvm/ADT/SetVector.h"
 #include "llvm/Support/Allocator.h"
 #include "llvm/Support/Casting.h"
 #include 
@@ -404,7 +404,7 @@ private:
 };
 
 class ExplodedNodeSet {
-  typedef llvm::SmallPtrSet ImplTy;
+  typedef llvm::SmallSetVector ImplTy;
   ImplTy Impl;
 
 public:
@@ -424,7 +424,7 @@ public:
 
   unsigned size() const { return Impl.size();  }
   bool empty()const { return Impl.empty(); }
-  bool erase(ExplodedNode *N) { return Impl.erase(N); }
+  bool erase(ExplodedNode *N) { return Impl.remove(N); }
 
   void clear() { Impl.clear(); }
   void insert(const ExplodedNodeSet ) {


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


r311720 - [clang] Remove unit test which uses reverse-iterate flag

2017-08-24 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Thu Aug 24 15:40:32 2017
New Revision: 311720

URL: http://llvm.org/viewvc/llvm-project?rev=311720=rev
Log:
[clang] Remove unit test which uses reverse-iterate flag

Summary: This patch is in response to https://reviews.llvm.org/D35043 which 
removed -reverse-iterate flag.

Reviewers: dblaikie, mehdi_amini

Reviewed By: dblaikie

Subscribers: cfe-commits, llvm-commits

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

Removed:
cfe/trunk/test/Rewriter/objc-modern-metadata-visibility2.mm

Removed: cfe/trunk/test/Rewriter/objc-modern-metadata-visibility2.mm
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Rewriter/objc-modern-metadata-visibility2.mm?rev=311719=auto
==
--- cfe/trunk/test/Rewriter/objc-modern-metadata-visibility2.mm (original)
+++ cfe/trunk/test/Rewriter/objc-modern-metadata-visibility2.mm (removed)
@@ -1,45 +0,0 @@
-// REQUIRES: abi-breaking-checks
-// NOTE: This test has been split from objc-modern-metadata-visibility.mm in
-// order to test with -reverse-iterate as this flag is only present with
-// ABI_BREAKING_CHECKS.
-
-// RUN: %clang_cc1 -E %s -o %t.mm -mllvm -reverse-iterate
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc 
%t.mm -mllvm -reverse-iterate -o - | FileCheck %s
-// rdar://11144048
-
-@class NSString;
-
-@interface NSObject {
-Class isa;
-}
-@end
-
-@interface Sub : NSObject {
-int subIvar;
-NSString *nsstring;
-@private
-id PrivateIvar;
-}
-@end
-
-@implementation Sub
-- (id) MyNSString { return subIvar ? PrivateIvar : nsstring; }
-@end
-
-@interface NSString @end
-@implementation NSString @end
-
-// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" 
__declspec(dllimport) unsigned long OBJC_IVAR_$_Sub$subIvar;
-// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" unsigned long 
OBJC_IVAR_$_Sub$PrivateIvar;
-// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" 
__declspec(dllimport) unsigned long OBJC_IVAR_$_Sub$nsstring;
-// CHECK: #pragma warning(disable:4273)
-// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" 
__declspec(dllexport) unsigned long int OBJC_IVAR_$_Sub$subIvar
-// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" 
__declspec(dllexport) unsigned long int OBJC_IVAR_$_Sub$nsstring
-// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" unsigned long int 
OBJC_IVAR_$_Sub$PrivateIvar
-// CHECK: extern "C" __declspec(dllimport) struct _class_t 
OBJC_METACLASS_$_NSObject;
-// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_METACLASS_$_Sub
-// CHECK: extern "C" __declspec(dllimport) struct _class_t 
OBJC_CLASS_$_NSObject;
-// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_CLASS_$_Sub
-// CHECK: extern "C" __declspec(dllexport) struct _class_t 
OBJC_CLASS_$_NSString;
-// CHECK: extern "C" __declspec(dllexport) struct _class_t 
OBJC_METACLASS_$_NSString
-// CHECK: extern "C" __declspec(dllexport) struct _class_t 
OBJC_CLASS_$_NSString


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


r309081 - [clang] Add ARM64 support to armintr.h for MSVC compatibility

2017-07-25 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Tue Jul 25 22:29:40 2017
New Revision: 309081

URL: http://llvm.org/viewvc/llvm-project?rev=309081=rev
Log:
[clang] Add ARM64 support to armintr.h for MSVC compatibility

Summary: This fixes compiling with headers from the Windows SDK for ARM64.

Reviewers: compnerd, ruiu, mstorsjo

Reviewed By: compnerd, mstorsjo

Subscribers: mgorny, aemerson, javed.absar, kristof.beyls, llvm-commits, 
cfe-commits

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

Added:
cfe/trunk/lib/Headers/arm64intr.h
Modified:
cfe/trunk/lib/Headers/CMakeLists.txt
cfe/trunk/lib/Headers/intrin.h

Modified: cfe/trunk/lib/Headers/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/CMakeLists.txt?rev=309081=309080=309081=diff
==
--- cfe/trunk/lib/Headers/CMakeLists.txt (original)
+++ cfe/trunk/lib/Headers/CMakeLists.txt Tue Jul 25 22:29:40 2017
@@ -4,6 +4,7 @@ set(files
   ammintrin.h
   arm_acle.h
   armintr.h
+  arm64intr.h
   avx2intrin.h
   avx512bwintrin.h
   avx512cdintrin.h

Added: cfe/trunk/lib/Headers/arm64intr.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/arm64intr.h?rev=309081=auto
==
--- cfe/trunk/lib/Headers/arm64intr.h (added)
+++ cfe/trunk/lib/Headers/arm64intr.h Tue Jul 25 22:29:40 2017
@@ -0,0 +1,49 @@
+/*=== arm64intr.h - ARM64 Windows intrinsics 
---===
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to 
deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *===---===
+ */
+
+/* Only include this if we're compiling for the windows platform. */
+#ifndef _MSC_VER
+#include_next 
+#else
+
+#ifndef __ARM64INTR_H
+#define __ARM64INTR_H
+
+typedef enum
+{
+  _ARM64_BARRIER_SY= 0xF,
+  _ARM64_BARRIER_ST= 0xE,
+  _ARM64_BARRIER_LD= 0xD,
+  _ARM64_BARRIER_ISH   = 0xB,
+  _ARM64_BARRIER_ISHST = 0xA,
+  _ARM64_BARRIER_ISHLD = 0x9,
+  _ARM64_BARRIER_NSH   = 0x7,
+  _ARM64_BARRIER_NSHST = 0x6,
+  _ARM64_BARRIER_NSHLD = 0x5,
+  _ARM64_BARRIER_OSH   = 0x3,
+  _ARM64_BARRIER_OSHST = 0x2,
+  _ARM64_BARRIER_OSHLD = 0x1
+} _ARM64INTR_BARRIER_TYPE;
+
+#endif /* __ARM64INTR_H */
+#endif /* _MSC_VER */

Modified: cfe/trunk/lib/Headers/intrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/intrin.h?rev=309081=309080=309081=diff
==
--- cfe/trunk/lib/Headers/intrin.h (original)
+++ cfe/trunk/lib/Headers/intrin.h Tue Jul 25 22:29:40 2017
@@ -38,6 +38,10 @@
 #include 
 #endif
 
+#if defined(_M_ARM64)
+#include 
+#endif
+
 /* For the definition of jmp_buf. */
 #if __STDC_HOSTED__
 #include 


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


r309049 - [clang] Add abi-breaking-checks support to clang

2017-07-25 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Tue Jul 25 16:00:02 2017
New Revision: 309049

URL: http://llvm.org/viewvc/llvm-project?rev=309049=rev
Log:
[clang] Add abi-breaking-checks support to clang

Summary: You can now use REQUIRES:abi-breaking-checks in clang too

Reviewers: chapuni, probinson, ddunbar, jroelofs

Reviewed By: jroelofs

Subscribers: jroelofs, cfe-commits

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

Modified:
cfe/trunk/test/lit.cfg
cfe/trunk/test/lit.site.cfg.in

Modified: cfe/trunk/test/lit.cfg
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/lit.cfg?rev=309049=309048=309049=diff
==
--- cfe/trunk/test/lit.cfg (original)
+++ cfe/trunk/test/lit.cfg Tue Jul 25 16:00:02 2017
@@ -532,3 +532,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 config.enable_abi_breaking_checks == "1":
+config.available_features.add('abi-breaking-checks')

Modified: cfe/trunk/test/lit.site.cfg.in
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/lit.site.cfg.in?rev=309049=309048=309049=diff
==
--- cfe/trunk/test/lit.site.cfg.in (original)
+++ cfe/trunk/test/lit.site.cfg.in Tue Jul 25 16:00:02 2017
@@ -24,6 +24,7 @@ config.clang_examples = @CLANG_BUILD_EXA
 config.enable_shared = @ENABLE_SHARED@
 config.enable_backtrace = @ENABLE_BACKTRACES@
 config.host_arch = "@HOST_ARCH@"
+config.enable_abi_breaking_checks = "@LLVM_ENABLE_ABI_BREAKING_CHECKS@"
 
 # Support substitution of the tools and libs dirs with user parameters. This is
 # used when we can't determine the tool dir at configuration time.


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


r308222 - [COFF, ARM64] Set the data type widths and the data layout string

2017-07-17 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Jul 17 14:10:45 2017
New Revision: 308222

URL: http://llvm.org/viewvc/llvm-project?rev=308222=rev
Log:
[COFF, ARM64] Set the data type widths and the data layout string

Summary: COFF ARM64 is LLP64 platform. So int is 4 bytes, long is 4 bytes and 
long long is 8 bytes.

Reviewers: compnerd, ruiu, rnk, efriedma

Reviewed By: compnerd, efriedma

Subscribers: efriedma, javed.absar, cfe-commits, aemerson, llvm-commits, 
kristof.beyls

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

Added:
cfe/trunk/test/CodeGen/coff-aarch64-type-sizes.c
Modified:
cfe/trunk/lib/Basic/Targets.cpp

Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=308222=308221=308222=diff
==
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Mon Jul 17 14:10:45 2017
@@ -6654,13 +6654,26 @@ public:
   MicrosoftARM64TargetInfo(const llvm::Triple ,
  const TargetOptions )
   : WindowsTargetInfo(Triple, Opts), Triple(Triple) {
+
+// This is an LLP64 platform.
+// int:4, long:4, long long:8, long double:8.
 WCharType = UnsignedShort;
+IntWidth = IntAlign = 32;
+LongWidth = LongAlign = 32;
+DoubleAlign = LongLongAlign = 64;
+LongDoubleWidth = LongDoubleAlign = 64;
+LongDoubleFormat = ::APFloat::IEEEdouble();
+IntMaxType = SignedLongLong;
+Int64Type = SignedLongLong;
 SizeType = UnsignedLongLong;
+PtrDiffType = SignedLongLong;
+IntPtrType = SignedLongLong;
+
 TheCXXABI.set(TargetCXXABI::Microsoft);
   }
 
   void setDataLayout() override {
-resetDataLayout("e-m:w-i64:64-i128:128-n32:64-S128");
+resetDataLayout("e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128");
   }
 
   void getVisualStudioDefines(const LangOptions ,

Added: cfe/trunk/test/CodeGen/coff-aarch64-type-sizes.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/coff-aarch64-type-sizes.c?rev=308222=auto
==
--- cfe/trunk/test/CodeGen/coff-aarch64-type-sizes.c (added)
+++ cfe/trunk/test/CodeGen/coff-aarch64-type-sizes.c Mon Jul 17 14:10:45 2017
@@ -0,0 +1,88 @@
+// RUN: %clang_cc1 -triple aarch64-windows -emit-llvm -w -o - %s | FileCheck %s
+
+// CHECK: target datalayout = 
"e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128"
+// CHECK: target triple = "aarch64--windows-msvc"
+
+int check_short() {
+  return sizeof(short);
+// CHECK: ret i32 2
+}
+
+int check_int() {
+  return sizeof(int);
+// CHECK: ret i32 4
+}
+
+int check_long() {
+  return sizeof(long);
+// CHECK: ret i32 4
+}
+
+int check_longlong() {
+  return sizeof(long long);
+// CHECK: ret i32 8
+}
+
+int check_int128() {
+  return sizeof(__int128);
+// CHECK: ret i32 16
+}
+
+int check_fp16() {
+  return sizeof(__fp16);
+// CHECK: ret i32 2
+}
+
+int check_float() {
+  return sizeof(float);
+// CHECK: ret i32 4
+}
+
+int check_double() {
+  return sizeof(double);
+// CHECK: ret i32 8
+}
+
+int check_longdouble() {
+  return sizeof(long double);
+// CHECK: ret i32 8
+}
+
+int check_floatComplex() {
+  return sizeof(float _Complex);
+// CHECK: ret i32 8
+}
+
+int check_doubleComplex() {
+  return sizeof(double _Complex);
+// CHECK: ret i32 16
+}
+
+int check_longdoubleComplex() {
+  return sizeof(long double _Complex);
+// CHECK: ret i32 16
+}
+
+int check_bool() {
+  return sizeof(_Bool);
+// CHECK: ret i32 1
+}
+
+int check_wchar() {
+  return sizeof(__WCHAR_TYPE__);
+// CHECK: ret i32 2
+}
+
+int check_wchar_unsigned() {
+  return (__WCHAR_TYPE__)-1 > (__WCHAR_TYPE__)0;
+// CHECK: ret i32 1
+}
+
+enum Small {
+  Item
+};
+
+int foo() {
+  return sizeof(enum Small);
+// CHECK: ret i32 4
+}


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


r308192 - [clang] Remove redundant check-prefix=CHECK from tests. NFC.

2017-07-17 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Jul 17 10:31:44 2017
New Revision: 308192

URL: http://llvm.org/viewvc/llvm-project?rev=308192=rev
Log:
[clang] Remove redundant check-prefix=CHECK from tests. NFC.

Reviewers: t.p.northover, mstorsjo, rsmith, mcrosier

Reviewed By: mstorsjo, mcrosier

Subscribers: mcrosier, javed.absar, cfe-commits

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

Modified:
cfe/trunk/test/CodeGen/aarch64-type-sizes.c
cfe/trunk/test/CodeGen/aarch64-varargs-ms.c
cfe/trunk/test/CodeGenCXX/implicit-exception-spec.cpp
cfe/trunk/test/Index/complete-available.m
cfe/trunk/test/Misc/ast-dump-decl.c
cfe/trunk/test/Misc/ast-dump-decl.cpp
cfe/trunk/test/OpenMP/distribute_parallel_for_if_codegen.cpp
cfe/trunk/test/OpenMP/parallel_if_codegen.cpp

Modified: cfe/trunk/test/CodeGen/aarch64-type-sizes.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/aarch64-type-sizes.c?rev=308192=308191=308192=diff
==
--- cfe/trunk/test/CodeGen/aarch64-type-sizes.c (original)
+++ cfe/trunk/test/CodeGen/aarch64-type-sizes.c Mon Jul 17 10:31:44 2017
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple aarch64_be-none-linux-gnu -emit-llvm -w -o - %s | 
FileCheck --check-prefix=CHECK %s
+// RUN: %clang_cc1 -triple aarch64_be-none-linux-gnu -emit-llvm -w -o - %s | 
FileCheck %s
 // char by definition has size 1
 
 // CHECK: target datalayout = 
"E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"

Modified: cfe/trunk/test/CodeGen/aarch64-varargs-ms.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/aarch64-varargs-ms.c?rev=308192=308191=308192=diff
==
--- cfe/trunk/test/CodeGen/aarch64-varargs-ms.c (original)
+++ cfe/trunk/test/CodeGen/aarch64-varargs-ms.c Mon Jul 17 10:31:44 2017
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple arm64-windows-msvc -emit-llvm -o - %s | FileCheck 
--check-prefix=CHECK %s
+// RUN: %clang_cc1 -triple arm64-windows-msvc -emit-llvm -o - %s | FileCheck %s
 
 #include 
 

Modified: cfe/trunk/test/CodeGenCXX/implicit-exception-spec.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/implicit-exception-spec.cpp?rev=308192=308191=308192=diff
==
--- cfe/trunk/test/CodeGenCXX/implicit-exception-spec.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/implicit-exception-spec.cpp Mon Jul 17 10:31:44 
2017
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -emit-llvm -std=c++11 -o - 
-fcxx-exceptions -fexceptions | FileCheck -check-prefix=CHECK %s
+// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -emit-llvm -std=c++11 -o - 
-fcxx-exceptions -fexceptions | FileCheck %s
 
 struct A {
   A();

Modified: cfe/trunk/test/Index/complete-available.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/complete-available.m?rev=308192=308191=308192=diff
==
--- cfe/trunk/test/Index/complete-available.m (original)
+++ cfe/trunk/test/Index/complete-available.m Mon Jul 17 10:31:44 2017
@@ -8,8 +8,8 @@ void atAvailable() {
   }
 }
 
-// RUN: c-index-test -code-completion-at=%s:4:18 %s | FileCheck 
-check-prefix=CHECK %s
-// RUN: c-index-test -code-completion-at=%s:7:27 %s | FileCheck 
-check-prefix=CHECK %s
+// RUN: c-index-test -code-completion-at=%s:4:18 %s | FileCheck %s
+// RUN: c-index-test -code-completion-at=%s:7:27 %s | FileCheck %s
 // CHECK: {TypedText iOS} (40)
 // CHECK: {TypedText iOSApplicationExtension} (40)
 // CHECK: {TypedText macOS} (40)

Modified: cfe/trunk/test/Misc/ast-dump-decl.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/ast-dump-decl.c?rev=308192=308191=308192=diff
==
--- cfe/trunk/test/Misc/ast-dump-decl.c (original)
+++ cfe/trunk/test/Misc/ast-dump-decl.c Mon Jul 17 10:31:44 2017
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump -ast-dump-filter 
Test %s | FileCheck -check-prefix CHECK -strict-whitespace %s
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump -ast-dump-filter 
Test %s | FileCheck -strict-whitespace %s
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump %s | FileCheck 
-check-prefix CHECK-TU -strict-whitespace %s
 // RUN: %clang_cc1 -fmodules -fmodules-local-submodule-visibility 
-fmodule-name=X -triple x86_64-unknown-unknown 
-fmodule-map-file=%S/Inputs/module.modulemap -ast-dump -ast-dump-filter Test %s 
-DMODULES | FileCheck -check-prefix CHECK -check-prefix CHECK-MODULES 
-strict-whitespace %s
 

Modified: cfe/trunk/test/Misc/ast-dump-decl.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/ast-dump-decl.cpp?rev=308192=308191=308192=diff
==
--- 

r307296 - [Objective-C] Fix non-determinism in clang

2017-07-06 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Thu Jul  6 11:49:57 2017
New Revision: 307296

URL: http://llvm.org/viewvc/llvm-project?rev=307296=rev
Log:
 [Objective-C] Fix non-determinism in clang

Summary: Iteration of the unordered Ivars causes 
objc-modern-metadata-visibility.mm (uncovered by reverse iterating SmallPtrSet).

Reviewers: dblaikie, davide, rsmith

Reviewed By: dblaikie

Subscribers: cfe-commits, llvm-commits

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

Added:
cfe/trunk/test/Rewriter/objc-modern-metadata-visibility2.mm
Modified:
cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp

Modified: cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp?rev=307296=307295=307296=diff
==
--- cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp (original)
+++ cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp Thu Jul  6 11:49:57 
2017
@@ -146,7 +146,7 @@ namespace {
 
 llvm::DenseMap RewrittenBlockExprs;
 llvm::DenseMap > ReferencedIvars;
+llvm::SmallSetVector > ReferencedIvars;
 
 // ivar bitfield grouping containers
 llvm::DenseSet ObjCInterefaceHasBitfieldGroups;
@@ -1013,7 +1013,7 @@ void RewriteModernObjC::RewritePropertyI
 Setr = "\nextern \"C\" __declspec(dllimport) "
 "void objc_setProperty (id, SEL, long, id, bool, bool);\n";
   }
-  
+
   RewriteObjCMethodDecl(OID->getContainingInterface(), 
 PD->getSetterMethodDecl(), Setr);
   Setr += "{ ";
@@ -3965,10 +3965,11 @@ void RewriteModernObjC::RewriteIvarOffse
   std::string ) {
   // write out ivar offset symbols which have been referenced in an ivar
   // access expression.
-  llvm::SmallPtrSet Ivars = ReferencedIvars[CDecl];
+  llvm::SmallSetVector Ivars = ReferencedIvars[CDecl];
+
   if (Ivars.empty())
 return;
-  
+
   llvm::DenseSet 
GroupSymbolOutput;
   for (ObjCIvarDecl *IvarDecl : Ivars) {
 const ObjCInterfaceDecl *IDecl = IvarDecl->getContainingInterface();

Added: cfe/trunk/test/Rewriter/objc-modern-metadata-visibility2.mm
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Rewriter/objc-modern-metadata-visibility2.mm?rev=307296=auto
==
--- cfe/trunk/test/Rewriter/objc-modern-metadata-visibility2.mm (added)
+++ cfe/trunk/test/Rewriter/objc-modern-metadata-visibility2.mm Thu Jul  6 
11:49:57 2017
@@ -0,0 +1,45 @@
+// REQUIRES: abi-breaking-checks
+// NOTE: This test has been split from objc-modern-metadata-visibility.mm in
+// order to test with -reverse-iterate as this flag is only present with
+// ABI_BREAKING_CHECKS.
+
+// RUN: %clang_cc1 -E %s -o %t.mm -mllvm -reverse-iterate
+// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc 
%t.mm -mllvm -reverse-iterate -o - | FileCheck %s
+// rdar://11144048
+
+@class NSString;
+
+@interface NSObject {
+Class isa;
+}
+@end
+
+@interface Sub : NSObject {
+int subIvar;
+NSString *nsstring;
+@private
+id PrivateIvar;
+}
+@end
+
+@implementation Sub
+- (id) MyNSString { return subIvar ? PrivateIvar : nsstring; }
+@end
+
+@interface NSString @end
+@implementation NSString @end
+
+// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" 
__declspec(dllimport) unsigned long OBJC_IVAR_$_Sub$subIvar;
+// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" unsigned long 
OBJC_IVAR_$_Sub$PrivateIvar;
+// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" 
__declspec(dllimport) unsigned long OBJC_IVAR_$_Sub$nsstring;
+// CHECK: #pragma warning(disable:4273)
+// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" 
__declspec(dllexport) unsigned long int OBJC_IVAR_$_Sub$subIvar
+// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" 
__declspec(dllexport) unsigned long int OBJC_IVAR_$_Sub$nsstring
+// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" unsigned long int 
OBJC_IVAR_$_Sub$PrivateIvar
+// CHECK: extern "C" __declspec(dllimport) struct _class_t 
OBJC_METACLASS_$_NSObject;
+// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_METACLASS_$_Sub
+// CHECK: extern "C" __declspec(dllimport) struct _class_t 
OBJC_CLASS_$_NSObject;
+// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_CLASS_$_Sub
+// CHECK: extern "C" __declspec(dllexport) struct _class_t 
OBJC_CLASS_$_NSString;
+// CHECK: extern "C" __declspec(dllexport) struct _class_t 
OBJC_METACLASS_$_NSString
+// CHECK: extern "C" __declspec(dllexport) struct _class_t 
OBJC_CLASS_$_NSString


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


r306489 - [COFF, ARM64] Add support for Windows ARM64 COFF format

2017-06-27 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Tue Jun 27 16:56:34 2017
New Revision: 306489

URL: http://llvm.org/viewvc/llvm-project?rev=306489=rev
Log:
[COFF, ARM64] Add support for Windows ARM64 COFF format

Summary: This is the clang part of the initial implementation to support 
Windows ARM64 COFF format.

Reviewers: ruiu, t.p.northover, rnk, compnerd

Reviewed By: ruiu, compnerd

Subscribers: aemerson, kristof.beyls, cfe-commits, llvm-commits

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

Modified:
cfe/trunk/lib/Basic/Targets.cpp
cfe/trunk/test/Preprocessor/predefined-macros.c

Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=306489=306488=306489=diff
==
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Tue Jun 27 16:56:34 2017
@@ -6550,6 +6550,43 @@ public:
   }
 };
 
+class MicrosoftARM64TargetInfo
+: public WindowsTargetInfo {
+  const llvm::Triple Triple;
+
+public:
+  MicrosoftARM64TargetInfo(const llvm::Triple ,
+ const TargetOptions )
+  : WindowsTargetInfo(Triple, Opts), Triple(Triple) {
+WCharType = UnsignedShort;
+SizeType = UnsignedLongLong;
+TheCXXABI.set(TargetCXXABI::Microsoft);
+  }
+
+  void setDataLayout() override {
+resetDataLayout("e-m:w-i64:64-i128:128-n32:64-S128");
+  }
+
+  void getVisualStudioDefines(const LangOptions ,
+  MacroBuilder ) const {
+WindowsTargetInfo::getVisualStudioDefines(Opts,
+   Builder);
+Builder.defineMacro("_WIN32", "1");
+Builder.defineMacro("_WIN64", "1");
+Builder.defineMacro("_M_ARM64", "1");
+  }
+
+  void getTargetDefines(const LangOptions ,
+MacroBuilder ) const override {
+WindowsTargetInfo::getTargetDefines(Opts, Builder);
+getVisualStudioDefines(Opts, Builder);
+  }
+
+  BuiltinVaListKind getBuiltinVaListKind() const override {
+return TargetInfo::CharPtrBuiltinVaList;
+  }
+};
+
 class AArch64beTargetInfo : public AArch64TargetInfo {
   void setDataLayout() override {
 assert(!getTriple().isOSBinFormatMachO());
@@ -9406,6 +9443,8 @@ static TargetInfo *AllocateTarget(const
   return new NetBSDTargetInfo(Triple, Opts);
 case llvm::Triple::OpenBSD:
   return new OpenBSDTargetInfo(Triple, Opts);
+case llvm::Triple::Win32:
+  return new MicrosoftARM64TargetInfo(Triple, Opts);
 default:
   return new AArch64leTargetInfo(Triple, Opts);
 }

Modified: cfe/trunk/test/Preprocessor/predefined-macros.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/predefined-macros.c?rev=306489=306488=306489=diff
==
--- cfe/trunk/test/Preprocessor/predefined-macros.c (original)
+++ cfe/trunk/test/Preprocessor/predefined-macros.c Tue Jun 27 16:56:34 2017
@@ -185,3 +185,9 @@
 // CHECK-CL20-NOT: #define __FAST_RELAXED_MATH__ 1
 // CHECK-FRM: #define __FAST_RELAXED_MATH__ 1
 
+// RUN: %clang_cc1 -triple aarch64-windows %s -E -dM -o - -x cl \
+// RUN:   | FileCheck -match-full-lines %s --check-prefix=CHECK-ARM64-WIN
+
+// CHECK-ARM64-WIN: #define _M_ARM64 1
+// CHECK-ARM64-WIN: #define _WIN32 1
+// CHECK-ARM64-WIN: #define _WIN64 1


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


r304823 - [clang] Remove double semicolons. NFC.

2017-06-06 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Tue Jun  6 14:47:56 2017
New Revision: 304823

URL: http://llvm.org/viewvc/llvm-project?rev=304823=rev
Log:
[clang] Remove double semicolons. NFC.

Reviewers: rsmith, craig.topper, efriedma

Reviewed By: efriedma

Subscribers: efriedma, cfe-commits

Tags: #clang-c

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

Modified:
cfe/trunk/lib/AST/Type.cpp
cfe/trunk/lib/Sema/SemaType.cpp

Modified: cfe/trunk/lib/AST/Type.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Type.cpp?rev=304823=304822=304823=diff
==
--- cfe/trunk/lib/AST/Type.cpp (original)
+++ cfe/trunk/lib/AST/Type.cpp Tue Jun  6 14:47:56 2017
@@ -1344,7 +1344,7 @@ Optional Type::getOb
   } else if (getAs()) {
 ASTContext  = dc->getParentASTContext();
 objectType = ctx.getObjCObjectType(ctx.ObjCBuiltinIdTy, { }, { })
-   ->castAs();;
+   ->castAs();
   } else {
 objectType = getAs();
   }

Modified: cfe/trunk/lib/Sema/SemaType.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaType.cpp?rev=304823=304822=304823=diff
==
--- cfe/trunk/lib/Sema/SemaType.cpp (original)
+++ cfe/trunk/lib/Sema/SemaType.cpp Tue Jun  6 14:47:56 2017
@@ -3367,7 +3367,7 @@ classifyPointerDeclarator(Sema , QualT
 if (auto objcClass = type->getAs()) {
   if (objcClass->getInterface()->getIdentifier() == S.getNSErrorIdent()) {
 if (numNormalPointers == 2 && numTypeSpecifierPointers < 2)
-  return PointerDeclaratorKind::NSErrorPointerPointer;;
+  return PointerDeclaratorKind::NSErrorPointerPointer;
   }
 
   break;


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


r288762 - [clang] Fix D26214: Move error handling out of MC and to the callers.

2016-12-05 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Dec  5 20:49:16 2016
New Revision: 288762

URL: http://llvm.org/viewvc/llvm-project?rev=288762=rev
Log:
[clang] Fix D26214: Move error handling out of MC and to the callers.

Summary: Related llvm patch: https://reviews.llvm.org/D27359

Reviewers: echristo, t.p.northover, rengolin, grosbach, compnerd

Subscribers: mehdi_amini, cfe-commits, llvm-commits

Tags: #clang-c

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

Modified:
cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/defsym.s
cfe/trunk/tools/driver/cc1as_main.cpp

Modified: cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td?rev=288762=288761=288762=diff
==
--- cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td Mon Dec  5 20:49:16 
2016
@@ -277,4 +277,6 @@ def warn_drv_ps4_sdk_dir : Warning<
   InGroup;
 
 def err_drv_unsupported_linker : Error<"unsupported value '%0' for -linker 
option">;
+def err_drv_defsym_invalid_format : Error<"defsym must be of the form: 
sym=value: %0">;
+def err_drv_defsym_invalid_symval : Error<"Value is not an integer: %0">;
 }

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=288762=288761=288762=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Mon Dec  5 20:49:16 2016
@@ -3116,6 +3116,24 @@ static void CollectArgsForIntegratedAsse
  Value.startswith("-mhwdiv") || Value.startswith("-march")) {
 // Do nothing, we'll validate it later.
   } else if (Value == "-defsym") {
+  if (A->getNumValues() != 2) {
+D.Diag(diag::err_drv_defsym_invalid_format) << Value;
+break;
+  }
+  const char *S = A->getValue(1);
+  auto Pair = StringRef(S).split('=');
+  auto Sym = Pair.first;
+  auto SVal = Pair.second;
+
+  if (Sym.empty() || SVal.empty()) {
+D.Diag(diag::err_drv_defsym_invalid_format) << S;
+break;
+  }
+  int64_t IVal;
+  if (SVal.getAsInteger(0, IVal)) {
+D.Diag(diag::err_drv_defsym_invalid_symval) << SVal;
+break;
+  }
   CmdArgs.push_back(Value.data());
   TakeNextArg = true;
   } else {

Modified: cfe/trunk/test/Driver/defsym.s
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/defsym.s?rev=288762=288761=288762=diff
==
--- cfe/trunk/test/Driver/defsym.s (original)
+++ cfe/trunk/test/Driver/defsym.s Mon Dec  5 20:49:16 2016
@@ -17,6 +17,21 @@
 // CHECK-DEFSYM-ERR1: error: defsym must be of the form: sym=value: abc=
 
 // RUN: not %clang -c -integrated-as -o /dev/null %s \
-// RUN: -Wa,-defsym,abc=1a2b3c \
+// RUN: -Wa,-defsym,=123 \
 // RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-DEFSYM-ERR2
-// CHECK-DEFSYM-ERR2: error: Value is not an integer: 1a2b3c
+// CHECK-DEFSYM-ERR2: error: defsym must be of the form: sym=value: =123
+
+// RUN: not %clang -c -integrated-as -o /dev/null %s \
+// RUN: -Wa,-defsym,abc=1a2b3c \
+// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-DEFSYM-ERR3
+// CHECK-DEFSYM-ERR3: error: Value is not an integer: 1a2b3c
+
+// RUN: not %clang -c -integrated-as -o /dev/null %s \
+// RUN: -Wa,-defsym \
+// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-DEFSYM-ERR4
+
+// RUN: not %clang -c -integrated-as -o /dev/null %s \
+// RUN: -Wa,-defsym, \
+// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-DEFSYM-ERR4
+
+// CHECK-DEFSYM-ERR4: error: defsym must be of the form: sym=value: -defsym

Modified: cfe/trunk/tools/driver/cc1as_main.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1as_main.cpp?rev=288762=288761=288762=diff
==
--- cfe/trunk/tools/driver/cc1as_main.cpp (original)
+++ cfe/trunk/tools/driver/cc1as_main.cpp Mon Dec  5 20:49:16 2016
@@ -426,10 +426,13 @@ static bool ExecuteAssembler(AssemblerIn
 
   // Set values for symbols, if any.
   for (auto  : Opts.SymbolDefs) {
-if (Ctx.setSymbolValue(Parser->getStreamer(), S)) {
-  Failed = true;
-  break;
-}
+auto Pair = StringRef(S).split('=');
+auto Sym = Pair.first;
+auto Val = Pair.second;
+int64_t Value;
+// We have already error checked this in the driver.
+Val.getAsInteger(0, Value);
+Ctx.setSymbolValue(Parser->getStreamer(), Sym, Value);
   }
 
   if (!Failed) {


___
cfe-commits mailing list
cfe-commits@lists.llvm.org

r288397 - [clang] Implement support for -defsym assembler option

2016-12-01 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Thu Dec  1 12:42:16 2016
New Revision: 288397

URL: http://llvm.org/viewvc/llvm-project?rev=288397=rev
Log:
[clang] Implement support for -defsym assembler option

Summary:
Adds support for -Wa,-defsym,abc=1 option.

Related llvm patch: https://reviews.llvm.org/D26214

Reviewers: rafael, t.p.northover, colinl, echristo, compnerd, rengolin

Subscribers: mehdi_amini

Tags: #clang-c

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

Added:
cfe/trunk/test/Driver/defsym.s
Modified:
cfe/trunk/include/clang/Driver/CC1Options.td
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/tools/driver/cc1as_main.cpp

Modified: cfe/trunk/include/clang/Driver/CC1Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=288397=288396=288397=diff
==
--- cfe/trunk/include/clang/Driver/CC1Options.td (original)
+++ cfe/trunk/include/clang/Driver/CC1Options.td Thu Dec  1 12:42:16 2016
@@ -743,4 +743,6 @@ def show_inst : Flag<["-"], "show-inst">
 def dwarf_debug_producer : Separate<["-"], "dwarf-debug-producer">,
   HelpText<"The string to embed in the Dwarf debug AT_producer record.">;
 
+def defsym : Separate<["-"], "defsym">,
+  HelpText<"Define a value for a symbol">;
 } // let Flags = [CC1AsOption]

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=288397=288396=288397=diff
==
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Thu Dec  1 12:42:16 2016
@@ -3115,6 +3115,9 @@ static void CollectArgsForIntegratedAsse
   } else if (Value.startswith("-mcpu") || Value.startswith("-mfpu") ||
  Value.startswith("-mhwdiv") || Value.startswith("-march")) {
 // Do nothing, we'll validate it later.
+  } else if (Value == "-defsym") {
+  CmdArgs.push_back(Value.data());
+  TakeNextArg = true;
   } else {
 D.Diag(diag::err_drv_unsupported_option_argument)
 << A->getOption().getName() << Value;

Added: cfe/trunk/test/Driver/defsym.s
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/defsym.s?rev=288397=auto
==
--- cfe/trunk/test/Driver/defsym.s (added)
+++ cfe/trunk/test/Driver/defsym.s Thu Dec  1 12:42:16 2016
@@ -0,0 +1,22 @@
+// RUN: %clang -### -c -integrated-as %s \
+// RUN: -Wa,-defsym,abc=5 -Wa,-defsym,xyz=0xa \
+// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-DEFSYM1
+
+// RUN: %clang -### -c -no-integrated-as %s \
+// RUN: -Wa,-defsym,abc=5 -Wa,-defsym,xyz=0xa \
+// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-DEFSYM1
+
+// CHECK-DEFSYM1: "-defsym"
+// CHECK-DEFSYM1: "abc=5"
+// CHECK-DEFSYM1: "-defsym"
+// CHECK-DEFSYM1: "xyz=0xa"
+
+// RUN: not %clang -c -integrated-as %s \
+// RUN: -Wa,-defsym,abc= \
+// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-DEFSYM-ERR1
+// CHECK-DEFSYM-ERR1: error: defsym must be of the form: sym=value: abc=
+
+// RUN: not %clang -c -integrated-as %s \
+// RUN: -Wa,-defsym,abc=1a2b3c \
+// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-DEFSYM-ERR2
+// CHECK-DEFSYM-ERR2: error: Value is not an integer: 1a2b3c

Modified: cfe/trunk/tools/driver/cc1as_main.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1as_main.cpp?rev=288397=288396=288397=diff
==
--- cfe/trunk/tools/driver/cc1as_main.cpp (original)
+++ cfe/trunk/tools/driver/cc1as_main.cpp Thu Dec  1 12:42:16 2016
@@ -77,6 +77,9 @@ struct AssemblerInvocation {
   /// be a list of strings starting with '+' or '-'.
   std::vector Features;
 
+  /// The list of symbol definitions.
+  std::vector SymbolDefs;
+
   /// @}
   /// @name Language Options
   /// @{
@@ -252,6 +255,7 @@ bool AssemblerInvocation::CreateFromArgs
   Opts.RelocationModel = Args.getLastArgValue(OPT_mrelocation_model, "pic");
   Opts.IncrementalLinkerCompatible =
   Args.hasArg(OPT_mincremental_linker_compatible);
+  Opts.SymbolDefs = Args.getAllArgValues(OPT_defsym);
 
   return Success;
 }
@@ -420,6 +424,14 @@ static bool ExecuteAssembler(AssemblerIn
   if (!TAP)
 Failed = Diags.Report(diag::err_target_unknown_triple) << Opts.Triple;
 
+  // Set values for symbols, if any.
+  for (auto  : Opts.SymbolDefs) {
+if (Ctx.setSymbolValue(Parser->getStreamer(), S)) {
+  Failed = true;
+  break;
+}
+  }
+
   if (!Failed) {
 Parser->setTargetParser(*TAP.get());
 Failed = Parser->Run(Opts.NoInitialTextSection);


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


[PATCH] D27005: [lit] Support custom parsers in parseIntegratedTestScript

2016-11-22 Thread Mandeep Singh Grang via cfe-commits
mgrang added a comment.

I ran pep8 on this script:

line 742: E302 expected 2 blank lines, found 1
line 757: E302 expected 2 blank lines, found 1
line 819: E301 expected 1 blank line, found 0

Can you pep-ify this script?


https://reviews.llvm.org/D27005



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


r286846 - [clang docs] Minor fix in ClangCheck.rst

2016-11-14 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Nov 14 11:31:24 2016
New Revision: 286846

URL: http://llvm.org/viewvc/llvm-project?rev=286846=rev
Log:
[clang docs] Minor fix in ClangCheck.rst

Reviewers: djasper, rengolin

Subscribers: Eugene.Zelenko

Tags: #clang-c

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

Modified:
cfe/trunk/docs/ClangCheck.rst

Modified: cfe/trunk/docs/ClangCheck.rst
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ClangCheck.rst?rev=286846=286845=286846=diff
==
--- cfe/trunk/docs/ClangCheck.rst (original)
+++ cfe/trunk/docs/ClangCheck.rst Mon Nov 14 11:31:24 2016
@@ -31,6 +31,6 @@ do basic error checking and AST dumping.
   1 error generated.
   Error while processing snippet.cc.
 
-The '--' at the end is important as it prevents `clang-check` from search for a
-compilation database. For more information on how to setup and use 
`clang-check`
-in a project, see :doc:`HowToSetupToolingForLLVM`.
+The '--' at the end is important as it prevents :program:`clang-check` from
+searching for a compilation database. For more information on how to setup and
+use :program:`clang-check` in a project, see :doc:`HowToSetupToolingForLLVM`.


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


r285001 - [clang] Remove redundant --check-prefix=CHECK from tests

2016-10-24 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Mon Oct 24 13:53:43 2016
New Revision: 285001

URL: http://llvm.org/viewvc/llvm-project?rev=285001=rev
Log:
[clang] Remove redundant --check-prefix=CHECK from tests

Reviewers: mkuper, rengolin, hans

Subscribers: cfe-commits

Tags: #clang-c

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

Modified:
cfe/trunk/test/CodeGen/ms-mm-align.c
cfe/trunk/test/CodeGen/windows-on-arm-stack-probe-size.c

Modified: cfe/trunk/test/CodeGen/ms-mm-align.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/ms-mm-align.c?rev=285001=285000=285001=diff
==
--- cfe/trunk/test/CodeGen/ms-mm-align.c (original)
+++ cfe/trunk/test/CodeGen/ms-mm-align.c Mon Oct 24 13:53:43 2016
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility 
-fms-compatibility-version=17.00 -target-feature +sse \
 // RUN: -triple i686--windows -emit-llvm %s -o - \
-// RUN: | FileCheck %s -check-prefix CHECK
+// RUN: | FileCheck %s
 
 // intrin.h needs size_t, but -ffreestanding prevents us from getting it from
 // stddef.h.  Work around it with this typedef.

Modified: cfe/trunk/test/CodeGen/windows-on-arm-stack-probe-size.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/windows-on-arm-stack-probe-size.c?rev=285001=285000=285001=diff
==
--- cfe/trunk/test/CodeGen/windows-on-arm-stack-probe-size.c (original)
+++ cfe/trunk/test/CodeGen/windows-on-arm-stack-probe-size.c Mon Oct 24 
13:53:43 2016
@@ -5,7 +5,7 @@
 // RUN: | FileCheck %s -check-prefix CHECK-4096
 
 // RUN: %clang_cc1 -triple thumbv7-windows-itanium -fms-extensions -O2 
-emit-llvm %s -o - \
-// RUN: | FileCheck %s -check-prefix CHECK
+// RUN: | FileCheck %s
 
 __declspec(dllimport) void initialise(signed char buffer[4096]);
 


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


[PATCH] D25893: [clang] Remove redundant --check-prefix=CHECK from tests

2016-10-24 Thread Mandeep Singh Grang via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL285001: [clang] Remove redundant --check-prefix=CHECK from 
tests (authored by mgrang).

Changed prior to commit:
  https://reviews.llvm.org/D25893?vs=75521=75620#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D25893

Files:
  cfe/trunk/test/CodeGen/ms-mm-align.c
  cfe/trunk/test/CodeGen/windows-on-arm-stack-probe-size.c


Index: cfe/trunk/test/CodeGen/ms-mm-align.c
===
--- cfe/trunk/test/CodeGen/ms-mm-align.c
+++ cfe/trunk/test/CodeGen/ms-mm-align.c
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility 
-fms-compatibility-version=17.00 -target-feature +sse \
 // RUN: -triple i686--windows -emit-llvm %s -o - \
-// RUN: | FileCheck %s -check-prefix CHECK
+// RUN: | FileCheck %s
 
 // intrin.h needs size_t, but -ffreestanding prevents us from getting it from
 // stddef.h.  Work around it with this typedef.
Index: cfe/trunk/test/CodeGen/windows-on-arm-stack-probe-size.c
===
--- cfe/trunk/test/CodeGen/windows-on-arm-stack-probe-size.c
+++ cfe/trunk/test/CodeGen/windows-on-arm-stack-probe-size.c
@@ -5,7 +5,7 @@
 // RUN: | FileCheck %s -check-prefix CHECK-4096
 
 // RUN: %clang_cc1 -triple thumbv7-windows-itanium -fms-extensions -O2 
-emit-llvm %s -o - \
-// RUN: | FileCheck %s -check-prefix CHECK
+// RUN: | FileCheck %s
 
 __declspec(dllimport) void initialise(signed char buffer[4096]);
 


Index: cfe/trunk/test/CodeGen/ms-mm-align.c
===
--- cfe/trunk/test/CodeGen/ms-mm-align.c
+++ cfe/trunk/test/CodeGen/ms-mm-align.c
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 -target-feature +sse \
 // RUN: -triple i686--windows -emit-llvm %s -o - \
-// RUN: | FileCheck %s -check-prefix CHECK
+// RUN: | FileCheck %s
 
 // intrin.h needs size_t, but -ffreestanding prevents us from getting it from
 // stddef.h.  Work around it with this typedef.
Index: cfe/trunk/test/CodeGen/windows-on-arm-stack-probe-size.c
===
--- cfe/trunk/test/CodeGen/windows-on-arm-stack-probe-size.c
+++ cfe/trunk/test/CodeGen/windows-on-arm-stack-probe-size.c
@@ -5,7 +5,7 @@
 // RUN: | FileCheck %s -check-prefix CHECK-4096
 
 // RUN: %clang_cc1 -triple thumbv7-windows-itanium -fms-extensions -O2 -emit-llvm %s -o - \
-// RUN: | FileCheck %s -check-prefix CHECK
+// RUN: | FileCheck %s
 
 __declspec(dllimport) void initialise(signed char buffer[4096]);
 
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r284931 - [clang] Limit clang test to ARM and AArch64 only

2016-10-22 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Sat Oct 22 19:53:03 2016
New Revision: 284931

URL: http://llvm.org/viewvc/llvm-project?rev=284931=rev
Log:
[clang] Limit clang test to ARM and AArch64 only

Summary: Limit clang/test/Frontend/gnu-mcount.c to ARM and AArch64 only.

Reviewers: abdulras, honggyu.kim, rengolin

Subscribers: aemerson, rengolin, cfe-commits

Tags: #clang-c

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

Modified:
cfe/trunk/test/Frontend/gnu-mcount.c

Modified: cfe/trunk/test/Frontend/gnu-mcount.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/gnu-mcount.c?rev=284931=284930=284931=diff
==
--- cfe/trunk/test/Frontend/gnu-mcount.c (original)
+++ cfe/trunk/test/Frontend/gnu-mcount.c Sat Oct 22 19:53:03 2016
@@ -1,3 +1,5 @@
+// REQUIRES: arm-registered-target,aarch64-registered-target
+
 // RUN: %clang -target armv7-unknown-none-eabi -pg -S -emit-llvm -o - %s | 
FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI
 // RUN: %clang -target armv7-unknown-none-eabi -pg -meabi gnu -S -emit-llvm -o 
- %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-MEABI-GNU
 // RUN: %clang -target aarch64-unknown-none-eabi -pg -S -emit-llvm -o - %s | 
FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM64-EABI


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


[PATCH] D25893: [clang] Remove redundant --check-prefix=CHECK from tests

2016-10-21 Thread Mandeep Singh Grang via cfe-commits
mgrang created this revision.
mgrang added reviewers: hans, mkuper, rengolin.
mgrang added a subscriber: cfe-commits.
mgrang added a project: clang-c.

https://reviews.llvm.org/D25893

Files:
  test/CodeGen/ms-mm-align.c
  test/CodeGen/windows-on-arm-stack-probe-size.c


Index: test/CodeGen/windows-on-arm-stack-probe-size.c
===
--- test/CodeGen/windows-on-arm-stack-probe-size.c
+++ test/CodeGen/windows-on-arm-stack-probe-size.c
@@ -5,7 +5,7 @@
 // RUN: | FileCheck %s -check-prefix CHECK-4096
 
 // RUN: %clang_cc1 -triple thumbv7-windows-itanium -fms-extensions -O2 
-emit-llvm %s -o - \
-// RUN: | FileCheck %s -check-prefix CHECK
+// RUN: | FileCheck %s
 
 __declspec(dllimport) void initialise(signed char buffer[4096]);
 
Index: test/CodeGen/ms-mm-align.c
===
--- test/CodeGen/ms-mm-align.c
+++ test/CodeGen/ms-mm-align.c
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility 
-fms-compatibility-version=17.00 -target-feature +sse \
 // RUN: -triple i686--windows -emit-llvm %s -o - \
-// RUN: | FileCheck %s -check-prefix CHECK
+// RUN: | FileCheck %s
 
 // intrin.h needs size_t, but -ffreestanding prevents us from getting it from
 // stddef.h.  Work around it with this typedef.


Index: test/CodeGen/windows-on-arm-stack-probe-size.c
===
--- test/CodeGen/windows-on-arm-stack-probe-size.c
+++ test/CodeGen/windows-on-arm-stack-probe-size.c
@@ -5,7 +5,7 @@
 // RUN: | FileCheck %s -check-prefix CHECK-4096
 
 // RUN: %clang_cc1 -triple thumbv7-windows-itanium -fms-extensions -O2 -emit-llvm %s -o - \
-// RUN: | FileCheck %s -check-prefix CHECK
+// RUN: | FileCheck %s
 
 __declspec(dllimport) void initialise(signed char buffer[4096]);
 
Index: test/CodeGen/ms-mm-align.c
===
--- test/CodeGen/ms-mm-align.c
+++ test/CodeGen/ms-mm-align.c
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 -target-feature +sse \
 // RUN: -triple i686--windows -emit-llvm %s -o - \
-// RUN: | FileCheck %s -check-prefix CHECK
+// RUN: | FileCheck %s
 
 // intrin.h needs size_t, but -ffreestanding prevents us from getting it from
 // stddef.h.  Work around it with this typedef.
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25842: [clang] Limit clang test to ARM and AArch64 only

2016-10-20 Thread Mandeep Singh Grang via cfe-commits
mgrang retitled this revision from "[clang] Limit clang test to ARM only" to 
"[clang] Limit clang test to ARM and AArch64 only".
mgrang updated the summary for this revision.
mgrang updated this revision to Diff 75368.
mgrang added a comment.

Test limited only to ARM and AArch64.


https://reviews.llvm.org/D25842

Files:
  test/Frontend/gnu-mcount.c


Index: test/Frontend/gnu-mcount.c
===
--- test/Frontend/gnu-mcount.c
+++ test/Frontend/gnu-mcount.c
@@ -1,3 +1,5 @@
+// REQUIRES: arm-registered-target,aarch64-registered-target
+
 // RUN: %clang -target armv7-unknown-none-eabi -pg -S -emit-llvm -o - %s | 
FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI
 // RUN: %clang -target armv7-unknown-none-eabi -pg -meabi gnu -S -emit-llvm -o 
- %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-MEABI-GNU
 // RUN: %clang -target aarch64-unknown-none-eabi -pg -S -emit-llvm -o - %s | 
FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM64-EABI


Index: test/Frontend/gnu-mcount.c
===
--- test/Frontend/gnu-mcount.c
+++ test/Frontend/gnu-mcount.c
@@ -1,3 +1,5 @@
+// REQUIRES: arm-registered-target,aarch64-registered-target
+
 // RUN: %clang -target armv7-unknown-none-eabi -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI
 // RUN: %clang -target armv7-unknown-none-eabi -pg -meabi gnu -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-MEABI-GNU
 // RUN: %clang -target aarch64-unknown-none-eabi -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM64-EABI
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25842: [clang] Limit clang test to ARM only

2016-10-20 Thread Mandeep Singh Grang via cfe-commits
mgrang created this revision.
mgrang added reviewers: abdulras, honggyu.kim.
mgrang added a subscriber: cfe-commits.
mgrang added a project: clang-c.
Herald added subscribers: rengolin, aemerson.

Limit clang/test/Frontend/gnu-mcount.c to ARM only.


https://reviews.llvm.org/D25842

Files:
  test/Frontend/gnu-mcount.c


Index: test/Frontend/gnu-mcount.c
===
--- test/Frontend/gnu-mcount.c
+++ test/Frontend/gnu-mcount.c
@@ -1,3 +1,5 @@
+// REQUIRES: arm-registered-target
+
 // RUN: %clang -target armv7-unknown-none-eabi -pg -S -emit-llvm -o - %s | 
FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI
 // RUN: %clang -target armv7-unknown-none-eabi -pg -meabi gnu -S -emit-llvm -o 
- %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-MEABI-GNU
 // RUN: %clang -target aarch64-unknown-none-eabi -pg -S -emit-llvm -o - %s | 
FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM64-EABI


Index: test/Frontend/gnu-mcount.c
===
--- test/Frontend/gnu-mcount.c
+++ test/Frontend/gnu-mcount.c
@@ -1,3 +1,5 @@
+// REQUIRES: arm-registered-target
+
 // RUN: %clang -target armv7-unknown-none-eabi -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI
 // RUN: %clang -target armv7-unknown-none-eabi -pg -meabi gnu -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM-EABI-MEABI-GNU
 // RUN: %clang -target aarch64-unknown-none-eabi -pg -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK -check-prefix CHECK-ARM64-EABI
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D19996: New clang option -mpie-copy-relocationss to indicate support for linker copy relocations when linking as PIE

2016-10-19 Thread Mandeep Singh Grang via cfe-commits
mgrang added inline comments.



Comment at: lib/Driver/Tools.cpp:4502
 
+  if (Args.hasFlag(options::OPT_mpie_copy_relocations, 
options::OPT_mno_pie_copy_relocations,
+   false)) {

Please fix indentation.



Comment at: lib/Frontend/CompilerInvocation.cpp:589
   Args.hasArg(OPT_mincremental_linker_compatible);
+  Opts.PIECopyRelocations =
+  Args.hasArg(OPT_mpie_copy_relocations);

You should also check for the negative flag here:

Opts.PIECopyRelocations = Args.hasFlag(options::OPT_mpie_copy_relocations,  
  options::OPT_mno_pie_copy_relocations, false);


https://reviews.llvm.org/D19996



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


r284517 - Fix clang tests

2016-10-18 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Tue Oct 18 14:22:20 2016
New Revision: 284517

URL: http://llvm.org/viewvc/llvm-project?rev=284517=rev
Log:
Fix clang tests

Summary:
Add REQUIRES for target specific tests.

Patch by Azharuddin Mohammed.

Reviewers: apazos, weimingz, rsmith, ddunbar, spop, mgrang

Subscribers: sebpop, llvm-commits

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

Modified:
cfe/trunk/test/Driver/mips-cs.cpp
cfe/trunk/test/Driver/mips-fsf.cpp
cfe/trunk/test/Driver/mips-img-v2.cpp
cfe/trunk/test/Driver/mips-img.cpp
cfe/trunk/test/Driver/sysroot.c

Modified: cfe/trunk/test/Driver/mips-cs.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mips-cs.cpp?rev=284517=284516=284517=diff
==
--- cfe/trunk/test/Driver/mips-cs.cpp (original)
+++ cfe/trunk/test/Driver/mips-cs.cpp Tue Oct 18 14:22:20 2016
@@ -1,3 +1,5 @@
+// REQUIRES: mips-registered-target
+//
 // Check frontend and linker invocations on Mentor Graphics MIPS toolchain.
 //
 // = Big-endian, hard float

Modified: cfe/trunk/test/Driver/mips-fsf.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mips-fsf.cpp?rev=284517=284516=284517=diff
==
--- cfe/trunk/test/Driver/mips-fsf.cpp (original)
+++ cfe/trunk/test/Driver/mips-fsf.cpp Tue Oct 18 14:22:20 2016
@@ -1,3 +1,5 @@
+// REQUIRES: mips-registered-target
+
 // Check frontend and linker invocations on FSF MIPS toolchain.
 //
 // = Big-endian, mips32, hard float

Modified: cfe/trunk/test/Driver/mips-img-v2.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mips-img-v2.cpp?rev=284517=284516=284517=diff
==
--- cfe/trunk/test/Driver/mips-img-v2.cpp (original)
+++ cfe/trunk/test/Driver/mips-img-v2.cpp Tue Oct 18 14:22:20 2016
@@ -1,3 +1,5 @@
+// REQUIRES: mips-registered-target
+
 // Check frontend and linker invocations on the IMG v2 MIPS toolchain.
 
 // -EB -mips32r6 -mhard-float -mabi=32

Modified: cfe/trunk/test/Driver/mips-img.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mips-img.cpp?rev=284517=284516=284517=diff
==
--- cfe/trunk/test/Driver/mips-img.cpp (original)
+++ cfe/trunk/test/Driver/mips-img.cpp Tue Oct 18 14:22:20 2016
@@ -1,3 +1,5 @@
+// REQUIRES: mips-registered-target
+
 // Check frontend and linker invocations on the IMG MIPS toolchain.
 //
 // = Big-endian, mips32r6

Modified: cfe/trunk/test/Driver/sysroot.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/sysroot.c?rev=284517=284516=284517=diff
==
--- cfe/trunk/test/Driver/sysroot.c (original)
+++ cfe/trunk/test/Driver/sysroot.c Tue Oct 18 14:22:20 2016
@@ -1,3 +1,5 @@
+// REQUIRES: x86-registered-target
+//
 // Check that --sysroot= also applies to header search paths.
 // RUN: %clang -target i386-unk-unk --sysroot=/FOO -### -E %s 2> %t1
 // RUN: FileCheck --check-prefix=CHECK-SYSROOTEQ < %t1 %s


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


Re: [PATCH] D22254: [ARM, AArch64] Adds builtins to get current SP and PC

2016-07-13 Thread Mandeep Singh Grang via cfe-commits
mgrang added a comment.

Thanks Renato for your comments. I guess I will not upstream my patches then.

--Mandeep


http://reviews.llvm.org/D22254



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


Re: [PATCH] D22254: [ARM, AArch64] Adds builtins to get current SP and PC

2016-07-12 Thread Mandeep Singh Grang via cfe-commits
mgrang added a comment.

Hi Tim/Renato,

On a similar note, I have a patch which adds the breakpoint intrinsic (for ARM 
and Thumb):
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/CJAHBCFH.html

Could you please let me know if this is something which the community would 
like to support. I can then push my patch.

Here are two other intrinsics which I wanted to implement:
enable_irq: 
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472m/chr1359124996163.html
disable_irq: 
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472m/chr1359125001077.html

The use case for these intrinsics is a customer who makes calls to 
__builtin_arm_breakpoint (and others) in their code base. Currently they 
compile with ARMCC, but LLVM does not have these intrinsics. So porting the 
code to build with LLVM becomes a hassle.
To facilitate customers to switch to LLVM we wanted to implement these 
intrinsics.

Thanks,
Mandeep


http://reviews.llvm.org/D22254



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


Re: [PATCH] D19324: [ASTMatchers] new forEachOverriden matcher

2016-04-20 Thread Mandeep Singh Grang via cfe-commits
mgrang added a subscriber: mgrang.


Comment at: include/clang/ASTMatchers/ASTMatchers.h:3719
@@ +3718,3 @@
+///   matches twice, once with "b" binding "A1::f" and "d" binding "C::f", and
+///   once with "b" binding "A2::f" and "d" binding "C::f", and
+AST_MATCHER_P(CXXMethodDecl, forEachOverridden,

Extraneous ", and" at the end of comment.


http://reviews.llvm.org/D19324



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


r266843 - [Clang] Remove unwanted --check-prefix=CHECK from unit tests. NFC.

2016-04-19 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Tue Apr 19 20:02:18 2016
New Revision: 266843

URL: http://llvm.org/viewvc/llvm-project?rev=266843=rev
Log:
[Clang] Remove unwanted --check-prefix=CHECK from unit tests. NFC.

Summary:
Removed unwanted --check-prefix=CHECK from the following unit tests:
  test/CXX/special/class.copy/implicit-move-def.cpp
  test/CodeGen/cleanup-destslot-simple.c
  test/CodeGen/inline-asm-immediate-ubsan.c
  test/CodeGen/mips-interrupt-attr.c
  test/CodeGenCXX/cfi-stats.cpp
  test/CodeGenCXX/copy-constructor-elim.cpp
  test/CodeGenCXX/microsoft-templ-uuidof.cpp
  test/CodeGenCXX/vtable-linkage.cpp
  test/CodeGenObjC/messages-2.m
  test/Driver/noinline.c
  test/Index/remap-load.c
  test/Index/retain-comments-from-system-headers.c
  test/OpenMP/task_if_codegen.cpp
  test/Preprocessor/comment_save_macro.c

Patch by:  Mandeep Singh Grang (mgrang)

Reviewers: rafael, ABataev, rengolin

Projects: #clang-c

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

Modified:
cfe/trunk/test/CXX/special/class.copy/implicit-move-def.cpp
cfe/trunk/test/CodeGen/cleanup-destslot-simple.c
cfe/trunk/test/CodeGen/inline-asm-immediate-ubsan.c
cfe/trunk/test/CodeGen/mips-interrupt-attr.c
cfe/trunk/test/CodeGenCXX/cfi-stats.cpp
cfe/trunk/test/CodeGenCXX/copy-constructor-elim.cpp
cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp
cfe/trunk/test/CodeGenCXX/vtable-linkage.cpp
cfe/trunk/test/CodeGenObjC/messages-2.m
cfe/trunk/test/Driver/noinline.c
cfe/trunk/test/Index/remap-load.c
cfe/trunk/test/Index/retain-comments-from-system-headers.c
cfe/trunk/test/OpenMP/task_if_codegen.cpp
cfe/trunk/test/Preprocessor/comment_save_macro.c

Modified: cfe/trunk/test/CXX/special/class.copy/implicit-move-def.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/special/class.copy/implicit-move-def.cpp?rev=266843=266842=266843=diff
==
--- cfe/trunk/test/CXX/special/class.copy/implicit-move-def.cpp (original)
+++ cfe/trunk/test/CXX/special/class.copy/implicit-move-def.cpp Tue Apr 19 
20:02:18 2016
@@ -1,4 +1,4 @@
-// FIXME: %clang_cc1 -emit-llvm -triple %itanium_abi_triple -o - -std=c++11 %s 
| FileCheck -check-prefix=CHECK %s
+// FIXME: %clang_cc1 -emit-llvm -triple %itanium_abi_triple -o - -std=c++11 %s 
| FileCheck %s
 // RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple -o - -std=c++11 %s | 
FileCheck -check-prefix=CHECK-ASSIGN %s
 // RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple -o - -std=c++11 %s | 
FileCheck -check-prefix=CHECK-CTOR %s
 

Modified: cfe/trunk/test/CodeGen/cleanup-destslot-simple.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cleanup-destslot-simple.c?rev=266843=266842=266843=diff
==
--- cfe/trunk/test/CodeGen/cleanup-destslot-simple.c (original)
+++ cfe/trunk/test/CodeGen/cleanup-destslot-simple.c Tue Apr 19 20:02:18 2016
@@ -1,8 +1,8 @@
 // RUN: %clang_cc1 -O1 -triple x86_64-none-linux-gnu -emit-llvm 
-debug-info-kind=line-tables-only %s -o - | FileCheck %s --check-prefix=CHECK 
--check-prefix=LIFETIME
 
 // We shouldn't have markers at -O0 or with msan.
-// RUN: %clang_cc1 -O0 -triple x86_64-none-linux-gnu -emit-llvm 
-debug-info-kind=line-tables-only %s -o - | FileCheck %s --check-prefix=CHECK
-// RUN: %clang_cc1 -O1 -triple x86_64-none-linux-gnu -emit-llvm 
-debug-info-kind=line-tables-only %s -o - -fsanitize=memory | FileCheck %s 
--check-prefix=CHECK
+// RUN: %clang_cc1 -O0 -triple x86_64-none-linux-gnu -emit-llvm 
-debug-info-kind=line-tables-only %s -o - | FileCheck %s
+// RUN: %clang_cc1 -O1 -triple x86_64-none-linux-gnu -emit-llvm 
-debug-info-kind=line-tables-only %s -o - -fsanitize=memory | FileCheck %s
 
 // There is no exception to handle here, lifetime.end is not a destructor,
 // so there is no need have cleanup dest slot related code

Modified: cfe/trunk/test/CodeGen/inline-asm-immediate-ubsan.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/inline-asm-immediate-ubsan.c?rev=266843=266842=266843=diff
==
--- cfe/trunk/test/CodeGen/inline-asm-immediate-ubsan.c (original)
+++ cfe/trunk/test/CodeGen/inline-asm-immediate-ubsan.c Tue Apr 19 20:02:18 2016
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s \
 // RUN: -fsanitize=signed-integer-overflow \
-// RUN:   | FileCheck %s --check-prefix=CHECK
+// RUN:   | FileCheck %s
 
 // Verify we emit constants for "immediate" inline assembly arguments.
 // Emitting a scalar expression can make the immediate be generated as

Modified: cfe/trunk/test/CodeGen/mips-interrupt-attr.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/mips-interrupt-attr.c?rev=266843=266842=266843=diff

Re: [PATCH] D19278: [scan-build] fix logic error warnings emitted on clang code base

2016-04-19 Thread Mandeep Singh Grang via cfe-commits
mgrang added a subscriber: mgrang.


Comment at: lib/Sema/SemaDeclCXX.cpp:438
@@ +437,3 @@
+  assert(New && "New function decalration is NULL, aborting merge.");
+  assert(Old && "Old function decalration is NULL, aborting merge.");
+

typo: decalration ==> declaration


http://reviews.llvm.org/D19278



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


Re: [PATCH] D19274: Compilation for Intel MCU (Part 2/3)

2016-04-19 Thread Mandeep Singh Grang via cfe-commits
mgrang added a subscriber: mgrang.


Comment at: lib/Driver/Tools.cpp:580
@@ -573,1 +579,3 @@
+  if (IsIAMCU)
+getToolChain().AddIAMCUIncludeArgs(Args, CmdArgs);
 }

Is it better to move this above in the else part of the condition "if 
(!IsIAMCU)"?


Comment at: lib/Driver/Tools.cpp:3625
@@ +3624,3 @@
+  // C++ is not supported for IAMCU.
+  if(IsIAMCU && types::isCXX(Input.getType()))
+D.Diag(diag::err_drv_cxx_not_supported) << 
getToolChain().getTriple().str();

nitpick: Missing space between if and (


http://reviews.llvm.org/D19274



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


Re: [PATCH] D17821: [OpenCL] Complete image types support

2016-03-23 Thread Mandeep Singh Grang via cfe-commits
mgrang added a subscriber: mgrang.


Comment at: include/clang/AST/ASTContext.h:903
@@ +902,3 @@
+#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix)   
\
+  CanQualType SingletonId;
+#include "clang/AST/OpenCLImageTypes.def"

remove extra spacing in front of the \


http://reviews.llvm.org/D17821



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


Re: [PATCH] D17345: [OpenCL] Improve diagnostics of address spaces for variables inside function

2016-02-17 Thread Mandeep Singh Grang via cfe-commits
mgrang added a subscriber: mgrang.


Comment at: test/SemaOpenCL/storageclass-cl20.cl:9
@@ -8,2 +8,3 @@
 global int *global GP6 = 0;
+global int * GP7 = 0;
 

Pointers should align to the right. Like:

global int *GP7 = 0;


http://reviews.llvm.org/D17345



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


Re: [PATCH] D17343: [OpenCL] Diagnose program scope pointers

2016-02-17 Thread Mandeep Singh Grang via cfe-commits
mgrang added a subscriber: mgrang.


Comment at: lib/Sema/SemaDecl.cpp:6605
@@ +6604,3 @@
+  // Program scope pointers can only point to data at the constant or 
global
+   // address space.
+  const PointerType *PT = nullptr;

Check alignment of comments.


Comment at: lib/Sema/SemaDecl.cpp:6625
@@ +6624,3 @@
+PT = dyn_cast(T.getTypePtr());
+if (PT) {
+  T = PT->getPointeeType();

Can you combine the assignment to PT inside the if condition? Like:

if (foo = something())


Comment at: lib/Sema/SemaDecl.cpp:6629
@@ -6617,1 +6628,3 @@
+}
+  } while (PT);
 } else {

Any reason why this cannot be a while loop instead of a do..while loop?


http://reviews.llvm.org/D17343



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


r260433 - Test commit, fixed "clang" to "Clang" in docs

2016-02-10 Thread Mandeep Singh Grang via cfe-commits
Author: mgrang
Date: Wed Feb 10 15:06:10 2016
New Revision: 260433

URL: http://llvm.org/viewvc/llvm-project?rev=260433=rev
Log:
Test commit, fixed "clang" to "Clang" in docs

Reviewers: weimingz

Subscribers: cfe-commits

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

Modified:
cfe/trunk/www/index.html

Modified: cfe/trunk/www/index.html
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/www/index.html?rev=260433=260432=260433=diff
==
--- cfe/trunk/www/index.html (original)
+++ cfe/trunk/www/index.html Wed Feb 10 15:06:10 2016
@@ -93,7 +93,7 @@
be a production quality C, Objective-C, C++ and Objective-C++ compiler when 
targeting X86-32, X86-64, and ARM (other targets may have caveats, but are 
usually easy to fix).  If you are looking for source analysis or
-   source-to-source transformation tools, clang is probably a great
+   source-to-source transformation tools, Clang is probably a great
solution for you.  Clang supports C++11, please see the C++ status page for more
information.
@@ -104,14 +104,14 @@
   
   Start by getting the code, building it, and
  playing with it.  This will show you the sorts of things we can do
- today and will let you have the "clang experience" first hand: hopefully
+ today and will let you have the "Clang experience" first hand: hopefully
  it will "resonate" with you. :)
   
   Once you've done that, please consider getting
- involved in the clang community.  The clang developers include 
numerous
+ involved in the clang community.  The Clang developers include 
numerous
  volunteer contributors with a variety of backgrounds.  If you're 
  interested in
- following the development of clang, signing up for a mailing list is a 
good
+ following the development of Clang, signing up for a mailing list is a 
good
  way to learn about how the project works.
 
 


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


Re: [PATCH] D17085: Test commit, fixed "clang" to "Clang" in docs

2016-02-10 Thread Mandeep Singh Grang via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL260433: Test commit, fixed "clang" to "Clang" in docs 
(authored by mgrang).

Changed prior to commit:
  http://reviews.llvm.org/D17085?vs=47493=47510#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D17085

Files:
  cfe/trunk/www/index.html

Index: cfe/trunk/www/index.html
===
--- cfe/trunk/www/index.html
+++ cfe/trunk/www/index.html
@@ -93,7 +93,7 @@
be a production quality C, Objective-C, C++ and Objective-C++ compiler when 
targeting X86-32, X86-64, and ARM (other targets may have caveats, but are 
usually easy to fix).  If you are looking for source analysis or
-   source-to-source transformation tools, clang is probably a great
+   source-to-source transformation tools, Clang is probably a great
solution for you.  Clang supports C++11, please see the C++ status page for more
information.
@@ -104,14 +104,14 @@
   
   Start by getting the code, building it, and
  playing with it.  This will show you the sorts of things we can do
- today and will let you have the "clang experience" first hand: hopefully
+ today and will let you have the "Clang experience" first hand: hopefully
  it will "resonate" with you. :)
   
   Once you've done that, please consider getting
- involved in the clang community.  The clang developers include 
numerous
+ involved in the clang community.  The Clang developers include 
numerous
  volunteer contributors with a variety of backgrounds.  If you're 
  interested in
- following the development of clang, signing up for a mailing list is a 
good
+ following the development of Clang, signing up for a mailing list is a 
good
  way to learn about how the project works.
 
 


Index: cfe/trunk/www/index.html
===
--- cfe/trunk/www/index.html
+++ cfe/trunk/www/index.html
@@ -93,7 +93,7 @@
be a production quality C, Objective-C, C++ and Objective-C++ compiler when 
targeting X86-32, X86-64, and ARM (other targets may have caveats, but are 
usually easy to fix).  If you are looking for source analysis or
-   source-to-source transformation tools, clang is probably a great
+   source-to-source transformation tools, Clang is probably a great
solution for you.  Clang supports C++11, please see the C++ status page for more
information.
@@ -104,14 +104,14 @@
   
   Start by getting the code, building it, and
  playing with it.  This will show you the sorts of things we can do
- today and will let you have the "clang experience" first hand: hopefully
+ today and will let you have the "Clang experience" first hand: hopefully
  it will "resonate" with you. :)
   
   Once you've done that, please consider getting
- involved in the clang community.  The clang developers include numerous
+ involved in the clang community.  The Clang developers include numerous
  volunteer contributors with a variety of backgrounds.  If you're 
  interested in
- following the development of clang, signing up for a mailing list is a good
+ following the development of Clang, signing up for a mailing list is a good
  way to learn about how the project works.
 
 
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits