[llvm-branch-commits] [compiler-rt-branch] r339315 - Merging r339303:
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:
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:
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:
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:
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