- Jun 18, 2020
-
-
Pete Steinfeld authored
Summary: We weren't handling the case of subroutines with alternate returns that are contained in modules. I changed the code to add an `*` as the name of the parameter when creating the `.mod` file. Reviewers: tskeith, klausler, DavidTruby Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D82096
-
Saleem Abdulrasool authored
Add missing `operator!=` and make `operator-` const for `EHABISectionIterator`. This repairs the build of libunwind when building with GCC. Patch by Chad Duffin! Reviewed By: compnerd, libunwind Differential Revision: https://reviews.llvm.org/D81597
-
Simon Pilgrim authored
[TargetLowering] SimplifyMultipleUseDemandedBits - drop already extended ISD::SIGN_EXTEND_INREG nodes. If the source of the SIGN_EXTEND_INREG node is already sign extended, use the source directly.
-
Nico Weber authored
-
Hans Wennborg authored
rm works fine without it.
-
hyd-dev authored
[clang-tidy] Add --use-color command line option and UseColor option to control colors in diagnostics This patch adds `--use-color` command line option and `UseColor` option to clang-tidy to control colors in diagnostics. With these options, users can force colorful output. This is useful when using clang-tidy with parallelization command line tools (like ninja and GNU parallel), as they often pipe clang-tidy's standard output and make the colors disappear. Reviewed By: njames93 Differential Revision: https://reviews.llvm.org/D79477
-
Matt Arsenault authored
-
Ayke van Laethem authored
Code like the following: define i32 @foo(i32 %a, i1 zeroext %b) addrspace(1) { entry: %conv = zext i1 %b to i32 %add = add nsw i32 %conv, %a ret i32 %add } Would compile to the following (incorrect) code: foo: mov r18, r20 clr r19 add r22, r18 adc r23, r19 sbci r24, 0 sbci r25, 0 ret Those sbci instructions are clearly wrong, they should have been adc instructions. This commit improves codegen to use adc instead: foo: mov r18, r20 clr r19 ldi r20, 0 ldi r21, 0 add r22, r18 adc r23, r19 adc r24, r20 adc r25, r21 ret This code is not optimal (it could be just 5 instructions instead of the current 9) but at least it doesn't miscompile. Differential Revision: https://reviews.llvm.org/D78439 -
Nathan James authored
This changes the behavious of `RenamerClangTidyCheck` based checks by grouping declarations of the same thing into 1 warning where it is first declared. This cleans up clang-tidy output and prevents issues where 1 fix-it couldn't be applied, yet all other warnings(and fix-its) for the same declaration would be applied. The old behaviour of forward declaring a class without defining it isn't affected, i.e. no warnings will be emitted for that case. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D82059
-
Matt Arsenault authored
This was depending on the MachineFunction at MachineFunctionInfo construction, which will soon be disallowed.
-
Simon Pilgrim authored
Allow combineSetCCMOVMSK to handle 'allof' X == 0 patterns to be replaced with PTESTZ This is a preliminary patch before properly handling PR35129
-
Christopher Di Bella authored
- Adds operator==(partial_ordering, partial_ordering) - Adds operator==(weak_ordering, weak_ordering) - Adds operator==(strong_ordering, strong_ordering) Differential Revision: https://reviews.llvm.org/D81823
-
Michael Park authored
Reviewers: #libc! Subscribers: libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D81973
-
Alexandre Ganea authored
This fixes: tools/clang/tools/clang-fuzzer/handle-cxx/CMakeFiles/obj.clangHandleCXX.dir/handle_cxx.cpp.o:handle_cxx.cpp:function clang_fuzzer::HandleCXX(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, std::vector<char const*, std::allocator<char const*> > const&): error: undefined reference to 'clang::tooling::newInvocation(clang::DiagnosticsEngine*, llvm::SmallVector<char const*, 16u> const&)'
-
Alexandre Ganea authored
[CodeView] Fix generated command-line expansion in LF_BUILDINFO. Fix the 'pdb' entry which was previously a null reference, now an empty string. Previously, the DIA SDK didn't like the empty reference in the 'pdb' entry.
-
Louis Dionne authored
Before this patch, the libc++ test suite first loads lit.site.cfg (generated by CMake), and then lit.cfg. It's also possible to load lit.cfg before lit.site.cfg and to point to a custom lit.site.cfg file using '--param=libcxx_site_config'. However, in that case, lit.cfg still relies on the site configuration filling up the 'config' object like the default lit.site.cfg file does, which isn't flexible enough. This commit simplifies the setup by having just a single Lit site config file per CMake configuration, and always loading exactly that config file. However, the config file to use can be selected when setting up CMake via the LIBCXX_TEST_CONFIG setting. Furthermore, the site configs are entirely standalone, which means that a new site config can be added that doesn't need to conform what's expected by config.py. Differential Revision: https://reviews.llvm.org/D81846
-
Kamlesh Kumar authored
Since i32 is not legal in riscv64, it always promoted to i64 before emitting lib call and for conversions like float/double to int and float/double to unsigned int wrong lib call was emitted. This commit fix it using custom lowering. Differential Revision: https://reviews.llvm.org/D80526
-
Jean-Michel Gorius authored
-
Igor Kudrin authored
The patch renames MakeStartMinusEndExpr() to makeEndMinusStartExpr() to better reflect an expression it creates and fix a naming style issue. Differential Revision: https://reviews.llvm.org/D82079
-
Alexandre Ganea authored
This patch adds some missing information to the LF_BUILDINFO which allows for rebuilding an .OBJ without any external dependency but the .OBJ itself (other than the compiler executable). Some tools need this information to reproduce a build without any knowledge of the build system. The LF_BUILDINFO therefore stores a full path to the compiler, the PWD (which is the CWD at program startup), a relative or absolute path to the TU, and the full CC1 command line. The command line needs to be freestanding (not depend on any environment variable). In the same way, MSVC doesn't store the provided command-line, but an expanded version (somehow their equivalent of CC1) which is also freestanding. For more information see PR36198 and D43002. Differential Revision: https://reviews.llvm.org/D80833
-
Alexandre Ganea authored
When targetting CodeView, the goal is to store argv0 & cc1 cmd-line in the emitted .OBJ, in order to allow a reproducer from the .OBJ alone. This patch is to simplify https://reviews.llvm.org/D80833
-
Alexandre Ganea authored
The API is not called in this patch. This is to simply/support https://reviews.llvm.org/D80833
-
Alexandre Ganea authored
This patch is to support/simplify https://reviews.llvm.org/D80833
-
Yaxun (Sam) Liu authored
Currently rocm detector expects device library bitcodes named as *.bc instead of *.amdgcn.bc. However in rocm3.5 the device library bitcodes are named as *.amdgcn.bc, which causes rocm3.5 not detected. This patch fixes that. Differential Revision: https://reviews.llvm.org/D81713
-
Bruno Ricci authored
An AST serialization dump test is a test which compares the output of -ast-dump on the source and of -ast-dump-all on a PCH generated from the source. Modulo a few differences the outputs should match. This patch to make-ast-dump-check.sh enables automatically generating these tests. Differential Revision: https://reviews.llvm.org/D81786 Reviewed By: aaron.ballman, lebedev.ri
-
Bruno Ricci authored
The body of LambdaExpr is currently not properly serialized. Instead LambdaExpr::getBody checks if the body has been already deserialized and if not mutates LambdaExpr. This can be observed with an AST dump test, where the body of the LambdaExpr will be null. The mutation in LambdaExpr::getBody was left because of another bug: it is not true that the body of a LambdaExpr is always a CompoundStmt; it can also be a CoroutineBodyStmt wrapping a CompoundStmt. This is fixed by returning a Stmt * from getBody and introducing a convenience function getCompoundStmtBody which always returns a CompoundStmt *. This function can be used by callers who do not care about the coroutine node. Happily all but one user of getBody treat it as a Stmt * and so this change is non-intrusive. Differential Revision: https://reviews.llvm.org/D81787 Reviewed By: aaron.ballman
-
Florian Hahn authored
Without the triple, the test fails on a windows bot (http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/16531/steps/stage%201%20check/logs/stdio) because of different full type widths (unsigned long long vs unsigned long)
-
Florian Hahn authored
This patch updates LowerMatrixIntrinsics to preserve the alignment specified at the original load/stores and the align attribute for the pointer argument of the column.major.load/store intrinsics. We can always use the specified alignment for the load of the first column. For subsequent columns, the alignment may need to be reduced. For ConstantInt strides, compute the offset for the start of the column in bytes and use commonAlignment to get the largest valid alignment. For non-ConstantInt strides, we need to take the common alignment of the initial alignment and the element size in bytes. Reviewers: anemet, Gerolf, hfinkel, andrew.w.kaylor, LuoYuanke, rjmccall Reviewed By: rjmccall Differential Revision: https://reviews.llvm.org/D81960
-
David Sherwood authored
There are now quite a few SVE tests in LLVM and Clang that do not emit warnings related to invalid use of EVT::getVectorNumElements() and VectorType::getNumElements(). For these tests I have added additional checks that there are no warnings in order to prevent any future regressions. Differential Revision: https://reviews.llvm.org/D80712
-
Lucas Prates authored
Summary: On the process of moving the argument lowering handling for half-precision floating point arguments and returns to the backend, this patch removes the code that was responsible for handling the coercion of those arguments in Clang's Codegen. Reviewers: rjmccall, chill, ostannard, dnsampaio Reviewed By: ostannard Subscribers: stuij, kristof.beyls, dmgreen, danielkiss, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D81451
-
Lucas Prates authored
Summary: As half-precision floating point arguments and returns were previously coerced to either float or int32 by clang's codegen, the CMSE handling of those was also performed in clang's side by zeroing the unused MSBs of the coercer values. This patch moves this handling to the backend's calling convention lowering, making sure the high bits of the registers used by half-precision arguments and returns are zeroed. Reviewers: chill, rjmccall, ostannard Reviewed By: ostannard Subscribers: kristof.beyls, hiraditya, danielkiss, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D81428
-
Lucas Prates authored
Summary: Half-precision floating point arguments and returns are currently promoted to either float or int32 in clang's CodeGen and there's no existing support for the lowering of `half` arguments and returns from IR in AArch32's backend. Such frontend coercions, implemented as coercion through memory in clang, can cause a series of issues in argument lowering, as causing arguments to be stored on the wrong bits on big-endian architectures and incurring in missing overflow detections in the return of certain functions. This patch introduces the handling of half-precision arguments and returns in the backend using the actual "half" type on the IR. Using the "half" type the backend is able to properly enforce the AAPCS' directions for those arguments, making sure they are stored on the proper bits of the registers and performing the necessary floating point convertions. Reviewers: rjmccall, olista01, asl, efriedma, ostannard, SjoerdMeijer Reviewed By: ostannard Subscribers: stuij, hiraditya, dmgreen, llvm-commits, chill, dnsampaio, danielkiss, kristof.beyls, cfe-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D75169
-
Paul Walker authored
Adds aarch64-sve-vector-bits-{min,max} to allow the size of SVE data registers (in bits) to be specified. This allows the code generator to make assumptions it normally couldn't. As a starting point this information is used to mark fixed length vector types that can fit within the specified size as legal. Reviewers: rengolin, efriedma Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80384 -
Sameer Sahasrabuddhe authored
For a loop, a join block is a block that is reachable along multiple disjoint paths from the exiting block of a loop. If the exit condition of the loop is divergent, then such join blocks must also be marked divergent. This currently fails in some cases because not all join blocks are identified correctly. The workaround is to conservatively mark every join block of any branch (not necessarily the exiting block of a loop) as divergent. https://bugs.llvm.org/show_bug.cgi?id=46372 Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D81806
-
Hans Wennborg authored
-
Tres Popp authored
Summary: This is to provide a utility to remove unsupported constraints or for pipelines that happen to receive these but cannot lower them due to not supporting assertions. Differential Revision: https://reviews.llvm.org/D81560
-
Florian Hahn authored
Currently the matrix lowering turns volatile loads/stores into non-volatile ones. This patch updates the lowering to preserve the volatile bit. Reviewers: anemet, Gerolf, hfinkel, andrew.w.kaylor, LuoYuanke, nicolasvasilache Reviewed By: anemet Differential Revision: https://reviews.llvm.org/D81498
-
Florian Hahn authored
This patch add __builtin_matrix_column_major_store to Clang, as described in clang/docs/MatrixTypes.rst. In the initial version, the stride is not optional yet. Reviewers: rjmccall, jfb, rsmith, Bigcheese Reviewed By: rjmccall Differential Revision: https://reviews.llvm.org/D72782
-
Sander de Smalen authored
For example: svint32_t svget4(svint32x4_t tuple, uint64_t imm_index) returns the subvector at `index`, which must be in range `0..3`. svint32x3_t svset3(svint32x3_t tuple, uint64_t index, svint32_t vec) returns a tuple vector with `vec` inserted into `tuple` at `index`, which must be in range `0..2`. Reviewers: c-rhodes, efriedma Reviewed By: c-rhodes Tags: #clang Differential Revision: https://reviews.llvm.org/D81464
-
Hans Wennborg authored
-