- Apr 20, 2022
-
-
Sheng authored
Empty test commit, check commit access
-
Ting Wang authored
-
Whisperity authored
The routine that facilitated symbols to be explicitly allowed asked the name of the called function, which resulted in a crash when the check was accidentally run on non-trivial C++ code. Differential Revision: http://reviews.llvm.org/D123992 Reviewed By: aaron.ballman
-
chenglin.bi authored
Baseline tests for D123453(issue #54824)
-
Jean Perier authored
A missing "!" in the call interface lowering caused all derived type arguments without length parameters that require and explicit interface to be passed via fir.box (runtime descriptor). This was not the intent: there is no point passing a simple derived type scalars or explicit shapes by descriptor just because they have an attribute like TARGET. This would actually be problematic with existing code that is not always 100% compliant: some code implicitly calls procedures with TARGET dummy attributes (this is not something a compiler can enforce if the call and procedure definition are not in the same file). Add a Scope::IsDerivedTypeWithLengthParameter to avoid passing derived types with only kind parameters by descriptor. There is no point, the callee knows about the kind parameter values. Differential Revision: https://reviews.llvm.org/D123990
-
Konrad Kleine authored
Fixes [[ https://github.com/llvm/llvm-project/issues/38995 | #38995 ]] This is an attempt to modify the regular expression to identify `@import` and `import` alongside the regular `#include`. The challenging part was not to support `@` in addition to `#` but how to handle everything that comes after the `include|import` keywords. Previously everything that wasn't `"` or `<` was consumed. But as you can see in this example from the issue #38995, there is no `"` or `<` following the keyword: ``` @import Foundation; ``` I experimented with a lot of fancy and useful expressions in [this online regex tool](https://regex101.com) only to find out that some things are simply not supported by the regex implementation in LLVM. * For example the beginning `[\t\ ]*` should be replacable by the horizontal whitespace character `\h*` but this will break the `SortIncludesTest.LeadingWhitespace` test. That's why I've chosen to come back to the basic building blocks. The essential change in this patch is the change from this regular expression: ``` ^[\t\ ]*#[\t\ ]*(import|include)[^"<]*(["<][^">]*[">]) ~ ~~~~~~~~~~~~~~ ^ ^ | | only support # prefix not @ | only support "" and <> as delimiters no support for C++ modules and ; ending. Also this allows for "> or <" or "" or <> which all seems either off or wrong. ``` to this: ``` ^[\t\ ]*[@#][\t\ ]*(import|include)([^"]*("[^"]+")|[^<]*(<[^>]+>)|[\t\ ]*([^;]+;)) ~~~~ ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ ^ ^ ^ ^ ^ | | | | | Now support @ and #. Clearly support "" and <> as well as an include name without enclosing characters. Allows for no mixture of "> or <" or empty include names. ``` Here is how I've tested this patch: ``` ninja clang-Format ninja FormatTests ./tools/clang/unittests/Format/FormatTests --gtest_filter=SortIncludesTest* ``` And if that worked I doubled checked that nothing else broke by running all format checks: ``` ./tools/clang/unittests/Format/FormatTests ``` One side effect of this change is it should partially support [C++20 Module](https://en.cppreference.com/w/cpp/language/modules) `import` lines without the optional `export` in front. Adding this can be a change on its own that shouldn't be too hard. I say partially because the `@` or `#` are currently *NOT* optional in the regular expression. I see an opportunity to optimized the matching to exclude `@include` for example. But eventually these should be caught by the compiler, so... With my change, the matching group is not at a fixed position any longer. I decided to choose the last match (group) that is not empty. Reviewed By: HazardyKnusperkeks Differential Revision: https://reviews.llvm.org/D121370
-
Max Kazantsev authored
The original patch leads to malformed phis on this test. Make sure we're safeguarded from its return until it is fixed.
-
Douglas Yung authored
Make tests slightly more flexible for platforms which emit arguments in between some of the expected arguments.
-
Fangrui Song authored
-
Fangrui Song authored
-
Fangrui Song authored
test/Transforms/InstCombine/pr39177.ll failed in a -DLLVM_USE_SANITIZER=Undefined build. ``` lib/Transforms/Utils/BuildLibCalls.cpp:1217:17: runtime error: reference binding to null pointer of type 'llvm::Function' ``` `Function &F = *M->getFunction(Name);` This reverts commit 0f8c6267.
-
LLVM GN Syncbot authored
-
Nico Weber authored
Tests now try to run it, so we need a build file for it.
-
Richard authored
When a macro is undef'ed or used in a preprocessor conditional expression, we need to remember that macro should it later be defined in the file to an integral value. We need to exclude such macro names from being turned into an enum. Maintain a blacklist of identifiers that we've seen in an undef or conditional preprocessor directive. When the file is done processing, remove all the blacklisted identifiers from conversion to an enum. Differential Revision: https://reviews.llvm.org/D123889 Fixes #54842
-
jacquesguan authored
This patch adds check of supported reduction kind for ScanOp to avoid using and/or/xor for floating point type. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D123977
-
Matt Arsenault authored
Many of the users of this add their own "error:" to the start, resulting in error: error.
-
Matt Arsenault authored
-
Petr Hosek authored
This is needed to use clang-include-fixer. Differential Revision: https://reviews.llvm.org/D124053
-
Matt Arsenault authored
-
Matt Arsenault authored
These don't seem to be very well used or tested, but try to make the behavior a bit more consistent with LDS globals. I'm not sure what the definition for amdgpu-gds-size is supposed to mean. For now I assumed it's allocating a static size at the beginning of the allocation, and any known globals are allocated after it.
-
Matt Arsenault authored
-
Matt Arsenault authored
-
jacquesguan authored
This patch adds vector predication type cast intrinsic ops. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D123996
-
Matt Arsenault authored
-
Matt Arsenault authored
This can be set up front, and used only as a cache. This avoids a field that looks like it requires MIR serialization. I believe this fixes 2 bugs for CodeView. First, this addresses a FIXME that the flag -diable-debug-info-print only works with DWARF. Second, it fixes emitting debug info with emissionKind NoDebug.
-
Matt Arsenault authored
-
Matt Arsenault authored
ValueMap should only be necessary if the IR values can be replaced. This is only used during codegen, when it's illegal to change the underlying IR. This allows using the default copy constructor for X86MachineFunctionInfo. I'm not happy about targets keeping state here that's only used in one specific pass, but we don't have a better place to put it right now.
-
Matt Arsenault authored
There's no reason to create these immediately. They can be created in the prolog/epilog code like CSR spills. There's probably a cleaner way to do this by utilizing the CSR spill code. This makes the frame index used transient state for PrologEpilogInserter, and thus makes serialization easier. Really this doesn't need to be saved here but there isn't really a better place for it.
-
Matt Arsenault authored
-
Matt Arsenault authored
Defs must be registers and there's no point to code after llvm_unreachable.
-
Matt Arsenault authored
These were leftovers from a half-implement spill to LDS attempt.
-
Matt Arsenault authored
The assert in SelectionDAG implies that it is
-
Matt Arsenault authored
Otherwise the legalizer verifier error isn't triggered since the default is fallback.
-
Matt Arsenault authored
-
Matt Arsenault authored
getMinClassForRegBank and getRegClassForTypeOnBank were basically identical functions with different APIs. Consolidate on the version that uses LLT instead of a bitwidth, since that would be more appropriate to use in a generic API. Keep getMinClassForRegBank around for now, since copies are a special case that can't simply read the type from the register operands.
-
Matt Arsenault authored
-
Matt Arsenault authored
getVRegDef is not allowed to fail for generic virtual registers, so there's not much point in checking it.
-
Matt Arsenault authored
These things are checked in the verifier already, so there's not much point in re-asserting them here. They aren't directly verified for the copy-like extension artifacts, but the incorrect output copies would be caught on the other side.
-
Fangrui Song authored
-
Mehdi Amini authored
-