[clang] [llvm] [AArch64][SME] Add intrinsics for multi-vector BFCLAMP (PR #93532)

2024-05-28 Thread Amara Emerson via cfe-commits

aemerson wrote:

You should just re-open the old PR instead of making a new one, or if the fix 
is trivial then just re-commit the change without a PR unless you need someone 
to review it.

https://github.com/llvm/llvm-project/pull/93532
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [Clang][AArch64] Require SVE or SSVE for scalable types. (PR #91356)

2024-05-07 Thread Amara Emerson via cfe-commits

https://github.com/aemerson approved this pull request.


https://github.com/llvm/llvm-project/pull/91356
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] AArch64: add __builtin_arm_trap (PR #85054)

2024-03-13 Thread Amara Emerson via cfe-commits

https://github.com/aemerson approved this pull request.

LGTM.

https://github.com/llvm/llvm-project/pull/85054
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[libc] [compiler-rt] [clang-tools-extra] [flang] [lldb] [llvm] [clang] [GlobalIsel] Combine select of binops (PR #76763)

2024-01-06 Thread Amara Emerson via cfe-commits
Thorsten =?utf-8?q?Sch=C3=BCtt?= ,
Thorsten =?utf-8?q?Sch=C3=BCtt?= ,
Thorsten =?utf-8?q?Sch=C3=BCtt?= 
Message-ID:
In-Reply-To: 


https://github.com/aemerson approved this pull request.


https://github.com/llvm/llvm-project/pull/76763
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[llvm] [clang-tools-extra] [clang] Add out-of-line-atomics support to GlobalISel (PR #74588)

2023-12-17 Thread Amara Emerson via cfe-commits

https://github.com/aemerson commented:

Not an expert on atomics, but why would we have a libcall for -O0 but not for 
O1 in the tests?

https://github.com/llvm/llvm-project/pull/74588
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang-tools-extra] [llvm] Add out-of-line-atomics support to GlobalISel (PR #74588)

2023-12-17 Thread Amara Emerson via cfe-commits

https://github.com/aemerson edited 
https://github.com/llvm/llvm-project/pull/74588
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [llvm] [clang] Add out-of-line-atomics support to GlobalISel (PR #74588)

2023-12-17 Thread Amara Emerson via cfe-commits


@@ -765,6 +766,138 @@ llvm::createMemLibcall(MachineIRBuilder , 
MachineRegisterInfo ,
   return LegalizerHelper::Legalized;
 }
 
+static RTLIB::Libcall getOutlineAtomicLibcall(MachineInstr ) {
+  unsigned Opc = MI.getOpcode();
+  auto  = cast(MI);
+  auto  = AtomicMI.getMMO();
+  auto Ordering = MMO.getMergedOrdering();
+  LLT MemType = MMO.getMemoryType();
+  uint64_t MemSize = MemType.getSizeInBytes();
+  if (!MemType.isScalar())
+return RTLIB::UNKNOWN_LIBCALL;
+
+#define LCALLS(A, B)   
\
+  { A##B##_RELAX, A##B##_ACQ, A##B##_REL, A##B##_ACQ_REL }
+#define LCALL5(A)  
\
+  LCALLS(A, 1), LCALLS(A, 2), LCALLS(A, 4), LCALLS(A, 8), LCALLS(A, 16)
+  switch (Opc) {
+  case TargetOpcode::G_ATOMIC_CMPXCHG:
+  case TargetOpcode::G_ATOMIC_CMPXCHG_WITH_SUCCESS: {
+const RTLIB::Libcall LC[5][4] = {LCALL5(RTLIB::OUTLINE_ATOMIC_CAS)};
+return getOutlineAtomicHelper(LC, Ordering, MemSize);
+  }
+  case TargetOpcode::G_ATOMICRMW_XCHG: {
+const RTLIB::Libcall LC[5][4] = {LCALL5(RTLIB::OUTLINE_ATOMIC_SWP)};
+return getOutlineAtomicHelper(LC, Ordering, MemSize);
+  }
+  case TargetOpcode::G_ATOMICRMW_ADD:
+  case TargetOpcode::G_ATOMICRMW_SUB: {
+const RTLIB::Libcall LC[5][4] = {LCALL5(RTLIB::OUTLINE_ATOMIC_LDADD)};
+return getOutlineAtomicHelper(LC, Ordering, MemSize);
+  }
+  case TargetOpcode::G_ATOMICRMW_AND: {
+const RTLIB::Libcall LC[5][4] = {LCALL5(RTLIB::OUTLINE_ATOMIC_LDCLR)};
+return getOutlineAtomicHelper(LC, Ordering, MemSize);
+  }
+  case TargetOpcode::G_ATOMICRMW_OR: {
+const RTLIB::Libcall LC[5][4] = {LCALL5(RTLIB::OUTLINE_ATOMIC_LDSET)};
+return getOutlineAtomicHelper(LC, Ordering, MemSize);
+  }
+  case TargetOpcode::G_ATOMICRMW_XOR: {
+const RTLIB::Libcall LC[5][4] = {LCALL5(RTLIB::OUTLINE_ATOMIC_LDEOR)};
+return getOutlineAtomicHelper(LC, Ordering, MemSize);
+  }
+  default:
+return RTLIB::UNKNOWN_LIBCALL;
+  }
+#undef LCALLS
+#undef LCALL5
+}
+
+static LegalizerHelper::LegalizeResult
+createAtomicLibcall(MachineIRBuilder , MachineInstr ) {
+  auto  = MIRBuilder.getMF().getFunction().getContext();
+  MachineRegisterInfo  = *MIRBuilder.getMRI();
+
+  // Add all the args, except for the last which is an imm denoting 'tail'.
+  // const CallLowering::ArgInfo ,

aemerson wrote:

stray comment

https://github.com/llvm/llvm-project/pull/74588
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] d7ce580 - Add -fclang-abi-compat=latest to aarch64-sve-vector-init.cpp

2023-11-15 Thread Amara Emerson via cfe-commits

Author: Amara Emerson
Date: 2023-11-15T15:22:12-08:00
New Revision: d7ce58048a586157e709e2dca5f33dd4f41b087d

URL: 
https://github.com/llvm/llvm-project/commit/d7ce58048a586157e709e2dca5f33dd4f41b087d
DIFF: 
https://github.com/llvm/llvm-project/commit/d7ce58048a586157e709e2dca5f33dd4f41b087d.diff

LOG: Add -fclang-abi-compat=latest to aarch64-sve-vector-init.cpp

Added: 


Modified: 
clang/test/CodeGenCXX/aarch64-sve-vector-init.cpp

Removed: 




diff  --git a/clang/test/CodeGenCXX/aarch64-sve-vector-init.cpp 
b/clang/test/CodeGenCXX/aarch64-sve-vector-init.cpp
index 3a57f80110d4738..1a152c1741c177c 100644
--- a/clang/test/CodeGenCXX/aarch64-sve-vector-init.cpp
+++ b/clang/test/CodeGenCXX/aarch64-sve-vector-init.cpp
@@ -1,5 +1,5 @@
 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py 
UTC_ARGS: --version 2
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve 
-emit-llvm -o - %s | FileCheck %s
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64-none-linux-gnu 
-target-feature +sve -emit-llvm -o - %s | FileCheck %s
 
 // CHECK-LABEL: define dso_local void @_Z11test_localsv
 // CHECK-SAME: () #[[ATTR0:[0-9]+]] {



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


[clang] 250d9c8 - [clang][SME][NFC] Add -fclang-abi-compat=latest to tests.

2023-11-15 Thread Amara Emerson via cfe-commits

Author: Amara Emerson
Date: 2023-11-15T14:12:52-08:00
New Revision: 250d9c86c201799755611c425ce6e02fb5867716

URL: 
https://github.com/llvm/llvm-project/commit/250d9c86c201799755611c425ce6e02fb5867716
DIFF: 
https://github.com/llvm/llvm-project/commit/250d9c86c201799755611c425ce6e02fb5867716.diff

LOG: [clang][SME][NFC] Add -fclang-abi-compat=latest to tests.

Added: 


Modified: 
clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add.c
clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_ldr_str_zt.c
clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_max.c
clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_min.c
clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_sub.c
clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_add.c

Removed: 




diff  --git a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add.c 
b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add.c
index dd96dca70d63705..46b4a0386502e30 100644
--- a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add.c
+++ b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add.c
@@ -2,11 +2,11 @@
 
 // REQUIRES: aarch64-registered-target
 
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme2 
-target-feature +sme-i16i64 -target-feature +sme-f64f64 -target-feature +sve -S 
-disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p 
mem2reg,instcombine,tailcallelim | FileCheck %s
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme2 
-target-feature +sme-i16i64 -target-feature +sme-f64f64 -target-feature +sve -S 
-disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p 
mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
-// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu 
-target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 
-target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | 
opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
-// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu 
-target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 
-target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x 
c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s 
-check-prefix=CPP-CHECK
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme2 
-target-feature +sme-i16i64 -target-feature +sme-f64f64 -target-feature +sve -S 
-disable-O0-optnone -Werror -Wall -o /dev/null %s
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64-none-linux-gnu 
-target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 
-target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | 
opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64-none-linux-gnu 
-target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 
-target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x 
c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s 
-check-prefix=CPP-CHECK
+// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -triple 
aarch64-none-linux-gnu -target-feature +sme2 -target-feature +sme-i16i64 
-target-feature +sme-f64f64 -target-feature +sve -S -disable-O0-optnone -Werror 
-Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | 
FileCheck %s
+// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -triple 
aarch64-none-linux-gnu -target-feature +sme2 -target-feature +sme-i16i64 
-target-feature +sme-f64f64 -target-feature +sve -S -disable-O0-optnone -Werror 
-Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | 
FileCheck %s -check-prefix=CPP-CHECK
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64-none-linux-gnu 
-target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 
-target-feature +sve -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
 
 #include 
 

diff  --git a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_ldr_str_zt.c 
b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_ldr_str_zt.c
index 3d70ded6b469ba1..7ae6769c8237f6c 100644
--- a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_ldr_str_zt.c
+++ b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_ldr_str_zt.c
@@ -2,11 +2,11 @@
 
 // REQUIRES: aarch64-registered-target
 
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme2 -S 
-disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p 
mem2reg,instcombine,tailcallelim | FileCheck %s
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme2 -S 
-disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p 
mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
-// 

[clang] f64802e - [Clang][AArch64][Darwin] Enable GlobalISel by default for Darwin ARM64 platforms.

2022-11-07 Thread Amara Emerson via cfe-commits

Author: Amara Emerson
Date: 2022-11-07T15:04:09-08:00
New Revision: f64802e8d3e9db299cad913ffcb734c8d35dc5f0

URL: 
https://github.com/llvm/llvm-project/commit/f64802e8d3e9db299cad913ffcb734c8d35dc5f0
DIFF: 
https://github.com/llvm/llvm-project/commit/f64802e8d3e9db299cad913ffcb734c8d35dc5f0.diff

LOG: [Clang][AArch64][Darwin] Enable GlobalISel by default for Darwin ARM64 
platforms.

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

Added: 


Modified: 
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Driver/ToolChains/Darwin.cpp
clang/test/Driver/global-isel.c

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index afb92dae27d35..bffc8dc611605 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -7209,15 +7209,29 @@ void Clang::ConstructJob(Compilation , const 
JobAction ,
   if (SplitLTOUnit)
 CmdArgs.push_back("-fsplit-lto-unit");
 
-  if (Arg *A = Args.getLastArg(options::OPT_fglobal_isel,
-   options::OPT_fno_global_isel)) {
+  A = Args.getLastArg(options::OPT_fglobal_isel, options::OPT_fno_global_isel);
+  // If a configuration is fully supported, we don't issue any warnings or
+  // remarks.
+  bool IsFullySupported = getToolChain().getTriple().isOSDarwin() &&
+  Triple.getArch() == llvm::Triple::aarch64;
+  if (IsFullySupported) {
+if (A && A->getOption().matches(options::OPT_fno_global_isel)) {
+  CmdArgs.push_back("-mllvm");
+  CmdArgs.push_back("-global-isel=0");
+} else {
+  CmdArgs.push_back("-mllvm");
+  CmdArgs.push_back("-global-isel=1");
+  CmdArgs.push_back("-mllvm");
+  CmdArgs.push_back("-global-isel-abort=0");
+}
+  } else if (A) {
 CmdArgs.push_back("-mllvm");
 if (A->getOption().matches(options::OPT_fglobal_isel)) {
   CmdArgs.push_back("-global-isel=1");
 
   // GISel is on by default on AArch64 -O0, so don't bother adding
   // the fallback remarks for it. Other combinations will add a warning of
-  // some kind.
+  // some kind, unless we're on Darwin.
   bool IsArchSupported = Triple.getArch() == llvm::Triple::aarch64;
   bool IsOptLevelSupported = false;
 

diff  --git a/clang/lib/Driver/ToolChains/Darwin.cpp 
b/clang/lib/Driver/ToolChains/Darwin.cpp
index 39f459e9ef652..661764e6eb00b 100644
--- a/clang/lib/Driver/ToolChains/Darwin.cpp
+++ b/clang/lib/Driver/ToolChains/Darwin.cpp
@@ -381,10 +381,11 @@ void darwin::Linker::AddLinkArgs(Compilation , const 
ArgList ,
   D.Diag(diag::err_drv_bitcode_unsupported_on_toolchain);
   }
 
-  // If GlobalISel is enabled, pass it through to LLVM.
-  if (Arg *A = Args.getLastArg(options::OPT_fglobal_isel,
-   options::OPT_fno_global_isel)) {
-if (A->getOption().matches(options::OPT_fglobal_isel)) {
+  // GlobalISel is enabled by default on AArch64 Darwin.
+  if (getToolChain().getArch() == llvm::Triple::aarch64) {
+Arg *A = Args.getLastArg(options::OPT_fglobal_isel,
+ options::OPT_fno_global_isel);
+if (!A || !A->getOption().matches(options::OPT_fno_global_isel)) {
   CmdArgs.push_back("-mllvm");
   CmdArgs.push_back("-global-isel");
   // Disable abort and fall back to SDAG silently.

diff  --git a/clang/test/Driver/global-isel.c b/clang/test/Driver/global-isel.c
index 66f196b03c1ea..0d3bd2b2fe262 100644
--- a/clang/test/Driver/global-isel.c
+++ b/clang/test/Driver/global-isel.c
@@ -6,6 +6,7 @@
 // RUN: %clang -target aarch64 -fglobal-isel -S %s -### 2>&1 | FileCheck 
--check-prefix=ARM64-DEFAULT %s
 // RUN: %clang -target aarch64 -fglobal-isel -S -O0 %s -### 2>&1 | FileCheck 
--check-prefix=ARM64-O0 %s
 // RUN: %clang -target aarch64 -fglobal-isel -S -O2 %s -### 2>&1 | FileCheck 
--check-prefix=ARM64-O2 %s
+// RUN: %clang -arch arm64 -fglobal-isel -S -O2 %s -### 2>&1 | FileCheck 
--check-prefixes=DARWIN-ARM64-O2,ENABLED %s
 // RUN: %clang -target aarch64 -fglobal-isel -Wno-global-isel -S -O2 %s -### 
2>&1 | FileCheck --check-prefix=ARM64-O2-NOWARN %s
 
 // RUN: %clang -target x86_64 -fglobal-isel -S %s -### 2>&1 | FileCheck 
--check-prefix=X86_64 %s
@@ -27,6 +28,7 @@
 // ARM64-DEFAULT-NOT: warning: -fglobal-isel
 // ARM64-DEFAULT-NOT: "-global-isel-abort=2"
 // ARM64-O0-NOT: warning: -fglobal-isel
+// DARWIN-ARM64-O2-NOT: warning: -fglobal-isel
 // ARM64-O2: warning: -fglobal-isel support is incomplete for this 
architecture at the current optimization level
 // ARM64-O2: "-mllvm" "-global-isel-abort=2"
 // ARM64-O2-NOWARN-NOT: warning: -fglobal-isel



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


[clang] 66af90b - [darwin][driver] Pass through -global-isel LLVM flags to ld.

2021-03-22 Thread Amara Emerson via cfe-commits

Author: Amara Emerson
Date: 2021-03-22T17:23:06-07:00
New Revision: 66af90b46e1fe395806474dde2d49b8dc78bae1a

URL: 
https://github.com/llvm/llvm-project/commit/66af90b46e1fe395806474dde2d49b8dc78bae1a
DIFF: 
https://github.com/llvm/llvm-project/commit/66af90b46e1fe395806474dde2d49b8dc78bae1a.diff

LOG: [darwin][driver] Pass through -global-isel LLVM flags to ld.

GlobalISel is currently not enabled when using -flto since the front-end
-mvllm flags don't get passed through. This change fixes this for Darwin
platforms. We have to do this in the driver because the code generator choice
isn't embedded into the bitcode file.

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

Added: 


Modified: 
clang/lib/Driver/ToolChains/Darwin.cpp
clang/test/Driver/darwin-ld-lto.c

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/Darwin.cpp 
b/clang/lib/Driver/ToolChains/Darwin.cpp
index a09a69f946ef..bc59b6beafc7 100644
--- a/clang/lib/Driver/ToolChains/Darwin.cpp
+++ b/clang/lib/Driver/ToolChains/Darwin.cpp
@@ -373,6 +373,18 @@ void darwin::Linker::AddLinkArgs(Compilation , const 
ArgList ,
   D.Diag(diag::err_drv_bitcode_unsupported_on_toolchain);
   }
 
+  // If GlobalISel is enabled, pass it through to LLVM.
+  if (Arg *A = Args.getLastArg(options::OPT_fglobal_isel,
+   options::OPT_fno_global_isel)) {
+if (A->getOption().matches(options::OPT_fglobal_isel)) {
+  CmdArgs.push_back("-mllvm");
+  CmdArgs.push_back("-global-isel");
+  // Disable abort and fall back to SDAG silently.
+  CmdArgs.push_back("-mllvm");
+  CmdArgs.push_back("-global-isel-abort=0");
+}
+  }
+
   Args.AddLastArg(CmdArgs, options::OPT_prebind);
   Args.AddLastArg(CmdArgs, options::OPT_noprebind);
   Args.AddLastArg(CmdArgs, options::OPT_nofixprebinding);

diff  --git a/clang/test/Driver/darwin-ld-lto.c 
b/clang/test/Driver/darwin-ld-lto.c
index 05e6bccd00f0..252ca148c520 100644
--- a/clang/test/Driver/darwin-ld-lto.c
+++ b/clang/test/Driver/darwin-ld-lto.c
@@ -30,3 +30,11 @@
 // THIN_LTO_OBJECT_PATH: {{ld(.exe)?"}}
 // THIN_LTO_OBJECT_PATH-SAME: "-object_path_lto"
 // THIN_LTO_OBJECT_PATH-SAME: {{thinlto\-[a-zA-Z0-9_]+}}
+
+
+// Check that we pass through -fglobal-isel flags to libLTO.
+// RUN: %clang -target arm64-apple-darwin %s -flto -fglobal-isel -### 2>&1 | \
+// RUN:   FileCheck --check-prefix=GISEL %s
+// GISEL: {{ld(.exe)?"}}
+// GISEL: "-mllvm" "-global-isel"
+// GISEL: "-mllvm" "-global-isel-abort=0"



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


[clang] 3c7e8d6 - Fix sdk version test to use 99.99.99 as a max dummy version instead of 10.99.99.

2020-07-06 Thread Amara Emerson via cfe-commits

Author: Amara Emerson
Date: 2020-07-06T16:53:12-07:00
New Revision: 3c7e8d6d0eb0660fb8fbae98c3e49ca059943416

URL: 
https://github.com/llvm/llvm-project/commit/3c7e8d6d0eb0660fb8fbae98c3e49ca059943416
DIFF: 
https://github.com/llvm/llvm-project/commit/3c7e8d6d0eb0660fb8fbae98c3e49ca059943416.diff

LOG: Fix sdk version test to use 99.99.99 as a max dummy version instead of 
10.99.99.

Was failing on macOS 11 hosts which is > 10.99.99

Added: 


Modified: 
clang/test/Driver/darwin-sdk-vs-os-version.c

Removed: 




diff  --git a/clang/test/Driver/darwin-sdk-vs-os-version.c 
b/clang/test/Driver/darwin-sdk-vs-os-version.c
index 391f4d5a7305..94e52a9036ed 100644
--- a/clang/test/Driver/darwin-sdk-vs-os-version.c
+++ b/clang/test/Driver/darwin-sdk-vs-os-version.c
@@ -2,9 +2,9 @@
 
 // Ensure that we never pick a version that's based on the SDK that's newer 
than
 // the system version:
-// RUN: rm -rf %t/SDKs/MacOSX10.99.99.sdk
-// RUN: mkdir -p %t/SDKs/MacOSX10.99.99.sdk
-// RUN: %clang -target x86_64-apple-darwin -isysroot 
%t/SDKs/MacOSX10.99.99.sdk %s -### 2>&1 \
+// RUN: rm -rf %t/SDKs/MacOSX99.99.99.sdk
+// RUN: mkdir -p %t/SDKs/MacOSX99.99.99.sdk
+// RUN: %clang -target x86_64-apple-darwin -isysroot 
%t/SDKs/MacOSX99.99.99.sdk %s -### 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-MACOSX-SYSTEM-VERSION %s
 
-// CHECK-MACOSX-SYSTEM-VERSION-NOT: 10.99.99"
+// CHECK-MACOSX-SYSTEM-VERSION-NOT: 99.99.99"



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


[clang] 7f1ea92 - Add a new -fglobal-isel option and make -fexperimental-isel an alias for it.

2020-03-31 Thread Amara Emerson via cfe-commits

Author: Amara Emerson
Date: 2020-03-31T12:06:11-07:00
New Revision: 7f1ea924c695f3293ff48f662cd1ec5f44bc1ab6

URL: 
https://github.com/llvm/llvm-project/commit/7f1ea924c695f3293ff48f662cd1ec5f44bc1ab6
DIFF: 
https://github.com/llvm/llvm-project/commit/7f1ea924c695f3293ff48f662cd1ec5f44bc1ab6.diff

LOG: Add a new -fglobal-isel option and make -fexperimental-isel an alias for 
it.

Since GlobalISel is maturing and is already on at -O0 for AArch64, it's not
completely "experimental". Create a more appropriate driver flag and make
the older option an alias for it.

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

Added: 


Modified: 
clang/include/clang/Basic/DiagnosticDriverKinds.td
clang/include/clang/Basic/DiagnosticGroups.td
clang/include/clang/Driver/Options.td
clang/lib/Driver/ToolChains/Clang.cpp
clang/test/Driver/global-isel.c

Removed: 




diff  --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td 
b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index 27ffd562c6de..e35ca843ff56 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -452,13 +452,13 @@ def note_drv_verify_prefix_spelling : Note<
   "-verify prefixes must start with a letter and contain only alphanumeric"
   " characters, hyphens, and underscores">;
 
-def warn_drv_experimental_isel_incomplete : Warning<
-  "-fexperimental-isel support for the '%0' architecture is incomplete">,
-  InGroup;
+def warn_drv_global_isel_incomplete : Warning<
+  "-fglobal-isel support for the '%0' architecture is incomplete">,
+  InGroup;
 
-def warn_drv_experimental_isel_incomplete_opt : Warning<
-  "-fexperimental-isel support is incomplete for this architecture at the 
current optimization level">,
-  InGroup;
+def warn_drv_global_isel_incomplete_opt : Warning<
+  "-fglobal-isel support is incomplete for this architecture at the current 
optimization level">,
+  InGroup;
 
 def warn_drv_moutline_unsupported_opt : Warning<
   "The '%0' architecture does not support -moutline; flag ignored">,

diff  --git a/clang/include/clang/Basic/DiagnosticGroups.td 
b/clang/include/clang/Basic/DiagnosticGroups.td
index 4d930dcd0462..1175476d609b 100644
--- a/clang/include/clang/Basic/DiagnosticGroups.td
+++ b/clang/include/clang/Basic/DiagnosticGroups.td
@@ -1154,8 +1154,8 @@ def UnknownArgument : DiagGroup<"unknown-argument">;
 // compiling OpenCL C/C++ but which is not compatible with the SPIR spec.
 def SpirCompat : DiagGroup<"spir-compat">;
 
-// Warning for the experimental-isel options.
-def ExperimentalISel : DiagGroup<"experimental-isel">;
+// Warning for the GlobalISel options.
+def GlobalISel : DiagGroup<"global-isel">;
 
 // A warning group specifically for warnings related to function
 // multiversioning.

diff  --git a/clang/include/clang/Driver/Options.td 
b/clang/include/clang/Driver/Options.td
index 2e8d4b1d2363..635fe67095ff 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -1249,8 +1249,10 @@ def finline_functions : Flag<["-"], 
"finline-functions">, Group,
 def finline_hint_functions: Flag<["-"], "finline-hint-functions">, 
Group, Flags<[CC1Option]>,
   HelpText<"Inline functions which are (explicitly or implicitly) marked 
inline">;
 def finline : Flag<["-"], "finline">, Group;
+def fglobal_isel : Flag<["-"], "fglobal-isel">, Group, 
+  HelpText<"Enables the global instruction selector">;
 def fexperimental_isel : Flag<["-"], "fexperimental-isel">, 
Group,
-  HelpText<"Enables the experimental global instruction selector">;
+  Alias;
 def fexperimental_new_pass_manager : Flag<["-"], 
"fexperimental-new-pass-manager">,
   Group, Flags<[CC1Option]>,
   HelpText<"Enables an experimental new pass manager in LLVM.">;
@@ -1530,8 +1532,10 @@ def fno_exceptions : Flag<["-"], "fno-exceptions">, 
Group;
 def fno_gnu_keywords : Flag<["-"], "fno-gnu-keywords">, Group, 
Flags<[CC1Option]>;
 def fno_inline_functions : Flag<["-"], "fno-inline-functions">, 
Group, Flags<[CC1Option]>;
 def fno_inline : Flag<["-"], "fno-inline">, Group, 
Flags<[CC1Option]>;
+def fno_global_isel : Flag<["-"], "fno-global-isel">, Group,
+  HelpText<"Disables the global instruction selector">;
 def fno_experimental_isel : Flag<["-"], "fno-experimental-isel">, 
Group,
-  HelpText<"Disables the experimental global instruction selector">;
+  Alias;
 def fno_experimental_new_pass_manager : Flag<["-"], 
"fno-experimental-new-pass-manager">,
   Group, Flags<[CC1Option]>,
   HelpText<"Disables an experimental new pass manager in LLVM.">;

diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index 80a957bf4579..f22e1082357d 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -6062,10 +6062,10 @@ void Clang::ConstructJob(Compilation , const 
JobAction ,
   if 

Re: r366123 - ARM MTE stack sanitizer.

2019-07-15 Thread Amara Emerson via cfe-commits
Hi Evgeniy,

This commit looks like it broke the lldb bot: 
http://green.lab.llvm.org/green/job/lldb-cmake/31011/ 


Can you take a look?

Amara

> On Jul 15, 2019, at 1:02 PM, Evgeniy Stepanov via cfe-commits 
>  wrote:
> 
> Author: eugenis
> Date: Mon Jul 15 13:02:23 2019
> New Revision: 366123
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=366123=rev
> Log:
> ARM MTE stack sanitizer.
> 
> Add "memtag" sanitizer that detects and mitigates stack memory issues
> using armv8.5 Memory Tagging Extension.
> 
> It is similar in principle to HWASan, which is a software implementation
> of the same idea, but there are enough differencies to warrant a new
> sanitizer type IMHO. It is also expected to have very different
> performance properties.
> 
> The new sanitizer does not have a runtime library (it may grow one
> later, along with a "debugging" mode). Similar to SafeStack and
> StackProtector, the instrumentation pass (in a follow up change) will be
> inserted in all cases, but will only affect functions marked with the
> new sanitize_memtag attribute.
> 
> Reviewers: pcc, hctim, vitalybuka, ostannard
> 
> Subscribers: srhines, mehdi_amini, javed.absar, kristof.beyls, hiraditya, 
> cryptoad, steven_wu, dexonsmith, cfe-commits, llvm-commits
> 
> Tags: #clang, #llvm
> 
> Differential Revision: https://reviews.llvm.org/D64169
> 
> Added:
>cfe/trunk/test/CodeGen/memtag-attr.cpp
>cfe/trunk/test/Lexer/has_feature_memtag_sanitizer.cpp
> Modified:
>cfe/trunk/include/clang/Basic/Features.def
>cfe/trunk/include/clang/Basic/Sanitizers.def
>cfe/trunk/lib/CodeGen/CGDeclCXX.cpp
>cfe/trunk/lib/CodeGen/CodeGenFunction.cpp
>cfe/trunk/lib/CodeGen/CodeGenModule.cpp
>cfe/trunk/lib/CodeGen/SanitizerMetadata.cpp
>cfe/trunk/lib/Driver/SanitizerArgs.cpp
>cfe/trunk/lib/Driver/ToolChains/Linux.cpp
>cfe/trunk/test/Driver/fsanitize.c
>cfe/trunk/test/SemaCXX/attr-no-sanitize.cpp
> 
> Modified: cfe/trunk/include/clang/Basic/Features.def
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Features.def?rev=366123=366122=366123=diff
> ==
> --- cfe/trunk/include/clang/Basic/Features.def (original)
> +++ cfe/trunk/include/clang/Basic/Features.def Mon Jul 15 13:02:23 2019
> @@ -42,6 +42,7 @@ FEATURE(address_sanitizer,
> FEATURE(hwaddress_sanitizer,
> LangOpts.Sanitize.hasOneOf(SanitizerKind::HWAddress |
>SanitizerKind::KernelHWAddress))
> +FEATURE(memtag_sanitizer, LangOpts.Sanitize.has(SanitizerKind::MemTag))
> FEATURE(xray_instrument, LangOpts.XRayInstrument)
> FEATURE(undefined_behavior_sanitizer,
> LangOpts.Sanitize.hasOneOf(SanitizerKind::Undefined))
> 
> Modified: cfe/trunk/include/clang/Basic/Sanitizers.def
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Sanitizers.def?rev=366123=366122=366123=diff
> ==
> --- cfe/trunk/include/clang/Basic/Sanitizers.def (original)
> +++ cfe/trunk/include/clang/Basic/Sanitizers.def Mon Jul 15 13:02:23 2019
> @@ -55,6 +55,9 @@ SANITIZER("hwaddress", HWAddress)
> // Kernel Hardware-assisted AddressSanitizer (KHWASan)
> SANITIZER("kernel-hwaddress", KernelHWAddress)
> 
> +// A variant of AddressSanitizer using AArch64 MTE extension.
> +SANITIZER("memtag", MemTag)
> +
> // MemorySanitizer
> SANITIZER("memory", Memory)
> 
> 
> Modified: cfe/trunk/lib/CodeGen/CGDeclCXX.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDeclCXX.cpp?rev=366123=366122=366123=diff
> ==
> --- cfe/trunk/lib/CodeGen/CGDeclCXX.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGDeclCXX.cpp Mon Jul 15 13:02:23 2019
> @@ -369,6 +369,10 @@ llvm::Function *CodeGenModule::CreateGlo
>   !isInSanitizerBlacklist(SanitizerKind::KernelHWAddress, Fn, Loc))
> Fn->addFnAttr(llvm::Attribute::SanitizeHWAddress);
> 
> +  if (getLangOpts().Sanitize.has(SanitizerKind::MemTag) &&
> +  !isInSanitizerBlacklist(SanitizerKind::MemTag, Fn, Loc))
> +Fn->addFnAttr(llvm::Attribute::SanitizeMemTag);
> +
>   if (getLangOpts().Sanitize.has(SanitizerKind::Thread) &&
>   !isInSanitizerBlacklist(SanitizerKind::Thread, Fn, Loc))
> Fn->addFnAttr(llvm::Attribute::SanitizeThread);
> 
> Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.cpp?rev=366123=366122=366123=diff
> ==
> --- cfe/trunk/lib/CodeGen/CodeGenFunction.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CodeGenFunction.cpp Mon Jul 15 13:02:23 2019
> @@ -696,6 +696,8 @@ void CodeGenFunction::StartFunction(Glob
> Fn->addFnAttr(llvm::Attribute::SanitizeAddress);
>   if 

r360483 - [Darwin] Introduce a new flag, -fapple-link-rtlib that forces linking of the builtins library.

2019-05-10 Thread Amara Emerson via cfe-commits
Author: aemerson
Date: Fri May 10 16:24:20 2019
New Revision: 360483

URL: http://llvm.org/viewvc/llvm-project?rev=360483=rev
Log:
[Darwin] Introduce a new flag, -fapple-link-rtlib that forces linking of the 
builtins library.

This driver flag is useful when users want to link against the compiler's
builtins, but nothing else, and so use flags like -nostdlib.

Darwin can't use -nolibc & nostdlib++ like other platforms on because we
disable all runtime lib linking with -static, which we still want to have
an option to link with the builtins.

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

Added:
cfe/trunk/test/Driver/darwin-fapple-link-rtlib.c
Modified:
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Driver/ToolChains/Darwin.cpp
cfe/trunk/lib/Driver/ToolChains/Darwin.h

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=360483=360482=360483=diff
==
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Fri May 10 16:24:20 2019
@@ -1248,6 +1248,8 @@ def fno_fine_grained_bitfield_accesses :
 def flat__namespace : Flag<["-"], "flat_namespace">;
 def flax_vector_conversions : Flag<["-"], "flax-vector-conversions">, 
Group;
 def flimited_precision_EQ : Joined<["-"], "flimited-precision=">, 
Group;
+def fapple_link_rtlib : Flag<["-"], "fapple-link-rtlib">, Group,
+  HelpText<"Force linking the clang builtins runtime library">;
 def flto_EQ : Joined<["-"], "flto=">, Flags<[CoreOption, CC1Option]>, 
Group,
   HelpText<"Set LTO mode to either 'full' or 'thin'">, Values<"thin,full">;
 def flto : Flag<["-"], "flto">, Flags<[CoreOption, CC1Option]>, Group,

Modified: cfe/trunk/lib/Driver/ToolChains/Darwin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Darwin.cpp?rev=360483=360482=360483=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Darwin.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Darwin.cpp Fri May 10 16:24:20 2019
@@ -593,15 +593,26 @@ void darwin::Linker::ConstructJob(Compil
 
   if (getToolChain().ShouldLinkCXXStdlib(Args))
 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
-  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
-// link_ssp spec is empty.
 
-// Let the tool chain choose which runtime library to link.
-getMachOToolChain().AddLinkRuntimeLibArgs(Args, CmdArgs);
+  bool NoStdOrDefaultLibs =
+  Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs);
+  bool ForceLinkBuiltins = Args.hasArg(options::OPT_fapple_link_rtlib);
+  if (!NoStdOrDefaultLibs || ForceLinkBuiltins) {
+// link_ssp spec is empty.
 
-// No need to do anything for pthreads. Claim argument to avoid warning.
-Args.ClaimAllArgs(options::OPT_pthread);
-Args.ClaimAllArgs(options::OPT_pthreads);
+// If we have both -nostdlib/nodefaultlibs and -fapple-link-rtlib then
+// we just want to link the builtins, not the other libs like libSystem.
+if (NoStdOrDefaultLibs && ForceLinkBuiltins) {
+  getMachOToolChain().AddLinkRuntimeLib(Args, CmdArgs, "builtins");
+} else {
+  // Let the tool chain choose which runtime library to link.
+  getMachOToolChain().AddLinkRuntimeLibArgs(Args, CmdArgs,
+ForceLinkBuiltins);
+
+  // No need to do anything for pthreads. Claim argument to avoid warning.
+  Args.ClaimAllArgs(options::OPT_pthread);
+  Args.ClaimAllArgs(options::OPT_pthreads);
+}
   }
 
   if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) {
@@ -1128,7 +1139,8 @@ ToolChain::RuntimeLibType DarwinClang::G
 }
 
 void DarwinClang::AddLinkRuntimeLibArgs(const ArgList ,
-ArgStringList ) const {
+ArgStringList ,
+bool ForceLinkBuiltinRT) const {
   // Call once to ensure diagnostic is printed if wrong value was specified
   GetRuntimeLibType(Args);
 
@@ -1136,8 +1148,11 @@ void DarwinClang::AddLinkRuntimeLibArgs(
   // libraries with -static.
   if (Args.hasArg(options::OPT_static) ||
   Args.hasArg(options::OPT_fapple_kext) ||
-  Args.hasArg(options::OPT_mkernel))
+  Args.hasArg(options::OPT_mkernel)) {
+if (ForceLinkBuiltinRT)
+  AddLinkRuntimeLib(Args, CmdArgs, "builtins");
 return;
+  }
 
   // Reject -static-libgcc for now, we can deal with this when and if someone
   // cares. This is useful in situations where someone wants to statically link
@@ -2106,7 +2121,8 @@ DerivedArgList *MachO::TranslateArgs(con
 }
 
 void MachO::AddLinkRuntimeLibArgs(const ArgList ,
-  ArgStringList ) const {
+  ArgStringList ,
+   

r356722 - [AArch64] Split the neon.addp intrinsic into integer and fp variants.

2019-03-21 Thread Amara Emerson via cfe-commits
Author: aemerson
Date: Thu Mar 21 15:31:37 2019
New Revision: 356722

URL: http://llvm.org/viewvc/llvm-project?rev=356722=rev
Log:
[AArch64] Split the neon.addp intrinsic into integer and fp variants.

This is the result of discussions on the list about how to deal with intrinsics
which require codegen to disambiguate them via only the integer/fp overloads.
It causes problems for GlobalISel as some of that information is lost during
translation, while with other operations like IR instructions the information is
encoded into the instruction opcode.

This patch changes clang to emit the new faddp intrinsic if the vector operands
to the builtin have FP element types. LLVM IR AutoUpgrade has been taught to
upgrade existing calls to aarch64.neon.addp with fp vector arguments, and
we remove the workarounds introduced for GlobalISel in r355865.

This is a more permanent solution to PR40968.

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

Modified:
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/test/CodeGen/aarch64-neon-intrinsics.c
cfe/trunk/test/CodeGen/aarch64-v8.2a-neon-intrinsics.c

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=356722=356721=356722=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Thu Mar 21 15:31:37 2019
@@ -5095,6 +5095,13 @@ Value *CodeGenFunction::EmitCommonNeonBu
 
   switch (BuiltinID) {
   default: break;
+  case NEON::BI__builtin_neon_vpadd_v:
+  case NEON::BI__builtin_neon_vpaddq_v:
+// We don't allow fp/int overloading of intrinsics.
+if (VTy->getElementType()->isFloatingPointTy() &&
+Int == Intrinsic::aarch64_neon_addp)
+  Int = Intrinsic::aarch64_neon_faddp;
+break;
   case NEON::BI__builtin_neon_vabs_v:
   case NEON::BI__builtin_neon_vabsq_v:
 if (VTy->getElementType()->isFloatingPointTy())

Modified: cfe/trunk/test/CodeGen/aarch64-neon-intrinsics.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/aarch64-neon-intrinsics.c?rev=356722=356721=356722=diff
==
--- cfe/trunk/test/CodeGen/aarch64-neon-intrinsics.c (original)
+++ cfe/trunk/test/CodeGen/aarch64-neon-intrinsics.c Thu Mar 21 15:31:37 2019
@@ -4411,7 +4411,7 @@ uint32x2_t test_vpadd_u32(uint32x2_t a,
 // CHECK-LABEL: @test_vpadd_f32(
 // CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
 // CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
-// CHECK:   [[VPADD_V2_I:%.*]] = call <2 x float> 
@llvm.aarch64.neon.addp.v2f32(<2 x float> %a, <2 x float> %b)
+// CHECK:   [[VPADD_V2_I:%.*]] = call <2 x float> 
@llvm.aarch64.neon.faddp.v2f32(<2 x float> %a, <2 x float> %b)
 // CHECK:   [[VPADD_V3_I:%.*]] = bitcast <2 x float> [[VPADD_V2_I]] to <8 x i8>
 // CHECK:   ret <2 x float> [[VPADD_V2_I]]
 float32x2_t test_vpadd_f32(float32x2_t a, float32x2_t b) {
@@ -4475,7 +4475,7 @@ uint32x4_t test_vpaddq_u32(uint32x4_t a,
 // CHECK-LABEL: @test_vpaddq_f32(
 // CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
 // CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
-// CHECK:   [[VPADDQ_V2_I:%.*]] = call <4 x float> 
@llvm.aarch64.neon.addp.v4f32(<4 x float> %a, <4 x float> %b)
+// CHECK:   [[VPADDQ_V2_I:%.*]] = call <4 x float> 
@llvm.aarch64.neon.faddp.v4f32(<4 x float> %a, <4 x float> %b)
 // CHECK:   [[VPADDQ_V3_I:%.*]] = bitcast <4 x float> [[VPADDQ_V2_I]] to <16 x 
i8>
 // CHECK:   ret <4 x float> [[VPADDQ_V2_I]]
 float32x4_t test_vpaddq_f32(float32x4_t a, float32x4_t b) {
@@ -4485,7 +4485,7 @@ float32x4_t test_vpaddq_f32(float32x4_t
 // CHECK-LABEL: @test_vpaddq_f64(
 // CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
 // CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
-// CHECK:   [[VPADDQ_V2_I:%.*]] = call <2 x double> 
@llvm.aarch64.neon.addp.v2f64(<2 x double> %a, <2 x double> %b)
+// CHECK:   [[VPADDQ_V2_I:%.*]] = call <2 x double> 
@llvm.aarch64.neon.faddp.v2f64(<2 x double> %a, <2 x double> %b)
 // CHECK:   [[VPADDQ_V3_I:%.*]] = bitcast <2 x double> [[VPADDQ_V2_I]] to <16 
x i8>
 // CHECK:   ret <2 x double> [[VPADDQ_V2_I]]
 float64x2_t test_vpaddq_f64(float64x2_t a, float64x2_t b) {

Modified: cfe/trunk/test/CodeGen/aarch64-v8.2a-neon-intrinsics.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/aarch64-v8.2a-neon-intrinsics.c?rev=356722=356721=356722=diff
==
--- cfe/trunk/test/CodeGen/aarch64-v8.2a-neon-intrinsics.c (original)
+++ cfe/trunk/test/CodeGen/aarch64-v8.2a-neon-intrinsics.c Thu Mar 21 15:31:37 
2019
@@ -736,14 +736,14 @@ float16x8_t test_vmulxq_f16(float16x8_t
 }
 
 // CHECK-LABEL: test_vpadd_f16
-// CHECK:  [[ADD:%.*]] = call <4 x half> @llvm.aarch64.neon.addp.v4f16(<4 x 
half> %a, <4 x half> %b)
+// CHECK:  [[ADD:%.*]] 

[clang-tools-extra] r351100 - Revert r351051 "[clangd] Unlink VFS working dir from OS working dir."

2019-01-14 Thread Amara Emerson via cfe-commits
Author: aemerson
Date: Mon Jan 14 10:59:17 2019
New Revision: 351100

URL: http://llvm.org/viewvc/llvm-project?rev=351100=rev
Log:
Revert r351051 "[clangd] Unlink VFS working dir from OS working dir."

The llvm commit r351050 broke some bots and was reverted.

Modified:
clang-tools-extra/trunk/clangd/FSProvider.cpp

Modified: clang-tools-extra/trunk/clangd/FSProvider.cpp
URL: 
http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/FSProvider.cpp?rev=351100=351099=351100=diff
==
--- clang-tools-extra/trunk/clangd/FSProvider.cpp (original)
+++ clang-tools-extra/trunk/clangd/FSProvider.cpp Mon Jan 14 10:59:17 2019
@@ -75,10 +75,9 @@ clang::clangd::RealFileSystemProvider::g
 // FIXME: Try to use a similar approach in Sema instead of relying on
 //propagation of the 'isVolatile' flag through all layers.
 #ifdef _WIN32
-  return new VolatileFileSystem(
-  llvm::vfs::createPhysicalFileSystem().release());
+  return new VolatileFileSystem(llvm::vfs::getRealFileSystem());
 #else
-  return llvm::vfs::createPhysicalFileSystem().release();
+  return llvm::vfs::getRealFileSystem();
 #endif
 }
 } // namespace clangd


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


Re: [clang-tools-extra] r350847 - [clangd] Introduce loading of shards within auto-index

2019-01-13 Thread Amara Emerson via cfe-commits
Hi Kadir,

It seems this commit started causing failures on builds in green dragon, 
starting from: 
http://green.lab.llvm.org/green/job/clang-stage1-configure-RA/52811/ 


 Can you please take a look, and revert if the fix isn’t straight forward.

Thanks,
Amara

> On Jan 10, 2019, at 9:03 AM, Kadir Cetinkaya via cfe-commits 
>  wrote:
> 
> Author: kadircet
> Date: Thu Jan 10 09:03:04 2019
> New Revision: 350847
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=350847=rev
> Log:
> [clangd] Introduce loading of shards within auto-index
> 
> Summary:
> Whenever a change happens on a CDB, load shards associated with that
> CDB before issuing re-index actions.
> 
> Reviewers: ilya-biryukov
> 
> Reviewed By: ilya-biryukov
> 
> Subscribers: ioeric, MaskRay, jkorous, arphaman, cfe-commits
> 
> Differential Revision: https://reviews.llvm.org/D55224
> 
> Modified:
>clang-tools-extra/trunk/clangd/index/Background.cpp
>clang-tools-extra/trunk/clangd/index/Background.h
>clang-tools-extra/trunk/test/clangd/background-index.test
>clang-tools-extra/trunk/unittests/clangd/BackgroundIndexTests.cpp
> 
> Modified: clang-tools-extra/trunk/clangd/index/Background.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/Background.cpp?rev=350847=350846=350847=diff
> ==
> --- clang-tools-extra/trunk/clangd/index/Background.cpp (original)
> +++ clang-tools-extra/trunk/clangd/index/Background.cpp Thu Jan 10 09:03:04 
> 2019
> @@ -115,6 +115,19 @@ createFileFilter(const llvm::StringMap   };
> }
> 
> +// We cannot use vfs->makeAbsolute because Cmd.FileName is either absolute or
> +// relative to Cmd.Directory, which might not be the same as current working
> +// directory.
> +llvm::SmallString<128> getAbsolutePath(const tooling::CompileCommand ) {
> +  llvm::SmallString<128> AbsolutePath;
> +  if (llvm::sys::path::is_absolute(Cmd.Filename)) {
> +AbsolutePath = Cmd.Filename;
> +  } else {
> +AbsolutePath = Cmd.Directory;
> +llvm::sys::path::append(AbsolutePath, Cmd.Filename);
> +  }
> +  return AbsolutePath;
> +}
> } // namespace
> 
> BackgroundIndex::BackgroundIndex(
> @@ -204,40 +217,33 @@ void BackgroundIndex::enqueue(const std:
>   [this, ChangedFiles] {
> trace::Span Tracer("BackgroundIndexEnqueue");
> // We're doing this asynchronously, because we'll read shards here 
> too.
> -// FIXME: read shards here too.
> -
> log("Enqueueing {0} commands for indexing", ChangedFiles.size());
> SPAN_ATTACH(Tracer, "files", int64_t(ChangedFiles.size()));
> 
> -// We shuffle the files because processing them in a random order 
> should
> -// quickly give us good coverage of headers in the project.
> -std::vector Permutation(ChangedFiles.size());
> -std::iota(Permutation.begin(), Permutation.end(), 0);
> -std::mt19937 Generator(std::random_device{}());
> -std::shuffle(Permutation.begin(), Permutation.end(), Generator);
> -
> -for (const unsigned I : Permutation)
> -  enqueue(ChangedFiles[I]);
> +auto NeedsReIndexing = loadShards(std::move(ChangedFiles));
> +// Run indexing for files that need to be updated.
> +std::shuffle(NeedsReIndexing.begin(), NeedsReIndexing.end(),
> + std::mt19937(std::random_device{}()));
> +for (auto  : NeedsReIndexing)
> +  enqueue(std::move(Elem.first), Elem.second);
>   },
>   ThreadPriority::Normal);
> }
> 
> -void BackgroundIndex::enqueue(const std::string ) {
> -  ProjectInfo Project;
> -  if (auto Cmd = CDB.getCompileCommand(File, )) {
> -auto *Storage = IndexStorageFactory(Project.SourceRoot);
> -// Set priority to low, since background indexing is a long running
> -// task we do not want to eat up cpu when there are any other high
> -// priority threads.
> -enqueueTask(Bind(
> -[this, File, Storage](tooling::CompileCommand Cmd) {
> -  Cmd.CommandLine.push_back("-resource-dir=" + 
> ResourceDir);
> -  if (auto Error = index(std::move(Cmd), Storage))
> -log("Indexing {0} failed: {1}", File, 
> std::move(Error));
> -},
> -std::move(*Cmd)),
> -ThreadPriority::Low);
> -  }
> +void BackgroundIndex::enqueue(tooling::CompileCommand Cmd,
> +  BackgroundIndexStorage *Storage) {
> +  enqueueTask(Bind(
> +  [this, Storage](tooling::CompileCommand Cmd) {
> +Cmd.CommandLine.push_back("-resource-dir=" + 
> ResourceDir);
> +// We can't use llvm::StringRef here since we are going 
> to
> +// move from Cmd during the call below.
> +const std::string FileName = Cmd.Filename;
> 

Re: r332885 - CodeGen, Driver: Start using direct split dwarf emission in clang.

2018-05-22 Thread Amara Emerson via cfe-commits
> On 21 May 2018, at 21:31, Peter Collingbourne via cfe-commits 
>  wrote:
> 
> Author: pcc
> Date: Mon May 21 13:31:59 2018
> New Revision: 332885
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=332885=rev
> Log:
> CodeGen, Driver: Start using direct split dwarf emission in clang.
> 
> Fixes PR37466.
> 
> Differential Revision: https://reviews.llvm.org/D47093
> 
> Added:
>cfe/trunk/test/Misc/cc1as-split-dwarf.s
> Modified:
>cfe/trunk/include/clang/Driver/CC1Options.td
>cfe/trunk/lib/CodeGen/BackendUtil.cpp
>cfe/trunk/lib/Driver/ToolChains/Clang.cpp
>cfe/trunk/test/CodeGen/split-debug-filename.c
>cfe/trunk/test/Driver/split-debug.c
>cfe/trunk/test/Driver/split-debug.s
>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=332885=332884=332885=diff
> ==
> --- cfe/trunk/include/clang/Driver/CC1Options.td (original)
> +++ cfe/trunk/include/clang/Driver/CC1Options.td Mon May 21 13:31:59 2018
> @@ -619,6 +619,8 @@ def version : Flag<["-"], "version">,
>   HelpText<"Print the compiler version">;
> def main_file_name : Separate<["-"], "main-file-name">,
>   HelpText<"Main file name to use for debug info">;
> +def split_dwarf_file : Separate<["-"], "split-dwarf-file">,
> +  HelpText<"File name to use for split dwarf debug info output">;
> 
> }
> 
> @@ -628,8 +630,6 @@ def fexternc_nounwind : Flag<["-"], "fex
>   HelpText<"Assume all functions with C linkage do not unwind">;
> def enable_split_dwarf : Flag<["-"], "enable-split-dwarf">,
>   HelpText<"Use split dwarf/Fission">;
> -def split_dwarf_file : Separate<["-"], "split-dwarf-file">,
> -  HelpText<"File name to use for split dwarf debug info output">;
> def fno_wchar : Flag<["-"], "fno-wchar">,
>   HelpText<"Disable C++ builtin type wchar_t">;
> def fconstant_string_class : Separate<["-"], "fconstant-string-class">,
> 
> Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=332885=332884=332885=diff
> ==
> --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original)
> +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Mon May 21 13:31:59 2018
> @@ -104,7 +104,17 @@ class EmitAssemblyHelper {
>   ///
>   /// \return True on success.
>   bool AddEmitPasses(legacy::PassManager , BackendAction Action,
> - raw_pwrite_stream );
> + raw_pwrite_stream , raw_pwrite_stream *DwoOS);
> +
> +  std::unique_ptr openOutputFile(StringRef Path) {
> +std::error_code EC;
> +auto F = make_unique(Path, EC, 
> llvm::sys::fs::F_None);
> +if (EC) {
> +  Diags.Report(diag::err_fe_unable_to_open_output) << Path << 
> EC.message();
> +  F.reset();
> +}
> +return F;
> +  }
> 
> public:
>   EmitAssemblyHelper(DiagnosticsEngine &_Diags,
> @@ -701,7 +711,8 @@ void EmitAssemblyHelper::CreateTargetMac
> 
> bool EmitAssemblyHelper::AddEmitPasses(legacy::PassManager ,
>BackendAction Action,
> -   raw_pwrite_stream ) {
> +   raw_pwrite_stream ,
> +   raw_pwrite_stream *DwoOS) {
>   // Add LibraryInfo.
>   llvm::Triple TargetTriple(TheModule->getTargetTriple());
>   std::unique_ptr TLII(
> @@ -718,7 +729,7 @@ bool EmitAssemblyHelper::AddEmitPasses(l
>   if (CodeGenOpts.OptimizationLevel > 0)
> CodeGenPasses.add(createObjCARCContractPass());
> 
> -  if (TM->addPassesToEmitFile(CodeGenPasses, OS, nullptr, CGFT,
> +  if (TM->addPassesToEmitFile(CodeGenPasses, OS, DwoOS, CGFT,
>   /*DisableVerify=*/!CodeGenOpts.VerifyModule)) {
> Diags.Report(diag::err_fe_unable_to_interface_with_target);
> return false;
> @@ -757,7 +768,7 @@ void EmitAssemblyHelper::EmitAssembly(Ba
>   CodeGenPasses.add(
>   createTargetTransformInfoWrapperPass(getTargetIRAnalysis()));
> 
> -  std::unique_ptr ThinLinkOS;
> +  std::unique_ptr ThinLinkOS, DwoOS;
> 
>   switch (Action) {
>   case Backend_EmitNothing:
> @@ -766,18 +777,12 @@ void EmitAssemblyHelper::EmitAssembly(Ba
>   case Backend_EmitBC:
> if (CodeGenOpts.EmitSummaryIndex) {
>   if (!CodeGenOpts.ThinLinkBitcodeFile.empty()) {
> -std::error_code EC;
> -ThinLinkOS.reset(new llvm::raw_fd_ostream(
> -CodeGenOpts.ThinLinkBitcodeFile, EC,
> -llvm::sys::fs::F_None));
> -if (EC) {
> -  Diags.Report(diag::err_fe_unable_to_open_output) << 
> CodeGenOpts.ThinLinkBitcodeFile
> -   << EC.message();
> +ThinLinkOS = openOutputFile(CodeGenOpts.ThinLinkBitcodeFile);
> +if (!ThinLinkOS)
> 

r332971 - Revert "Add missing x86-registered-target."

2018-05-22 Thread Amara Emerson via cfe-commits
Author: aemerson
Date: Tue May 22 04:18:43 2018
New Revision: 332971

URL: http://llvm.org/viewvc/llvm-project?rev=332971=rev
Log:
Revert "Add missing x86-registered-target."

This reverts commit r332911, as a dependency to revert r332885.

Modified:
cfe/trunk/test/Misc/cc1as-split-dwarf.s

Modified: cfe/trunk/test/Misc/cc1as-split-dwarf.s
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/cc1as-split-dwarf.s?rev=332971=332970=332971=diff
==
--- cfe/trunk/test/Misc/cc1as-split-dwarf.s (original)
+++ cfe/trunk/test/Misc/cc1as-split-dwarf.s Tue May 22 04:18:43 2018
@@ -1,4 +1,3 @@
-// REQUIRES: x86-registered-target
 // RUN: %clang -cc1as -triple x86_64-pc-linux-gnu %s -filetype obj -o %t1 
-split-dwarf-file %t2
 // RUN: llvm-objdump -s %t1 | FileCheck --check-prefix=O %s
 // RUN: llvm-objdump -s %t2 | FileCheck --check-prefix=DWO %s


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


r332973 - Revert "CodeGen, Driver: Start using direct split dwarf emission in clang."

2018-05-22 Thread Amara Emerson via cfe-commits
Author: aemerson
Date: Tue May 22 04:18:58 2018
New Revision: 332973

URL: http://llvm.org/viewvc/llvm-project?rev=332973=rev
Log:
Revert "CodeGen, Driver: Start using direct split dwarf emission in clang."

This reverts commit r332885 as it broke several greendragon buildbots.

Removed:
cfe/trunk/test/Misc/cc1as-split-dwarf.s
Modified:
cfe/trunk/include/clang/Driver/CC1Options.td
cfe/trunk/lib/CodeGen/BackendUtil.cpp
cfe/trunk/lib/Driver/ToolChains/Clang.cpp
cfe/trunk/test/CodeGen/split-debug-filename.c
cfe/trunk/test/Driver/split-debug.c
cfe/trunk/test/Driver/split-debug.s
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=332973=332972=332973=diff
==
--- cfe/trunk/include/clang/Driver/CC1Options.td (original)
+++ cfe/trunk/include/clang/Driver/CC1Options.td Tue May 22 04:18:58 2018
@@ -619,8 +619,6 @@ def version : Flag<["-"], "version">,
   HelpText<"Print the compiler version">;
 def main_file_name : Separate<["-"], "main-file-name">,
   HelpText<"Main file name to use for debug info">;
-def split_dwarf_file : Separate<["-"], "split-dwarf-file">,
-  HelpText<"File name to use for split dwarf debug info output">;
 
 }
 
@@ -630,6 +628,8 @@ def fexternc_nounwind : Flag<["-"], "fex
   HelpText<"Assume all functions with C linkage do not unwind">;
 def enable_split_dwarf : Flag<["-"], "enable-split-dwarf">,
   HelpText<"Use split dwarf/Fission">;
+def split_dwarf_file : Separate<["-"], "split-dwarf-file">,
+  HelpText<"File name to use for split dwarf debug info output">;
 def fno_wchar : Flag<["-"], "fno-wchar">,
   HelpText<"Disable C++ builtin type wchar_t">;
 def fconstant_string_class : Separate<["-"], "fconstant-string-class">,

Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=332973=332972=332973=diff
==
--- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original)
+++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Tue May 22 04:18:58 2018
@@ -104,17 +104,7 @@ class EmitAssemblyHelper {
   ///
   /// \return True on success.
   bool AddEmitPasses(legacy::PassManager , BackendAction Action,
- raw_pwrite_stream , raw_pwrite_stream *DwoOS);
-
-  std::unique_ptr openOutputFile(StringRef Path) {
-std::error_code EC;
-auto F = make_unique(Path, EC, 
llvm::sys::fs::F_None);
-if (EC) {
-  Diags.Report(diag::err_fe_unable_to_open_output) << Path << EC.message();
-  F.reset();
-}
-return F;
-  }
+ raw_pwrite_stream );
 
 public:
   EmitAssemblyHelper(DiagnosticsEngine &_Diags,
@@ -711,8 +701,7 @@ void EmitAssemblyHelper::CreateTargetMac
 
 bool EmitAssemblyHelper::AddEmitPasses(legacy::PassManager ,
BackendAction Action,
-   raw_pwrite_stream ,
-   raw_pwrite_stream *DwoOS) {
+   raw_pwrite_stream ) {
   // Add LibraryInfo.
   llvm::Triple TargetTriple(TheModule->getTargetTriple());
   std::unique_ptr TLII(
@@ -729,7 +718,7 @@ bool EmitAssemblyHelper::AddEmitPasses(l
   if (CodeGenOpts.OptimizationLevel > 0)
 CodeGenPasses.add(createObjCARCContractPass());
 
-  if (TM->addPassesToEmitFile(CodeGenPasses, OS, DwoOS, CGFT,
+  if (TM->addPassesToEmitFile(CodeGenPasses, OS, nullptr, CGFT,
   /*DisableVerify=*/!CodeGenOpts.VerifyModule)) {
 Diags.Report(diag::err_fe_unable_to_interface_with_target);
 return false;
@@ -768,7 +757,7 @@ void EmitAssemblyHelper::EmitAssembly(Ba
   CodeGenPasses.add(
   createTargetTransformInfoWrapperPass(getTargetIRAnalysis()));
 
-  std::unique_ptr ThinLinkOS, DwoOS;
+  std::unique_ptr ThinLinkOS;
 
   switch (Action) {
   case Backend_EmitNothing:
@@ -777,12 +766,18 @@ void EmitAssemblyHelper::EmitAssembly(Ba
   case Backend_EmitBC:
 if (CodeGenOpts.EmitSummaryIndex) {
   if (!CodeGenOpts.ThinLinkBitcodeFile.empty()) {
-ThinLinkOS = openOutputFile(CodeGenOpts.ThinLinkBitcodeFile);
-if (!ThinLinkOS)
+std::error_code EC;
+ThinLinkOS.reset(new llvm::raw_fd_ostream(
+CodeGenOpts.ThinLinkBitcodeFile, EC,
+llvm::sys::fs::F_None));
+if (EC) {
+  Diags.Report(diag::err_fe_unable_to_open_output) << 
CodeGenOpts.ThinLinkBitcodeFile
+   << EC.message();
   return;
+}
   }
-  PerModulePasses.add(createWriteThinLTOBitcodePass(
-  *OS, ThinLinkOS ? >os() : nullptr));
+  PerModulePasses.add(
+  createWriteThinLTOBitcodePass(*OS, ThinLinkOS.get()));
 }
 else
   

r332972 - Revert "Fix another make_unique ambiguity."

2018-05-22 Thread Amara Emerson via cfe-commits
Author: aemerson
Date: Tue May 22 04:18:49 2018
New Revision: 332972

URL: http://llvm.org/viewvc/llvm-project?rev=332972=rev
Log:
Revert "Fix another make_unique ambiguity."

This reverts commit r332906 as a dependency to revert r332885.

Modified:
cfe/trunk/lib/CodeGen/BackendUtil.cpp

Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=332972=332971=332972=diff
==
--- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original)
+++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Tue May 22 04:18:49 2018
@@ -108,8 +108,7 @@ class EmitAssemblyHelper {
 
   std::unique_ptr openOutputFile(StringRef Path) {
 std::error_code EC;
-auto F = llvm::make_unique(Path, EC,
- llvm::sys::fs::F_None);
+auto F = make_unique(Path, EC, 
llvm::sys::fs::F_None);
 if (EC) {
   Diags.Report(diag::err_fe_unable_to_open_output) << Path << EC.message();
   F.reset();


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


Re: r332720 - Move #include manipulation code to new lib/Tooling/Inclusions.

2018-05-18 Thread Amara Emerson via cfe-commits
Hi Eric,

Green dragon buildbots have started failing too, e.g.: 
http://green.lab.llvm.org/green/job/clang-stage2-Rthinlto/10222/

If you don’t have a quick fix can you please revert it.

Thanks,
Amara

> On May 18, 2018, at 7:46 PM, Eric Liu  wrote:
> 
> Hi Vedant,
> 
> It seems that your build was not using cmake files in the source tree? 
> lib/Tooling/Inclusions/ is a (new) standalone library 
> (clangToolingInclusions, similar to clangToolingCore). You might need update 
> your build to reflect this change. Let me know if you have any further 
> question.
> 
> Thanks,
> Eric
> 
> On Fri, May 18, 2018 at 6:41 PM Vedant Kumar  > wrote:
> Hi Eric,
> 
> I think there might be a cyclic dependency issue here, possibly one that's 
> only visible with LLVM_ENABLE_MODULES=On. I see:
> 
> While building module 'Clang_Tooling' imported from 
> /Users/vsk/src/llvm.org-master/llvm/tools/clang/lib/Tooling/Execution.cpp:10: 
> 
> While building module 'Clang_Format' imported from 
> /Users/vsk/src/llvm.org-master/llvm/tools/clang/include/clang/Tooling/Refactoring/AtomicChange.h:19:
>
> In file included from :1:
>   
>  
> /Users/vsk/src/llvm.org-master/llvm/tools/clang/include/clang/Format/Format.h:20:10:
>  fatal error: cyclic dependency in module 'Clang_Tooling': Clang_Tooling $> 
> Clang_Format -> Clang_Tooling 
>
> #include "clang/Tooling/Inclusions/IncludeStyle.h"
>  ^  
> While building module 'Clang_Tooling' imported from 
> /Users/vsk/src/llvm.org-master/llvm/tools/clang/lib/Tooling/Execution.cpp:10:
> In file included from :22:   
>
> In file included from 
> /Users/vsk/src/llvm.org-master/llvm/tools/clang/include/clang/Tooling/Refactoring/RefactoringAction.h:14:
> In file included from 
> /Users/vsk/src/llvm.org-master/llvm/tools/clang/include/clang/Tooling/Refactoring/RefactoringActionRules.h:14:
> In file included from 
> /Users/vsk/src/llvm.org-master/llvm/tools/clang/include/clang/Tooling/Refactoring/RefactoringActionRulesInternal.h:16:
> In file included from 
> /Users/vsk/src/llvm.org-master/llvm/tools/clang/include/clang/Tooling/Refactoring/RefactoringResultConsumer.h:14:
> /Users/vsk/src/llvm.org-master/llvm/tools/clang/include/clang/Tooling/Refactoring/AtomicChange.h:19:10:
>  fatal error: could not build module 'Clang_Format'
> #include "clang/Format/Format.h"
>  ^~~
> /Users/vsk/src/llvm.org-master/llvm/tools/clang/lib/Tooling/Execution.cpp:10:10:
>  fatal error: could not build module 'Clang_Tooling'
> #include "clang/Tooling/Execution.h"  
>   
>  ^~~
> 3 errors generated.
> 
> Could you take a look?
> 
> thanks,
> vedant
> 
> > On May 18, 2018, at 7:16 AM, Eric Liu via cfe-commits 
> > > wrote:
> > 
> > Author: ioeric
> > Date: Fri May 18 07:16:37 2018
> > New Revision: 332720
> > 
> > URL: http://llvm.org/viewvc/llvm-project?rev=332720=rev 
> > 
> > Log:
> > Move #include manipulation code to new lib/Tooling/Inclusions.
> > 
> > Summary:
> > clangToolingCore is linked into almost everything (incl. clang), but
> > not few tools need #include manipulation at this point. So pull this into a
> > separate library in Tooling.
> > 
> > Reviewers: ilya-biryukov
> > 
> > Subscribers: klimek, mgorny, cfe-commits, thakis
> > 
> > Differential Revision: https://reviews.llvm.org/D47068 
> > 
> > 
> > Added:
> >cfe/trunk/include/clang/Tooling/Inclusions/
> >cfe/trunk/include/clang/Tooling/Inclusions/HeaderIncludes.h
> >  - copied, changed from r332717, 
> > cfe/trunk/include/clang/Tooling/Core/HeaderIncludes.h
> >cfe/trunk/include/clang/Tooling/Inclusions/IncludeStyle.h
> >  - copied, changed from r332717, 
> > cfe/trunk/include/clang/Tooling/Core/IncludeStyle.h
> >cfe/trunk/lib/Tooling/Inclusions/
> >cfe/trunk/lib/Tooling/Inclusions/CMakeLists.txt
> >  - copied, changed from r332717, 
> > cfe/trunk/lib/Tooling/Core/CMakeLists.txt
> >cfe/trunk/lib/Tooling/Inclusions/HeaderIncludes.cpp
> >  - copied, changed from r332717, 
> > cfe/trunk/lib/Tooling/Core/HeaderIncludes.cpp
> >cfe/trunk/lib/Tooling/Inclusions/IncludeStyle.cpp
> >  - copied, changed from r332717, 
> > cfe/trunk/lib/Tooling/Core/IncludeStyle.cpp
> > Removed:
> >cfe/trunk/include/clang/Tooling/Core/HeaderIncludes.h
> >cfe/trunk/include/clang/Tooling/Core/IncludeStyle.h
> >cfe/trunk/lib/Tooling/Core/HeaderIncludes.cpp
> >

r323485 - [Driver] Add an -fexperimental-isel driver option to enable/disable GlobalISel.

2018-01-26 Thread Amara Emerson via cfe-commits
Author: aemerson
Date: Thu Jan 25 16:27:22 2018
New Revision: 323485

URL: http://llvm.org/viewvc/llvm-project?rev=323485=rev
Log:
[Driver] Add an -fexperimental-isel driver option to enable/disable GlobalISel.

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

Added:
cfe/trunk/test/Driver/global-isel.c
Modified:
cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td
cfe/trunk/include/clang/Basic/DiagnosticGroups.td
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Driver/ToolChains/Clang.cpp

Modified: cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td?rev=323485=323484=323485=diff
==
--- cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td Thu Jan 25 16:27:22 
2018
@@ -361,4 +361,12 @@ def warn_drv_fine_grained_bitfield_acces
 def note_drv_verify_prefix_spelling : Note<
   "-verify prefixes must start with a letter and contain only alphanumeric"
   " characters, hyphens, and underscores">;
+
+def warn_drv_experimental_isel_incomplete : Warning<
+  "-fexperimental-isel support for the '%0' architecture is incomplete">,
+  InGroup;
+
+def warn_drv_experimental_isel_incomplete_opt : Warning<
+  "-fexperimental-isel support is incomplete for this architecture at the 
current optimization level">,
+  InGroup;
 }

Modified: cfe/trunk/include/clang/Basic/DiagnosticGroups.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticGroups.td?rev=323485=323484=323485=diff
==
--- cfe/trunk/include/clang/Basic/DiagnosticGroups.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticGroups.td Thu Jan 25 16:27:22 2018
@@ -985,3 +985,6 @@ def UnknownArgument : DiagGroup<"unknown
 // A warning group for warnings about code that clang accepts when
 // compiling OpenCL C/C++ but which is not compatible with the SPIR spec.
 def SpirCompat : DiagGroup<"spir-compat">;
+
+// Warning for the experimental-isel options.
+def ExperimentalISel : DiagGroup<"experimental-isel">;

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=323485=323484=323485=diff
==
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Thu Jan 25 16:27:22 2018
@@ -1033,6 +1033,8 @@ def finline_functions : Flag<["-"], "fin
 def finline_hint_functions: Flag<["-"], "finline-hint-functions">, 
Group, Flags<[CC1Option]>,
   HelpText<"Inline functions which are (explicitly or implicitly) marked 
inline">;
 def finline : Flag<["-"], "finline">, Group;
+def fexperimental_isel : Flag<["-"], "fexperimental-isel">, 
Group,
+  HelpText<"Enables the experimental global instruction selector">;
 def fexperimental_new_pass_manager : Flag<["-"], 
"fexperimental-new-pass-manager">,
   Group, Flags<[CC1Option]>,
   HelpText<"Enables an experimental new pass manager in LLVM.">;
@@ -1244,6 +1246,8 @@ def fno_exceptions : Flag<["-"], "fno-ex
 def fno_gnu_keywords : Flag<["-"], "fno-gnu-keywords">, Group, 
Flags<[CC1Option]>;
 def fno_inline_functions : Flag<["-"], "fno-inline-functions">, 
Group, Flags<[CC1Option]>;
 def fno_inline : Flag<["-"], "fno-inline">, Group, 
Flags<[CC1Option]>;
+def fno_experimental_isel : Flag<["-"], "fno-experimental-isel">, 
Group,
+  HelpText<"Disables the experimental global instruction selector">;
 def fno_experimental_new_pass_manager : Flag<["-"], 
"fno-experimental-new-pass-manager">,
   Group, Flags<[CC1Option]>,
   HelpText<"Disables an experimental new pass manager in LLVM.">;

Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=323485=323484=323485=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Thu Jan 25 16:27:22 2018
@@ -4694,6 +4694,37 @@ void Clang::ConstructJob(Compilation ,
 CmdArgs.push_back("-fwhole-program-vtables");
   }
 
+  if (Arg *A = Args.getLastArg(options::OPT_fexperimental_isel,
+   options::OPT_fno_experimental_isel)) {
+CmdArgs.push_back("-mllvm");
+if (A->getOption().matches(options::OPT_fexperimental_isel)) {
+  CmdArgs.push_back("-global-isel=1");
+
+  // GISel is on by default on AArch64 -O0, so don't bother adding
+  // the fallback remarks for it. Other combinations will add a warning of
+  // some kind.
+  bool IsArchSupported = Triple.getArch() == llvm::Triple::aarch64;
+  bool IsOptLevelSupported = false;
+
+  Arg *A = 

r307919 - [AArch64] Add support for handling the +sve target feature.

2017-07-13 Thread Amara Emerson via cfe-commits
Author: aemerson
Date: Thu Jul 13 08:36:01 2017
New Revision: 307919

URL: http://llvm.org/viewvc/llvm-project?rev=307919=rev
Log:
[AArch64] Add support for handling the +sve target feature.

This also adds the appropriate predefine for SVE if enabled.

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

Modified:
cfe/trunk/lib/Basic/Targets.cpp
cfe/trunk/test/Preprocessor/aarch64-target-features.c

Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=307919=307918=307919=diff
==
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Thu Jul 13 08:36:01 2017
@@ -6251,7 +6251,8 @@ class AArch64TargetInfo : public TargetI
 
   enum FPUModeEnum {
 FPUMode,
-NeonMode
+NeonMode = (1 << 0),
+SveMode = (1 << 1)
   };
 
   unsigned FPU;
@@ -6385,12 +6386,15 @@ public:
 Builder.defineMacro("__ARM_SIZEOF_MINIMAL_ENUM",
 Opts.ShortEnums ? "1" : "4");
 
-if (FPU == NeonMode) {
+if (FPU & NeonMode) {
   Builder.defineMacro("__ARM_NEON", "1");
   // 64-bit NEON supports half, single and double precision operations.
   Builder.defineMacro("__ARM_NEON_FP", "0xE");
 }
 
+if (FPU & SveMode)
+  Builder.defineMacro("__ARM_FEATURE_SVE", "1");
+
 if (CRC)
   Builder.defineMacro("__ARM_FEATURE_CRC32", "1");
 
@@ -6426,7 +6430,8 @@ public:
 return Feature == "aarch64" ||
   Feature == "arm64" ||
   Feature == "arm" ||
-  (Feature == "neon" && FPU == NeonMode);
+  (Feature == "neon" && (FPU & NeonMode)) ||
+  (Feature == "sve" && (FPU & SveMode));
   }
 
   bool handleTargetFeatures(std::vector ,
@@ -6440,7 +6445,9 @@ public:
 
 for (const auto  : Features) {
   if (Feature == "+neon")
-FPU = NeonMode;
+FPU |= NeonMode;
+  if (Feature == "+sve")
+FPU |= SveMode;
   if (Feature == "+crc")
 CRC = 1;
   if (Feature == "+crypto")

Modified: cfe/trunk/test/Preprocessor/aarch64-target-features.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/aarch64-target-features.c?rev=307919=307918=307919=diff
==
--- cfe/trunk/test/Preprocessor/aarch64-target-features.c (original)
+++ cfe/trunk/test/Preprocessor/aarch64-target-features.c Thu Jul 13 08:36:01 
2017
@@ -37,6 +37,7 @@
 // CHECK-NOT: __ARM_PCS_VFP 1
 // CHECK-NOT: __ARM_SIZEOF_MINIMAL_ENUM 1
 // CHECK-NOT: __ARM_SIZEOF_WCHAR_T 2
+// CHECK-NOT: __ARM_FEATURE_SVE
 
 // RUN: %clang -target aarch64_be-eabi -x c -E -dM %s -o - | FileCheck %s 
-check-prefix CHECK-BIGENDIAN
 // CHECK-BIGENDIAN: __ARM_BIG_ENDIAN 1
@@ -84,6 +85,10 @@
 // CHECK-GENERIC: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" 
"+neon"
 
 // RUN: %clang -target aarch64 -mtune=cyclone -### -c %s 2>&1 | FileCheck 
-check-prefix=CHECK-MTUNE-CYCLONE %s
+
+// RUN: %clang -target aarch64-none-linux-gnu -march=armv8-a+sve -x c -E -dM 
%s -o - | FileCheck --check-prefix=CHECK-SVE %s
+// CHECK-SVE: __ARM_FEATURE_SVE 1
+
 // == Check whether -mtune accepts mixed-case features.
 // RUN: %clang -target aarch64 -mtune=CYCLONE -### -c %s 2>&1 | FileCheck 
-check-prefix=CHECK-MTUNE-CYCLONE %s
 // CHECK-MTUNE-CYCLONE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" 
"-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz"


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


r286456 - Add the loop end location to the loop metadata. This additional information

2016-11-10 Thread Amara Emerson via cfe-commits
Author: aemerson
Date: Thu Nov 10 08:44:30 2016
New Revision: 286456

URL: http://llvm.org/viewvc/llvm-project?rev=286456=rev
Log:
Add the loop end location to the loop metadata. This additional information
can be used to improve the locations when generating remarks for loops.

Depends on the companion LLVM change r286227.

Patch by Florian Hahn.

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


Added:
cfe/trunk/test/CodeGenCXX/debug-info-loops.cpp
Modified:
cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
cfe/trunk/lib/CodeGen/CGDebugInfo.h
cfe/trunk/lib/CodeGen/CGLoopInfo.cpp
cfe/trunk/lib/CodeGen/CGLoopInfo.h
cfe/trunk/lib/CodeGen/CGStmt.cpp
cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp
cfe/trunk/lib/CodeGen/CodeGenFunction.cpp
cfe/trunk/lib/CodeGen/CodeGenFunction.h
cfe/trunk/test/CodeGenCXX/debug-info-line-if.cpp

Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=286456=286455=286456=diff
==
--- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Thu Nov 10 08:44:30 2016
@@ -3924,3 +3924,12 @@ void CGDebugInfo::EmitExplicitCastType(Q
 // Don't ignore in case of explicit cast where it is referenced indirectly.
 DBuilder.retainType(DieTy);
 }
+
+llvm::DebugLoc CGDebugInfo::SourceLocToDebugLoc(SourceLocation Loc) {
+  if (LexicalBlockStack.empty())
+return llvm::DebugLoc();
+
+  llvm::MDNode *Scope = LexicalBlockStack.back();
+  return llvm::DebugLoc::get(
+  getLineNumber(Loc), getColumnNumber(Loc), Scope);
+}

Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.h?rev=286456=286455=286456=diff
==
--- cfe/trunk/lib/CodeGen/CGDebugInfo.h (original)
+++ cfe/trunk/lib/CodeGen/CGDebugInfo.h Thu Nov 10 08:44:30 2016
@@ -320,6 +320,9 @@ public:
   /// ignored.
   void setLocation(SourceLocation Loc);
 
+  // Converts a SourceLocation to a DebugLoc
+  llvm::DebugLoc SourceLocToDebugLoc(SourceLocation Loc);
+
   /// Emit metadata to indicate a change in line/column information in
   /// the source file. If the location is invalid, the previous
   /// location will be reused.

Modified: cfe/trunk/lib/CodeGen/CGLoopInfo.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGLoopInfo.cpp?rev=286456=286455=286456=diff
==
--- cfe/trunk/lib/CodeGen/CGLoopInfo.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGLoopInfo.cpp Thu Nov 10 08:44:30 2016
@@ -20,14 +20,14 @@ using namespace clang::CodeGen;
 using namespace llvm;
 
 static MDNode *createMetadata(LLVMContext , const LoopAttributes ,
-  llvm::DebugLoc Location) {
+  llvm::DebugLoc StartLoc, llvm::DebugLoc EndLoc) {
 
   if (!Attrs.IsParallel && Attrs.VectorizeWidth == 0 &&
   Attrs.InterleaveCount == 0 && Attrs.UnrollCount == 0 &&
   Attrs.VectorizeEnable == LoopAttributes::Unspecified &&
   Attrs.UnrollEnable == LoopAttributes::Unspecified &&
   Attrs.DistributeEnable == LoopAttributes::Unspecified &&
-  !Location)
+  !StartLoc && !EndLoc)
 return nullptr;
 
   SmallVector Args;
@@ -35,9 +35,14 @@ static MDNode *createMetadata(LLVMContex
   auto TempNode = MDNode::getTemporary(Ctx, None);
   Args.push_back(TempNode.get());
 
-  // If we have a valid debug location for the loop, add it.
-  if (Location)
-Args.push_back(Location.getAsMDNode());
+  // If we have a valid start debug location for the loop, add it.
+  if (StartLoc) {
+Args.push_back(StartLoc.getAsMDNode());
+
+// If we also have a valid end debug location for the loop, add it.
+if (EndLoc)
+  Args.push_back(EndLoc.getAsMDNode());
+  }
 
   // Setting vectorize.width
   if (Attrs.VectorizeWidth > 0) {
@@ -116,20 +121,21 @@ void LoopAttributes::clear() {
 }
 
 LoopInfo::LoopInfo(BasicBlock *Header, const LoopAttributes ,
-   llvm::DebugLoc Location)
+   llvm::DebugLoc StartLoc, llvm::DebugLoc EndLoc)
 : LoopID(nullptr), Header(Header), Attrs(Attrs) {
-  LoopID = createMetadata(Header->getContext(), Attrs, Location);
+  LoopID = createMetadata(Header->getContext(), Attrs, StartLoc, EndLoc);
 }
 
-void LoopInfoStack::push(BasicBlock *Header, llvm::DebugLoc Location) {
-  Active.push_back(LoopInfo(Header, StagedAttrs, Location));
+void LoopInfoStack::push(BasicBlock *Header, llvm::DebugLoc StartLoc,
+ llvm::DebugLoc EndLoc) {
+  Active.push_back(LoopInfo(Header, StagedAttrs, StartLoc, EndLoc));
   // Clear the attributes so nested loops do not inherit them.
   StagedAttrs.clear();
 }
 
 void LoopInfoStack::push(BasicBlock *Header, clang::ASTContext ,