- Sep 29, 2021
-
-
Arthur Eubanks authored
This reverts commit 952f030f. Causes bot failures.
-
Amy Zhuang authored
Unroll-and-jam currently doesn't work when the loop being unroll-and-jammed or any of its inner loops has iter_args. This patch modifies the unroll-and-jam utility to support loops with iter_args. Reviewed By: bondhugula Differential Revision: https://reviews.llvm.org/D110085
-
Louis Dionne authored
Instead of using a base class to store the members and the optional size, use [[no_unique_address]] to achieve the same thing without needing a base class. Also, as a fly-by: - Change subrange from struct to class (per the standard) - Improve the diagnostic for when one doesn't provide a size to the ctor of a sized subrange - Replace this->member by just member since it's not in a dependent base anymore This change would be an ABI break due to [[no_unique_address]], but we haven't shipped ranges anywhere yet, so this shouldn't affect anyone. Differential Revision: https://reviews.llvm.org/D110370
-
Arthur Eubanks authored
Some people downstream are reporting that this test fails. I've been unable to reproduce, but there is indeed something spooky going on. Pinning to the new PM suppresses the failure. I'm continuing to investigate this.
-
Arthur Eubanks authored
To avoid using the AST when emitting diagnostics, split the "dontcall" attribute into "dontcall-warn" and "dontcall-error", and also add the frontend attribute value as the LLVM attribute value. This gives us all the information to report diagnostics we need from within the IR (aside from access to the original source). One downside is we directly use LLVM's demangler rather than using the existing Clang diagnostic pretty printing of symbols. Reviewed By: nickdesaulniers Differential Revision: https://reviews.llvm.org/D110364
-
Siva Chandra Reddy authored
Reviewed By: michaelrj Differential Revision: https://reviews.llvm.org/D108948
-
Sanjay Patel authored
This is NFCI (no-functional-change-intended), but there are benign diffs possible with commutable ops as seen in the test diffs. The transforms were repeated for the commutative opcodes, but that should not be necessary if we canonicalize the patterns that we're matching. If both operands of the binop match, that should get folded eventually. The transform that starts with a mask op seems to over-constrain the use checks, so that could be a potential enhancement.
-
Sanjay Patel authored
-
Fangrui Song authored
-
thomasraoux authored
Fix how we calculate the new permutation map of the transfer ops. Differential Revision: https://reviews.llvm.org/D110638
-
Lang Hames authored
Also fixes 80-column rule violations.
-
Louis Dionne authored
Before this patch, we had features named 'libc++', 'libstdc++' and 'msvc' to describe the three implementations that use our test suite. This patch renames them to 'stdlib=libc++', 'stdlib=libstdc++', etc to avoid confusion between MSVC's STL and the MSVC compiler (or Clang in MSVC mode). Furthermore, this prepares the terrain for adding support for additional "implementations" to the test suite. Basically, I'd like to be able to treat Apple's libc++ differently from LLVM's libc++ for the purpose of testing, because those effectively behave in different ways in some aspects.
-
serge-sans-paille authored
Make it more generic by accepting weak_odr and dso_local specifiers. Differential Revision: https://reviews.llvm.org/D109967
-
Nikita Popov authored
This reverts commit f6954bf8. This breaks the test-suite O3 build: /home/nikic/llvm-test-suite/build-O3/tools/timeit --summary Bitcode/Benchmarks/Halide/local_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o.time /home/nikic/llvm-project/build/bin/clang++ -DNDEBUG -O3 -w -Werror=date-time -save-stats=obj -save-stats=obj -std=c++11 -MD -MT Bitcode/Benchmarks/Halide/local_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o -MF Bitcode/Benchmarks/Halide/local_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o.d -o Bitcode/Benchmarks/Halide/local_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o -c ../Bitcode/Benchmarks/Halide/local_laplacian/local_laplacian.bc While deleting: i64 % Use still stuck around after Def is destroyed: %12620 = mul i64 %12619, <badref> clang++: /home/nikic/llvm-project/llvm/lib/IR/Value.cpp:103: llvm::Value::~Value(): Assertion `materialized_use_empty() && "Uses remain when a value is destroyed!"' failed.
-
Anna Thomas authored
Function profile counts added to test cases. Regenerated test lines for loop predication test.
-
wlei authored
Differential Revision: https://reviews.llvm.org/D109769
-
serge-sans-paille authored
(This is a recommit of 3d6f49a5 that should no longer break validation since bd379915). It is a common practice in glibc header to provide an inline redefinition of an existing function. It is especially the case for fortified function. Clang currently has an imperfect approach to the problem, using a combination of trivially recursive function detection and noinline attribute. Simplify the logic by suffixing these functions by `.inline` during codegen, so that they are not recognized as builtin by llvm. After that patch, clang passes all tests from https://github.com/serge-sans-paille/fortify-test-suite Differential Revision: https://reviews.llvm.org/D109967
-
Leonard Chan authored
Some tests with binary IDs would fail with error: no profile can be merged. This is because raw profiles could have unaligned headers when emitting binary IDs. This means padding should be emitted after binary IDs are emitted to ensure everything else is aligned. This patch adds padding after each binary ID to ensure the next binary ID size is 8-byte aligned. This also adds extra checks to ensure we aren't reading corrupted data when printing binary IDs. Differential Revision: https://reviews.llvm.org/D110365
-
Aaron Ballman authored
This reverts commit c0687e19. There are testing failures being caught by bots. See http://45.33.8.238/linux/56886/step_8.txt as an example.
-
Sanjay Patel authored
-
Akira Hatanaka authored
-
Kevin Athey authored
This reverts commit 3d6f49a5. Broke bot: https://lab.llvm.org/buildbot/#/builders/5/builds/12360
-
Artem Belevich authored
This allows clang to work on Linux distributions like Debian where <CUDA-PATH>/include may be a symlink to /usr/include. We only need `cuda_wrappers` to be present before the standard C++ library headers. The CUDA SDK headers themselves do not need to be found that early. This addresses https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=995122 mentioned in post-commit comments on D108247 Differential Revision: https://reviews.llvm.org/D110596
-
Vitaly Buka authored
-
Siva Chandra Reddy authored
Reviewed By: michaelrj Differential Revision: https://reviews.llvm.org/D110611
-
Roman Gareev authored
multiplication The following code modifies elements of the array D. for (i = 0; i < _PB_NI; i++) for (j = 0; j < _PB_NJ; j++) { for (k = 0; k < _PB_NK; k++) { double Mul = A[i][k] * B[k][j]; D[i][j][k] += Mul; C[i][j] += Mul; } } Nevertheless, the code is recognised as a matrix-matrix multiplication, since the second and third dimensions of D are accessed with non-zero strides. This fixes the typo, which was made during the translation to C++ bindings (https://reviews.llvm.org/D35845). Reviewed By: Michael Kruse <llvm@meinersbur.de> Differential Revision: https://reviews.llvm.org/D110491 -
Jozef Lawrynowicz authored
The -mmcu= option accepts a generic MCU named "msp430", which sets the CPU to msp430 and disables hardware multiply support. The current purpose of accepting this value is to allow -mmcu= to be used as an alias for -mcpu=, however there are some downsides to doing this. -mmcu= provides additional features that will interfere with the expected behavior if the user tries to to use it as an alias for -mcpu=. -mmcu=msp430 will conflict with -mhwmult=, since the "msp430" MCU is defined to have no hardware multiply support, so the user will not be able to set an explicit hardware multiply version. -mmcu=msp430 will put "-Tmsp430.ld" on the linker command line, however TI's support files do not provide a linker script with this name and so the user would have to explicitly create it. Differential Revision: https://reviews.llvm.org/D108299
-
David Blaikie authored
Otherwise we're losing type information for these functions.
-
Lang Hames authored
The slab allocator is frequently used in -noexec tests where we want a consistent memory layout. In this context we also want to set the effective page size, rather than using the page size of the host process, since not all systems use the same page size. The -slab-page-size option allows us to set the page size for such tests. The -slab-page-size option will also be honored in exec mode when using the slab allocator, but will trigger an error if the requested size is not a multiple of the actual process page size. This option was motivated by test failures on a ppc64 bot that was returning zero from sys::Process::getPageSize(), so it also contains a check for errors and zero results from that function if the -slab-page-size option is absent. Existing slab allocator tests will be updated to use this option in a follow-up commit so that we can point the failing bot at this commit and observe errors associated with sys::Process::getPageSize().
-
Lang Hames authored
MachO doesn't have a '.text.startup' -- this is just plain unsupported.
-
Michael Jones authored
Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D110581
-
Adrian Prantl authored
This patch improves the effectiveness of BDCE's debug info salvaging by processing the instructions in reverse order and delaying dropAllReferences until after debug info salvaging. This allows salvaging of entire chains of deleted instructions! Previously we would remove all references from an instruction, which would make it impossible to use that instruction to salvage a later instruction in the instruction stream, because its operands were already removed. Differential Revision: https://reviews.llvm.org/D110568
-
Adrian Prantl authored
This patch improves the effectiveness of ADCE's debug info salvaging by processing the instructions in reverse order and delaying dropAllReferences until after debug info salvaging. This allows salvaging of entire chains of deleted instructions! Previously we would remove all references from an instruction, which would make it impossible to use that instruction to salvage a later instruction in the instruction stream, because its operands were already removed. Differential Revision: https://reviews.llvm.org/D110462
-
Adrian Prantl authored
This patch enables debug info salvaging for truncating/extending ptr int conversions. The testcase uncovered a bug in adce, which is addressed separately. rdar://80227769 Differential Revision: https://reviews.llvm.org/D110461
-
Paul Robinson authored
There are two sets of new/delete functions, one with Windows/MSVC mangling and one with Itanium mangling. Mark one set or the other as unavailable depending on the target. Split the test malloc-free-delete.ll into three parts: malloc-free.dll for the C API tests, new-delete-itanium.ll and new-delete-msvc.ll for the target-specific new/delete tests. Differential Revision: https://reviews.llvm.org/D110419
-
Simon Pilgrim authored
-
Yuanfang Chen authored
(This relands 59337263 and makes sure comma operator diagnostics are suppressed in a SFINAE context.) While at it, add the diagnosis message "left operand of comma operator has no effect" (used by GCC) for comma operator. This also makes Clang diagnose in the constant evaluation context which aligns with GCC/MSVC behavior. (https://godbolt.org/z/7zxb8Tx96) Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D103938
-
Fangrui Song authored
* Add a newline before `DYNAMIC RELOCATION RECORDS` (see D101796) * Add the missing `OFFSET TYPE VALUE` line * Align columns Note: llvm-readobj/ELFDumper.cpp `loadDynamicTable` has sophisticated PT_DYNAMIC code which is unavailable in llvm-objdump. Reviewed By: jhenderson, Higuoxing Differential Revision: https://reviews.llvm.org/D110595
-
Alex Richardson authored
This commit is the InstCombine follow-up to the previous constant-folding change that enables noticeable optimizations for CHERI-enabled targets. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D110247
-
Alex Richardson authored
I was looking at some missed optimizations in CHERI-enabled targets and noticed that we weren't removing vtable indirection for calls via known pointers-to-members. The underlying reason for this is that we represent pointers-to-function-members as {i8 addrspace(200)*, i64} and generate the constant offsets using (gep i8 null, <index>). We use a constant GEP here since inttoptr should be avoided for CHERI capabilities. The pointer-to-member call uses ptrtoint to extract the index, and due to this missing fold we can't infer the actual value loaded from the vtable. This is the initial constant folding change for this pattern, I will add an InstCombine fold as a follow-up. We could fold all inbounds GEP to null (and therefore the ptrtoint to zero) since zero is the only valid offset for an inbounds GEP. If the offset is not zero, that GEP is poison and therefore returning 0 is valid (https://alive2.llvm.org/ce/z/Gzb5iH). However, Clang currently generates inbounds GEPs on NULL for hand-written offsetof() expressions, so this could lead to miscompilations. Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D110245
-