- Oct 20, 2020
-
-
Volodymyr Sapsai authored
-
Jon Chesterfield authored
[libomptarget][amdgcn] Implement missing symbols in deviceRTL Malloc, wtime are stubs. Malloc needs a hostrpc implementation which is a work in progress, wtime needs some experimentation to find out the multiplier to get a time in seconds as documentation is scarce. Reviewed By: ronlieb Differential Revision: https://reviews.llvm.org/D89725
-
Evgenii Stepanov authored
Revert "Fix compiler-rt build on Windows after D89640" This reverts commit a7acee89. This reverts commit d09b0891. Reason: breaks Linux / x86_64 build.
-
Duncan P. N. Exon Smith authored
Update `Lexer` / `Lexer::Lexer` to use `MemoryBufferRef` instead of `MemoryBuffer*`. Callers that were acquiring a `MemoryBuffer*` via `SourceManager::getBuffer` were updated, such that if they checked `Invalid` they use `getBufferOrNone` and otherwise `getBufferOrFake`. Differential Revision: https://reviews.llvm.org/D89398
-
Sean Silva authored
Now, convert-shape-to-std doesn't internally create memrefs, which was previously a bit of a layering violation. The conversion to memrefs should logically happen as part of bufferization. Differential Revision: https://reviews.llvm.org/D89669
-
Sean Silva authored
The framework was not tracking ops created in any regions of the cloned op. Differential Revision: https://reviews.llvm.org/D89668
-
Sean Silva authored
It's unfortunate that this requires adding a dependency on scf dialect to std bufferization (and hence all of std transforms). This is a bit perilous. We might want a lib/Transforms/Bufferize/ with a separate bufferization library per dialect? Differential Revision: https://reviews.llvm.org/D89667
-
Sean Silva authored
Add bufferizations for extract_element and tensor_from_elements. Differential Revision: https://reviews.llvm.org/D89594
-
Volodymyr Sapsai authored
Measure amount of high-level or fixed-cost operations performed during building/loading modules and during header search. High-level operations like building a module or processing a .pcm file are motivated by previous issues where clang was re-building modules or re-reading .pcm files unnecessarily. Fixed-cost operations like `stat` calls are tracked because clang cannot change how long each operation takes but it can perform fewer of such operations to improve the compile time. Also tracking such stats over time can help us detect compile-time regressions. Added stats are more stable than the actual measured compilation time, so expect the detected regressions to be less noisy. On relanding drop stats in MemoryBuffer.cpp as their value is pretty low but affects a lot of clients and many of those aren't interested in modules and header search. rdar://problem/55715134 Reviewed By: aprantl, bruno Differential Revision: https://reviews.llvm.org/D86895
-
Stanislav Mekhanoshin authored
GFX10 enables third addressing mode for flat scratch instructions, an ST mode. In that mode both register operands are omitted and only swizzled offset is used in addition to flat_scratch base. Differential Revision: https://reviews.llvm.org/D89501
-
Walter Erquinigo authored
Renamed ThreadIntelPT to TreaceThread, making it a top-level class. I noticed that this class can and shuld work for any trace plugin and there's nothing intel-pt specific in it. With that TraceThread change, I was able to move most of the json file parsing logic to the base class TraceSessionFileParser, which makes adding new plug-ins easier. This originally was part of https://reviews.llvm.org/D89283 Differential Revision: https://reviews.llvm.org/D89408
-
Jordan Rupprecht authored
-
Sergei Trofimovich authored
Before the change attempt to link libLTO.so against shared LLVM library failed as: ``` [ 76%] Linking CXX shared library ../../lib/libLTO.so ... /usr/bin/cmake -E cmake_link_script CMakeFiles/LTO.dir/link.txt --verbose=1 c++ -o ...libLTO.so.12git ...ibLLVM-12git.so ld: CMakeFiles/LTO.dir/lto.cpp.o: in function `llvm::InitializeAllTargetInfos()': include/llvm/Config/Targets.def:31: undefined reference to `LLVMInitializeVETargetInfo' ``` It happens because on linux llvm build system sets default symbol visibility to "hidden". The fix is to set visibility back to "default" for exported APIs with LLVM_EXTERNAL_VISIBILITY. Bug: https://bugs.llvm.org/show_bug.cgi?id=47847 Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D89633
-
Yaxun (Sam) Liu authored
This recommits 7f1f89ec and 40df06cd with bug fixes for memory sanitizer failure and Tensile build failure.
-
Yaxun (Sam) Liu authored
PartialDiagnostic misses some functions compared to DiagnosticBuilder. This patch refactors DiagnosticBuilder and PartialDiagnostic, extracts the common functionality so that the streaming << operators are shared. Differential Revision: https://reviews.llvm.org/D84362
-
Amy Huang authored
Port pass to NPM and update tests in DebugInfo/Generic. Differential Revision: https://reviews.llvm.org/D89730
-
Roman Lebedev authored
The main tricky thing here is forward-declaring the enum: we have to specify it's underlying data type. In particular, this avoids the danger of switching over the SCEVTypes, but actually switching over an integer, and not being notified when some case is not handled. I have updated most of such switches to be exaustive and not have a default case, where it's pretty obvious to be the intent, however not all of them.
-
Roman Lebedev authored
Makes diff in next commit more readable
-
Roman Lebedev authored
If we switch over an enum, compiler can easily issue a diagnostic if some case is not handled. However with an if cascade that isn't so. Experimental evidence suggests new behavior to be superior.
-
Dávid Bolvanský authored
D18714 introduced writeonly attribute: "Also start using the attribute for memset, memcpy, and memmove intrinsics, and remove their special-casing in BasicAliasAnalysis." But actually, writeonly was not attached to memmove - oversight, it seems. So let's add it. As we can see, this helps DSE to eliminate redundant stores. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D89724
-
Martin Storsjö authored
Move the functions to the helper header and keep the arch specific logic there. Differential Revision: https://reviews.llvm.org/D89681
-
Martin Storsjö authored
Use fs::path as variable type instead of std::string, when the input potentially is a path, as they can't be implicitly converted back to string. Differential Revision: https://reviews.llvm.org/D89674
-
Martin Storsjö authored
Use .string() instead of .native() in places where we want to combine paths with std::string. Convert some methods to take a fs::path as parameter instead of std::string, for cases where they are called with paths as parameters (which can't be implicitly converted to std::string if the path's string_type is wstring). Differential Revision: https://reviews.llvm.org/D89530
-
Martin Storsjö authored
This fixes/silences a few failures on libstdc++ on linux. Differential Revision: https://reviews.llvm.org/D89676
-
Martin Storsjö authored
Differential Revision: https://reviews.llvm.org/D89673
-
Martin Storsjö authored
Differential Revision: https://reviews.llvm.org/D89675
-
Martin Storsjö authored
Mark this as a libcpp specific test; the standard doesn't say that this method should be noexcept. Differential Revision: https://reviews.llvm.org/D89677
-
Martin Storsjö authored
The standard doesn't declare this overload as noexcept, but doesn't either say that it strictly cannot be noexcept either. The function doesn't throw on errors that are signaled via error_code, but the standard says that it may throw a bad_alloc. This fixes an error with libstdc++ on linux. Differential Revision: https://reviews.llvm.org/D89678
-
Martin Storsjö authored
This makes them more readable in llvm-lit's output on failures. This only applies the change on the filesystem test subdir. Differential Revision: https://reviews.llvm.org/D89680
-
Martin Storsjö authored
Differential Revision: https://reviews.llvm.org/D89702
-
Duncan P. N. Exon Smith authored
Update clang/lib/Format and clang/lib/Rewrite to use a `MemoryBufferRef` from `getBufferOrFake` instead of `MemoryBuffer*` from `getBuffer`. No functionality change here, since the call sites weren't checking if the buffer was valid. Differential Revision: https://reviews.llvm.org/D89406
-
Evgenii Stepanov authored
Summary: Initializer merging generates pretty inefficient code for large allocas that also happens to trigger an exponential algorithm somewhere in Machine Instruction Scheduler. See https://bugs.llvm.org/show_bug.cgi?id=47867. This change adds an upper limit for the alloca size. The default limit is selected such that worst case size of memtag-generated code is similar to non-memtag (but because of the ISA quirks, this case is realized at the different value of alloca size, ex. memset inlining triggers at sizes below 512, but stack tagging instructions are 2x shorter, so limit is approx. 256). We could try harder to emit more compact code with initializer merging, but that would only affect large, sparsely initialized allocas, and those are doing fine already. Reviewers: vitalybuka, pcc Subscribers: llvm-commits
-
Arthur Eubanks authored
The NPM runs SpeculateAroundPHIs which breaks critical edges, causing a branch we check for to not directly jump back to the same block.
-
Craig Topper authored
This enables these transforms for vectors: (ctpop x) u< 2 -> (x & x-1) == 0 (ctpop x) u> 1 -> (x & x-1) != 0 (ctpop x) == 1 --> (x != 0) && ((x & x-1) == 0) (ctpop x) != 1 --> (x == 0) || ((x & x-1) != 0) All enabled if CTPOP isn't Legal. This differs from the scalar behavior where the first two are done unconditionally and the last two are done if CTPOP isn't Legal or Custom. The Legal check produced better results for vectors based on X86's custom handling. Might be worth re-visiting scalars here. I disabled the looking through truncate for vectors. The code that creates new setcc can use the same result VT as the original setcc even if we truncated the input. That may work work for most scalars, but definitely wouldn't work for vectors unless it was a vector of i1. Fixes or at least improves PR47825 Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D89346
-
Craig Topper authored
We have pseudo instructions we use for bitcasts between these types. We have them in the load folding table, but not the store folding table. This adds them there so they can be used for stack spills. I added an exact size check so that we don't fold when the stack slot is larger than the GPR. Otherwise the upper bits in the stack slot would be garbage. That would be fine for Eli's test case in PR47874, but I'm not sure its safe in general. A step towards fixing PR47874. Next steps are to change the ADDSSrr_Int pseudo instructions to use FR32 as the second source register class instead of VR128. That will keep the coalescer from promoting the register class of the bitcast instruction which will make the stack slot 4 bytes instead of 16 bytes. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D89656
-
Matt Arsenault authored
-
Lang Hames authored
-
Arthur Eubanks authored
-
Nikita Popov authored
AA computes the correct result for phi/a1 aliasing, while BatchAA produces an incorrect result depening on which queries have been performed beforehand.
-
Tony authored
-