[llvm-branch-commits] [compiler-rt-branch] r339315 - Merging r339303:

2018-08-09 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Thu Aug  9 00:32:30 2018
New Revision: 339315

URL: http://llvm.org/viewvc/llvm-project?rev=339315&view=rev
Log:
Merging r339303:

r339303 | george.karpenkov | 2018-08-09 02:41:22 +0200 (Thu, 09 Aug 2018) | 11 
lines

[libFuzzer] Increase the iteration limit in shrink.test

After https://reviews.llvm.org/D48800, shrink.test started failing on
x86_64h architecture.
Looking into this, the optimization pass is too eager to unroll the loop
on x86_64h, possibly leading to worse coverage data.

Alternative solutions include not unrolling the loop when fuzzing, or
disabling this test on that architecture.

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


Modified:
compiler-rt/branches/release_70/   (props changed)
compiler-rt/branches/release_70/test/fuzzer/shrink.test

Propchange: compiler-rt/branches/release_70/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Aug  9 00:32:30 2018
@@ -1 +1 @@
-/compiler-rt/trunk:338577,338606
+/compiler-rt/trunk:338577,338606,339303

Modified: compiler-rt/branches/release_70/test/fuzzer/shrink.test
URL: 
http://llvm.org/viewvc/llvm-project/compiler-rt/branches/release_70/test/fuzzer/shrink.test?rev=339315&r1=339314&r2=339315&view=diff
==
--- compiler-rt/branches/release_70/test/fuzzer/shrink.test (original)
+++ compiler-rt/branches/release_70/test/fuzzer/shrink.test Thu Aug  9 00:32:30 
2018
@@ -1,6 +1,6 @@
 RUN: %cpp_compiler %S/ShrinkControlFlowTest.cpp -o %t-ShrinkControlFlowTest
 RUN: %cpp_compiler %S/ShrinkValueProfileTest.cpp -o %t-ShrinkValueProfileTest
-RUN: %run %t-ShrinkControlFlowTest -seed=1 
-exit_on_item=0eb8e4ed029b774d80f2b66408203801cb982a60 -runs=100  -shrink=1 
-reduce_inputs=0 2>&1 | FileCheck %s --check-prefix=SHRINK1
+RUN: %run %t-ShrinkControlFlowTest -seed=1 
-exit_on_item=0eb8e4ed029b774d80f2b66408203801cb982a60 -runs=200  -shrink=1 
-reduce_inputs=0 2>&1 | FileCheck %s --check-prefix=SHRINK1
 # Limit max_len to run this negative test faster.
 RUN: %run %t-ShrinkControlFlowTest -seed=1 
-exit_on_item=0eb8e4ed029b774d80f2b66408203801cb982a60 -runs=100 -shrink=0 
-reduce_inputs=0 -max_len=64 2>&1 | FileCheck %s --check-prefix=SHRINK0
 RUN: %run %t-ShrinkValueProfileTest -seed=1 
-exit_on_item=aea2e3923af219a8956f626558ef32f30a914ebc -runs=10 -shrink=1 
-reduce_inputs=0 -use_value_profile=1 2>&1 | FileCheck %s 
--check-prefix=SHRINK1_VP


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


[llvm-branch-commits] [llvm-branch] r339323 - Merging r339319:

2018-08-09 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Thu Aug  9 02:35:38 2018
New Revision: 339323

URL: http://llvm.org/viewvc/llvm-project?rev=339323&view=rev
Log:
Merging r339319:

r339319 | hans | 2018-08-09 10:41:03 +0200 (Thu, 09 Aug 2018) | 1 line

cmake: don't pack system libs unless CMAKE_INSTALL_UCRT_LIBRARIES is set 
(PR38476)


Modified:
llvm/branches/release_70/   (props changed)
llvm/branches/release_70/CMakeLists.txt

Propchange: llvm/branches/release_70/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Aug  9 02:35:38 2018
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,338552,338554,338569,338599,338610,338658,338665,338682,338703,338709,338716,338751,338762,338817,338902,338915,338968,339190
+/llvm/trunk:155241,338552,338554,338569,338599,338610,338658,338665,338682,338703,338709,338716,338751,338762,338817,338902,338915,338968,339190,339319

