- Mar 31, 2020
-
-
Sameer Sahasrabuddhe authored
For each natural loop with multiple exit blocks, this pass creates a new block N such that all exiting blocks now branch to N, and then control flow is redistributed to all the original exit blocks. The bulk of the tranformation is a new function introduced in BasicBlockUtils that an redirect control flow from a set of incoming blocks to a set of outgoing blocks via a common "hub". This is a useful workaround for a limitation in the structurizer which incorrectly orders blocks when processing a nest of loops. This pass bypasses that issue by ensuring that each natural loop is recognized as a separate region. Since the structurizer is a region pass, it no longer sees a nest of loops in a single region, and instead processes each "level" in the nesting as a separate region. The AMDGPU backend provides a new option to enable this pass before the structurizer, which may eventually be enabled by default. Reviewers: madhur13490, arsenm, nhaehnle Reviewed By: nhaehnle Differential Revision: https://reviews.llvm.org/D75865
-
Vedant Kumar authored
In InnerLoopVectorizer::getOrCreateTripCount, when the backedge taken count is a SCEV add expression, its type is defined by the type of the last operand of the add expression. In the test case from PR45259, this last operand happens to be a pointer, which (according to llvm::Type) does not have a primitive size in bits. In this case, LoopVectorize fails to truncate the SCEV and crashes as a result. Uing ScalarEvolution::getTypeSizeInBits makes the truncation work as expected. https://bugs.llvm.org/show_bug.cgi?id=45259 Differential Revision: https://reviews.llvm.org/D76669
-
Fangrui Song authored
Currently, `error: incompatible section flags for .rodata` is reported when we mix SHF_LINK_ORDER and non-SHF_LINK_ORDER sections in an output section. This is overconstrained. This patch allows mixed flags with the requirement that SHF_LINK_ORDER sections must be contiguous. Mixing flags is used by Linux aarch64 (https://github.com/ClangBuiltLinux/linux/issues/953) .init.data : { ... KEEP(*(__patchable_function_entries)) ... } When the integrated assembler is enabled, clang's -fpatchable-function-entry=N[,M] implementation sets the SHF_LINK_ORDER flag (D72215) to fix a number of garbage collection issues. Strictly speaking, the ELF specification does not require contiguous SHF_LINK_ORDER sections but for many current uses of SHF_LINK_ORDER like .ARM.exidx/__patchable_function_entries there has been a requirement for the sections to be contiguous on top of the requirements of the ELF specification. This patch also imposes one restriction: SHF_LINK_ORDER sections cannot be separated by a symbol assignment or a BYTE command. Not allowing BYTE is a natural extension that a non-SHF_LINK_ORDER cannot be a separator. Symbol assignments can delimiter the contents of SHF_LINK_ORDER sections. Allowing SHF_LINK_ORDER sections across symbol assignments (especially __start_/__stop_) can make things hard to explain. The restriction should not be a problem for practical use cases. Reviewed By: psmith Differential Revision: https://reviews.llvm.org/D77007
-
Raul Tambre authored
It's set to OFF by default at libcxx/CMakeLists.txt:73. Differential Revision: https://reviews.llvm.org/D76905
-
Louis Dionne authored
This allows adding compilation flags for a single test, which can help eliminate some .sh.cpp tests and some custom handling in the libc++ test format. It also works around the issue that .sh.cpp substitutions are _not_ equivalent to the actual compiler command lines used to compile tests, since the compiler flags can be modified in local lit configurations, and substitutions are frozen at that point. For example using %{compile} in a .sh.cpp test in the coroutines subdirectory will not include the -fcoroutines-ts flag, which is added in the local lit config, because the %{compile} substitution is created long before we add -fcoroutines-ts to the compiler flags (in the lit.local.cfg for coroutines). -
Fangrui Song authored
-
Yuanfang Chen authored
[X86] make sure POP has implicit def/use of stack pointer when materializing 8-bit immediates for minsize Summary: Otherwise PostRA list scheduler may reorder instruction, such as schedule this ''' pushq $0x8 pop %rbx lea 0x2a0(%rsp),%r15 ''' to ''' pushq $0x8 lea 0x2a0(%rsp),%r15 pop %rbx ''' by mistake. The patch is to prevent this to happen by making sure POP has implicit use of SP. Reviewers: craig.topper Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D77031
-
- Mar 30, 2020
-
-
Gabor Marton authored
Reviewers: Szelethus, NoQ Subscribers: whisperity, xazax.hun, baloghadamsoftware, szepet, rnkovacs, a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, gamesh411, Charusso, steakhal, ASDenysPetrov, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D77061
-
Guillaume Chatelet authored
Summary: This is patch is part of a series to introduce an Alignment type. See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html See this patch for the introduction of the type: https://reviews.llvm.org/D64790 Reviewers: courbet Subscribers: jyknight, sdardis, nemanjai, hiraditya, kbarton, fedor.sergeev, asb, rbar, johnrusso, simoncook, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, atanasyan, rogfer01, MartinMosbeck, brucehoult, the_o, jfb, PkmX, jocewei, Jim, lenary, s.egerton, pzheng, sameer.abuasal, apazos, luismarques, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D77059
-
Pavel Labath authored
This reverts commit because of test failures in TestHelloWorld. It seems that this test (specifically running "ls" as a platform shell command) depended on the implicit passing of the host environment. The fix should be fairly simple (inherit the environment explicitly), but it may take me a while to figure where exactly to do that. Revert while I am figuring that out.
-
Matt Arsenault authored
-
Louis Dionne authored
This will become more relevant as we shift more filesystem-specific logic to the local lit configuration in test/std/input.output/filesystems.
-
Matt Arsenault authored
I still think the call lowering type legalization logic split between the generic code and target is too confusing, but largely induced by the reliance on the DAG infrastructure.
-
Matt Arsenault authored
Mostly ported from the DAG version. This results in much worse code than the DAG version, largely due to a much worse expansion for G_UMULH.
-
Chris Jackson authored
InstCombine does not result in an incorrect debuginfo variable value - Add an additional salvage and a test. Reviewers: aprantl, djtodoro Differential Revision: https://reviews.llvm.org/D76854 Bugzilla: https://bugs.llvm.org/show_bug.cgi?id=44371
-
Florian Hahn authored
As per post-commit comment at https://reviews.llvm.org/D76916, this should better be done at the TU level. This reverts commit 9ce198d6.
-
Benjamin Kramer authored
Found by msan.
-
Pavel Labath authored
Summary: A defensive check in ProcessLauncherWindows meant that we would never attempt to launch a process with a completely empty environment -- the host environment would be used instead. Instead, I make the function add an extra null wchar_t at the end of an empty environment. The documentation on this is a bit fuzzy, but it seems to be what is needed to make windows accept these kinds of environments. Reviewers: amccarth, friss Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D76835
-
Louis Dionne authored
Since its important to know whether a function frees memory (even if its a reallocating function!), I used two CallDescriptionMaps to merge all CallDescriptions into it. MemFunctionInfoTy no longer makes sense, it may never have, but for now, it would be more of a distraction then anything else. Differential Revision: https://reviews.llvm.org/D68165
-
Pavel Labath authored
Summary: D73024 seems to have fixed one set crash, but it introduced another. Namely, if a class contains a covariant method returning itself, the logic in MaybeCompleteReturnType could cause us to attempt a recursive import, which would result in an assertion failure in clang::DeclContext::removeDecl. For some reason, this only manifested itself if the class contained at least two member variables, and the class itself was imported as a result of a recursive covariant import. This patch fixes the crash by not attempting to import classes which are already completed in MaybeCompleteReturnType. However, it's not clear to me if this is the right fix, or if this should be handled automatically by functions lower in the stack. Reviewers: teemperor, shafik Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D76840
-
Chris Jackson authored
value as undefined - Correct a debug info salvage and add a test Reviewers: aprantl, vsk Differential Revision: https://reviews.llvm.org/D76930 Bugzilla: https://bugs.llvm.org/show_bug.cgi?id=45080 -
Louis Dionne authored
We've been meaning to remove those targets for a while, and the fix is simple enough cause they're all just aliases to other targets. This is a re-application of f383fb40, wich was reverted in 04d48111 because the build bots had not been updated yet. The build bot configurations have now been updated not to use the deprecated targets, and I verified that they were using the non-deprecated targets, so we should be good unless I missed a bot. Differential Revision: https://reviews.llvm.org/D76104
-
Sanjay Patel authored
Goes with D76983
-
Alexey Bataev authored
Summary: Added basic representation and parsing/sema handling of array-shaping operations. Array shaping expression is an expression of form ([s0]..[sn])base, where s0, ..., sn must be a positive integer, base - a pointer. This expression is a kind of cast operation that converts pointer expression into an array-like kind of expression. Reviewers: rjmccall, rsmith, jdoerfert Subscribers: guansong, arphaman, cfe-commits, caomhin, kkwli0 Tags: #clang Differential Revision: https://reviews.llvm.org/D74144
-
Guillaume Chatelet authored
[Alignment][NFC] Provide tightened up functions in SelectionDAG, MachineFunction and MachineMemOperand Summary: This is patch is part of a series to introduce an Alignment type. See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html See this patch for the introduction of the type: https://reviews.llvm.org/D64790 Reviewers: courbet Subscribers: hiraditya, jfb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D77046
-
Haojian Wu authored
Summary: We mark these decls as invalid. Reviewers: sammccall Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D77037
-
Georgii Rymar authored
This test missed the check of histograms printed for .hash sections. It was removed by mistake in D71606 where I tried to get rid of precompiled objects and did not realize that time that both SHT_GNU_HASH and SHT_HASH sections were tested and not just GNU version. Also it never tested aliases for the --elf-hash-histogram option. Differential revision: https://reviews.llvm.org/D76920
-
Ulrich Weigand authored
On Ubuntu, we want to raise default CLANG_SYSTEMZ_ARCH to z13, thus allow configuring this via CMake. On Debian, we want to raise it to z196. Author: Dimitri John Ledkov Differential Revision: https://reviews.llvm.org/D75914
-
Raphael Isemann authored
LLDB only automatically applies Fix-Its from errors, but not from warnings. Currently we only store Fix-Its from errors and then later apply all Fix-Its we stored. This moves the filter to the application phase, so that we now store *all* Fix-Its but only apply Fix-Its from errors later on. This is NFC preparation for an upcoming patch.
-
scentini authored
-
Raphael Isemann authored
Commit 83c81c0a enabled Fix-Its for top-level expressions which change the error message of this test here as Clang comes up with a strange Fix-It for this expression. This patch just changes the test to declare a void variable so that Clang doesn't see a way to recover with a Fix-It and change the error message.
-
Georgii Rymar authored
We are able to reduce `-DBITS=32/64` to reduce this test case. I've rewrote the comments we had to generalize them and fix wrong computations they contained. Differential revision: https://reviews.llvm.org/D76924
-
Simon Pilgrim authored
If we are lowering to X86ISD::SHUF128 we are going to lose track of individual 128-bit lanes that are UNDEF, so if we can widen these to guarantee that they are sequential with their neighbour we should. This helps with later shuffle combines.
-
Krasimir Georgiev authored
Commit "[clang-format] Handle C# generic type constraints", https://github.com/llvm/llvm-project/commit/dcbcec4822f47ec5b638dd9c20dcebd464569dae regressed the formatting of code containing `where` as an identifier in other languages.
-
Florian Hahn authored
The Chained in the name potentially leads to confusion. Also updated the comment to drop the unnecessary mention of tile-sized.
-
Florian Hahn authored
This fixes warning: loop variable 'Def' of type 'const llvm::Register' creates a copy from type 'const llvm::Register' [-Wrange-loop-analysis] llvm::Register just contains a single unsigned and should be copied. Reviewers: rampitec Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D77011 -
Florian Hahn authored
-
Raphael Isemann authored
Summary: Currently top-level expressions won't automatically get Fix-Its applied. The reason for that is that we only set the `m_fixed_text` member if we have a wrapping source code (I.e. `m_source_code` is not zero and is wrapping some expressions). This patch just always sets `m_fixed_text` to get this working. Reviewers: labath, jingham Reviewed By: labath Subscribers: JDevlieghere Differential Revision: https://reviews.llvm.org/D77042
-
Qiu Chaofan authored
Use script to update test for ori with 32-bit imms, and add test for ori with 64-bit imms.
-
Raphael Isemann authored
-