Modified: llvm/branches/release_70/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_70/CMakeLists.txt?rev=339323&r1=339322&r2=339323&view=diff
==
--- llvm/branches/release_70/CMakeLists.txt (original)
+++ llvm/branches/release_70/CMakeLists.txt Thu Aug  9 02:35:38 2018
@@ -1037,6 +1037,6 @@ if(LLVM_DISTRIBUTION_COMPONENTS)
 endif()
 
 # This allows us to deploy the Universal CRT DLLs by passing 
-DCMAKE_INSTALL_UCRT_LIBRARIES=ON to CMake
-if (MSVC AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
+if (MSVC AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows" AND 
CMAKE_INSTALL_UCRT_LIBRARIES)
   include(InstallRequiredSystemLibraries)
 endif()


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


[llvm-branch-commits] [llvm-branch] r339338 - Merging r339316:

2018-08-09 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Thu Aug  9 05:37:40 2018
New Revision: 339338

URL: http://llvm.org/viewvc/llvm-project?rev=339338&view=rev
Log:
Merging r339316:

r339316 | hahnfeld | 2018-08-09 09:45:49 +0200 (Thu, 09 Aug 2018) | 16 lines

[NVPTX] Select atomic loads and stores

According to PTX ISA .volatile has the same memory synchronization
semantics as .relaxed.sys, so it can be used to implement monotonic
atomic loads and stores. This is important for OpenMP's atomic
construct where
 - 'read's and 'write's are lowered to atomic loads and stores, and
 - an update of float or double types are lowered into a cmpxchg loop.
(Note that PTX could do better because it has atom.add.f{32,64} but
LLVM's atomicrmw instruction only allows integer types.)

Higher levels of atomicity (like acquire and release) need additional
synchronization properties which were added with PTX ISA 6.0 / sm_70.
So using these instructions still results in an error.

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


Added:
llvm/branches/release_70/test/CodeGen/NVPTX/load-store.ll
  - copied unchanged from r339316, 
llvm/trunk/test/CodeGen/NVPTX/load-store.ll
Modified:
llvm/branches/release_70/   (props changed)
llvm/branches/release_70/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp

Propchange: llvm/branches/release_70/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Aug  9 05:37:40 2018
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,338552,338554,338569,338599,338610,338658,338665,338682,338703,338709,338716,338751,338762,338817,338902,338915,338968,339190,339319
+/llvm/trunk:155241,338552,338554,338569,338599,338610,338658,338665,338682,338703,338709,338716,338751,338762,338817,338902,338915,338968,339190,339316,339319

Modified: llvm/branches/release_70/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_70/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp?rev=339338&r1=339337&r2=339338&view=diff
==
--- llvm/branches/release_70/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp (original)
+++ llvm/branches/release_70/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp Thu Aug  9 
05:37:40 2018
@@ -16,6 +16,7 @@
 #include "llvm/Analysis/ValueTracking.h"
 #include "llvm/IR/GlobalValue.h"
 #include "llvm/IR/Instructions.h"
+#include "llvm/Support/AtomicOrdering.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/ErrorHandling.h"
@@ -81,10 +82,12 @@ void NVPTXDAGToDAGISel::Select(SDNode *N
 
   switch (N->getOpcode()) {
   case ISD::LOAD:
+  case ISD::ATOMIC_LOAD:
 if (tryLoad(N))
   return;
 break;
   case ISD::STORE:
+  case ISD::ATOMIC_STORE:
 if (tryStore(N))
   return;
 break;
@@ -834,17 +837,27 @@ static Optional pickOpcodeForV
 
 bool NVPTXDAGToDAGISel::tryLoad(SDNode *N) {
   SDLoc dl(N);
-  LoadSDNode *LD = cast(N);
+  MemSDNode *LD = cast(N);
+  assert(LD->readMem() && "Expected load");
+  LoadSDNode *PlainLoad = dyn_cast(N);
   EVT LoadedVT = LD->getMemoryVT();
   SDNode *NVPTXLD = nullptr;
 
   // do not support pre/post inc/dec
-  if (LD->isIndexed())
+  if (PlainLoad && PlainLoad->isIndexed())
 return false;
 
   if (!LoadedVT.isSimple())
 return false;
 
+  AtomicOrdering Ordering = LD->getOrdering();
+  // In order to lower atomic loads with stronger guarantees we would need to
+  // use load.acquire or insert fences. However these features were only added
+  // with PTX ISA 6.0 / sm_70.
+  // TODO: Check if we can actually use the new instructions and implement 
them.
+  if (isStrongerThanMonotonic(Ordering))
+return false;
+
   // Address Space Setting
   unsigned int CodeAddrSpace = getCodeAddrSpace(LD);
   if (canLowerToLDG(LD, *Subtarget, CodeAddrSpace, MF)) {
@@ -855,8 +868,9 @@ bool NVPTXDAGToDAGISel::tryLoad(SDNode *
   CurDAG->getDataLayout().getPointerSizeInBits(LD->getAddressSpace());
 
   // Volatile Setting
-  // - .volatile is only availalble for .global and .shared
-  bool isVolatile = LD->isVolatile();
+  // - .volatile is only available for .global and .shared
+  // - .volatile has the same memory synchronization semantics as .relaxed.sys
+  bool isVolatile = LD->isVolatile() || Ordering == AtomicOrdering::Monotonic;
   if (CodeAddrSpace != NVPTX::PTXLdStInstCode::GLOBAL &&
   CodeAddrSpace != NVPTX::PTXLdStInstCode::SHARED &&
   CodeAddrSpace != NVPTX::PTXLdStInstCode::GENERIC)
@@ -882,7 +896,7 @@ bool NVPTXDAGToDAGISel::tryLoad(SDNode *
 fromTypeWidth = 32;
   }
 
-  if ((LD->getExtensionType() == ISD::SEXTLOAD))
+  if (PlainLoad && (PlainLoad->getExtensionType() == ISD::SEXTLOAD))
 fromType = NVPTX::PT

[llvm-branch-commits] [cfe-branch] r339339 - Merging r339317:

2018-08-09 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Thu Aug  9 05:42:36 2018
New Revision: 339339

URL: http://llvm.org/viewvc/llvm-project?rev=339339&view=rev
Log:
Merging r339317:

r339317 | theraven | 2018-08-09 10:02:42 +0200 (Thu, 09 Aug 2018) | 15 lines

Correctly initialise global blocks on Windows.

Summary:
Windows does not allow globals to be initialised to point to globals in
another DLL.  Exported globals may be referenced only from code.  Work
around this by creating an initialiser that runs in early library
initialisation and sets the isa pointer.

Reviewers: rjmccall

Reviewed By: rjmccall

Subscribers: cfe-commits

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


Added:
cfe/branches/release_70/test/CodeGen/global-blocks-win32.c
  - copied unchanged from r339317, 
cfe/trunk/test/CodeGen/global-blocks-win32.c
Modified:
cfe/branches/release_70/   (props changed)
cfe/branches/release_70/lib/CodeGen/CGBlocks.cpp

Propchange: cfe/branches/release_70/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Aug  9 05:42:36 2018
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:338552-338553,338602,338627,338749,338942,339128,339170,339210
+/cfe/trunk:338552-338553,338602,338627,338749,338942,339128,339170,339210,339317
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_70/lib/CodeGen/CGBlocks.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_70/lib/CodeGen/CGBlocks.cpp?rev=339339&r1=339338&r2=339339&view=diff
==
--- cfe/branches/release_70/lib/CodeGen/CGBlocks.cpp (original)
+++ cfe/branches/release_70/lib/CodeGen/CGBlocks.cpp Thu Aug  9 05:42:36 2018
@@ -1213,9 +1213,13 @@ static llvm::Constant *buildGlobalBlock(
   auto fields = builder.beginStruct();
 
   bool IsOpenCL = CGM.getLangOpts().OpenCL;
+  bool IsWindows = CGM.getTarget().getTriple().isOSWindows();
   if (!IsOpenCL) {
 // isa
-fields.add(CGM.getNSConcreteGlobalBlock());
+if (IsWindows)
+  fields.addNullPointer(CGM.Int8PtrPtrTy);
+else
+  fields.add(CGM.getNSConcreteGlobalBlock());
 
 // __flags
 BlockFlags flags = BLOCK_IS_GLOBAL | BLOCK_HAS_SIGNATURE;
@@ -1250,7 +1254,27 @@ static llvm::Constant *buildGlobalBlock(
 
   llvm::Constant *literal = fields.finishAndCreateGlobal(
   "__block_literal_global", blockInfo.BlockAlign,
-  /*constant*/ true, llvm::GlobalVariable::InternalLinkage, AddrSpace);
+  /*constant*/ !IsWindows, llvm::GlobalVariable::InternalLinkage, 
AddrSpace);
+
+  // Windows does not allow globals to be initialised to point to globals in
+  // different DLLs.  Any such variables must run code to initialise them.
+  if (IsWindows) {
+auto *Init = llvm::Function::Create(llvm::FunctionType::get(CGM.VoidTy,
+  {}), llvm::GlobalValue::InternalLinkage, ".block_isa_init",
+&CGM.getModule());
+llvm::IRBuilder<> b(llvm::BasicBlock::Create(CGM.getLLVMContext(), "entry",
+  Init));
+b.CreateAlignedStore(CGM.getNSConcreteGlobalBlock(),
+b.CreateStructGEP(literal, 0), CGM.getPointerAlign().getQuantity());
+b.CreateRetVoid();
+// We can't use the normal LLVM global initialisation array, because we
+// need to specify that this runs early in library initialisation.
+auto *InitVar = new llvm::GlobalVariable(CGM.getModule(), Init->getType(),
+/*isConstant*/true, llvm::GlobalValue::InternalLinkage,
+Init, ".block_isa_init_ptr");
+InitVar->setSection(".CRT$XCLa");
+CGM.addUsedGlobal(InitVar);
+  }
 
   // Return a constant of the appropriately-casted type.
   llvm::Type *RequiredType =


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


[llvm-branch-commits] [cfe-branch] r339341 - Merging r339281:

2018-08-09 Thread Hans Wennborg via llvm-branch-commits
Author: hans
Date: Thu Aug  9 05:46:44 2018
New Revision: 339341

URL: http://llvm.org/viewvc/llvm-project?rev=339341&view=rev
Log:
Merging r339281:

r339281 | ctopper | 2018-08-08 21:14:23 +0200 (Wed, 08 Aug 2018) | 5 lines

[CodeGen][Timers] Enable llvm::TimePassesIsEnabled when -ftime-report is 
specified

r330571 added a new FrontendTimesIsEnabled variable and replaced many usages of 
llvm::TimePassesIsEnabled. Including the place that set 
llvm::TimePassesIsEnabled for -ftime-report. The effect of this is that 
-ftime-report now only contains the timers specifically referenced in 
CodeGenAction.cpp and none of the timers in the backend.

This commit adds back the assignment, but otherwise leaves everything else 
unchanged.


Modified:
cfe/branches/release_70/   (props changed)
cfe/branches/release_70/lib/CodeGen/CodeGenAction.cpp

Propchange: cfe/branches/release_70/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Aug  9 05:46:44 2018
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:338552-338553,338602,338627,338749,338942,339128,339170,339210,339317
+/cfe/trunk:338552-338553,338602,338627,338749,338942,339128,339170,339210,339281,339317
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_70/lib/CodeGen/CodeGenAction.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/branches/release_70/lib/CodeGen/CodeGenAction.cpp?rev=339341&r1=339340&r2=339341&view=diff
==
--- cfe/branches/release_70/lib/CodeGen/CodeGenAction.cpp (original)
+++ cfe/branches/release_70/lib/CodeGen/CodeGenAction.cpp Thu Aug  9 05:46:44 
2018
@@ -127,6 +127,7 @@ namespace clang {
 CodeGenOpts, C, CoverageInfo)),
   LinkModules(std::move(LinkModules)) {
   FrontendTimesIsEnabled = TimePasses;
+  llvm::TimePassesIsEnabled = TimePasses;
 }
 llvm::Module *getModule() const { return Gen->GetModule(); }
 std::unique_ptr takeModule() {


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