- Jan 24, 2022
-
-
Chuanqi Xu authored
This is required by ychen. See https://reviews.llvm.org/D117542
-
Jim Lin authored
[RISCV][NFC] Remove tailing whitespaces in RISCVInstrInfoVSDPatterns.td and RISCVInstrInfoVVLPatterns.td
-
Chuanqi Xu authored
This fixes bug 47716. According to [module.interface]p2, it is meaningless to export an entity which is not in namespace scope. The reason why the compiler crashes is that the compiler missed ExportDecl when the compiler traverse the subclass of DeclContext. So here is the crash. Also, the patch implements [module.interface]p6 in Sema::CheckRedeclaration* functions. Reviewed By: aaron.ballman, urnathan Differential Revision: https://reviews.llvm.org/D112903
-
David Blaikie authored
LLVM DebugInfo CodeGen synthesizes type declarations in type units when referencing types that are not in type units. When those synthesized types are templates and simplified template names (or mangled simplified template names) are in use, the template arguments must be attached to those declarations. A deeper fix (with a CU or DICompositeType flag) that would also support other uses of clang's -debug-forward-template-args (such as Sony's platform) could/should be implemented to fix this more broadly.
-
- Jan 23, 2022
-
-
Simon Pilgrim authored
-
David Blaikie authored
Doing this causes a declaration of the internal linkage (anonymous namespace) type to be emitted in the type unit, which would then be ambiguous as to which internal linkage definition it refers to (since the name is only valid internally). It's possible these internal linkage types could be resolved relative to the unit the TU is referred to from - but that doesn't seem ideal, and there's no reason to put the type in a type unit since it can only be defined in one CU anyway (since otherwise it'd be an ODR violation) & so avoiding the type unit should be a smaller DWARF encoding anyway. This also addresses an issue with Simplified Template Names where the template parameter could not be rebuilt from the declaration emitted into the TU (specifically for an enum non-type template parameter, where looking up the enumerators is necessary to rebuild the full template name)
-
Kazu Hirata authored
Identified with readability-const-return-type.
-
Kazu Hirata authored
Identified with bugprone-argument-comment.
-
Kazu Hirata authored
-
Craig Topper authored
We don't optimize this as well as we could. Bitreverse is always expanded to bswap and a shift/and/or sequence to swap bits within a byte. The newly created bswap will either becomes a shift/and/or sequence or rev8 instruction. We don't always realize the bswap is redundant with another bswap before or after the bitreverse. Found while thinking about the brev8 instruction from the Cryptography extension. It's equivalent to bswap(bitreverse(x)) or bitreverse(bswap(x)).
-
Craig Topper authored
Rename to include bitreverse. Add additional tests and Zbb command lines. There's some overlapping tests with rv32zbb.ll and rv64zbb.ll. Maybe I'll clean that up in a future patch.
-
Simon Pilgrim authored
This can always be lowered as PMULLW+PSRLWI+PACKUSWB
-
Kazu Hirata authored
-
Kazu Hirata authored
This patch adds a forward declaraiton of DynTypedNode. DumpAST.h is relying on the forward declaration of DynTypedNode in ASTContext.h, which is undesirable.
-
Kazu Hirata authored
This patch moves the definition of ASTDiff later within the header file. Without this patch, the header depends on the forward decalrations of SyntaxTree and ComparisonOptions from another header file, which is not desirable. Since SyntaxTree and ComparisonOptions are defined in ASTDiff.h, we can move the definition of ASTDiff later and stop relying on the forward declarations from another header file.
-
Simon Pilgrim authored
Allows us to reuse the ISD shift opcode instead of a mixture of ISD/X86ISD variants
-
Craig Topper authored
The Zbk* extensions have some overlap with Zb so have been placed in this file. Reviewed By: VincentWu Differential Revision: https://reviews.llvm.org/D117958
-
Groverkss authored
This patch changes names of identifiers and their corresponding getters in PresburgerSet to match those of IntegerPolyhedron. Reviewed By: arjunp Differential Revision: https://reviews.llvm.org/D117998
-
Kazu Hirata authored
Identified with readability-redundant-control-flow.
-
Kazu Hirata authored
Identified with readability-redundant-member-init.
-
Kazu Hirata authored
Identified with llvm-header-guard.
-
Nuno Lopes authored
-
Fangrui Song authored
* Merge parallel_for_each into parallelForEach (this removes 1 `Fn(...)` call) * Change parallelForEach to use parallelForEachN * Move parallelForEachN into Parallel.cpp My x86-64 `lld` executable is 100KiB smaller. No noticeable difference in performance. Reviewed By: lattner Differential Revision: https://reviews.llvm.org/D117510
-
Casey Carter authored
<meme>How many layers of irony are you on?</meme> Differential Revision: https://reviews.llvm.org/D117967
-
Simon Pilgrim authored
D108992 added self-multiply handling to KnownBits::mul but we don't use it yet..
-
Craig Topper authored
Instead of having a test for i32 XLen and i64 XLen, use sed to replace iXLen with i32/i64 before running llc. This change covers all of the floating point tests.
-
Simon Pilgrim authored
Fixes parity codegen issue where we know all but the lowest bit is zero, we can replace the ICMPNE with 0 comparison with a ext/trunc Differential Revision: https://reviews.llvm.org/D117983
-
LLVM GN Syncbot authored
-
Simon Pilgrim authored
Revert rG7c66aaddb128dc0f342830c1efaeb7a278bfc48c "[DAG] Fold (X & Y) != 0 --> zextOrTrunc(X & Y) iff everything but LSB is known zero (PR51312)" Noticed a typo in the getBooleanContents call just after I pressed commit :(
-
Richard authored
Looks for duplicate includes and removes them. Every time an include directive is processed, check a vector of filenames to see if the included file has already been included. If so, it issues a warning and a replacement to remove the entire line containing the duplicated include directive. When a macro is defined or undefined, the vector of filenames is cleared. This enables including the same file multiple times, but getting different expansions based on the set of active macros at the time of inclusion. For example: #undef NDEBUG #include "assertion.h" // ...code with assertions enabled #define NDEBUG #include "assertion.h" // ...code with assertions disabled Since macros are redefined between the inclusion of assertion.h, they are not flagged as redundant. Differential Revision: https://reviews.llvm.org/D7982
-
Sanjay Patel authored
The behavior in Analysis (knownbits) implements poison semantics already, and we expect the transforms (for example, in instcombine) derived from those semantics, so this patch changes the LangRef and remaining code to be consistent. This is one more step in removing "undef" from LLVM. Without this, I think https://github.com/llvm/llvm-project/issues/53330 has a legitimate complaint because that report wants to allow subsequent code to mask off bits, and that is allowed with undef values. The clang builtins are not actually documented anywhere AFAICT, but we might want to add that to remove more uncertainty. Differential Revision: https://reviews.llvm.org/D117912
-
Simon Pilgrim authored
Fixes parity codegen issue where we know all but the lowest bit is zero, we can replace the ICMPNE with 0 comparison with a ext/trunc Differential Revision: https://reviews.llvm.org/D117983
-
Ayke van Laethem authored
The register R1 is defined to have the constant value 0 in the avr-gcc calling convention (which we follow). Unfortunately, we don't really make use of it. This patch replaces `LDI 0` instructions with a copy from R1. This reduces code size: my AVR build of compiler-rt goes from 50660 to 50240 bytes of code size, which is a 0.8% reduction. Presumably it will also improve execution speed, although I didn't measure this. Differential Revision: https://reviews.llvm.org/D117425
-
Ayke van Laethem authored
Background: https://github.com/avr-rust/rust-legacy-fork/issues/126 In short, this workaround was introduced to fix a "ran out of registers during regalloc" issue. The root cause has since been fixed in https://reviews.llvm.org/D54218 so this workaround can be removed. There is one test that changes a little bit, removing a single instruction. I also compiled compiler-rt before and after this patch but didn't see a difference. So presumably the impact is very low. Still, it's nice to be able to remove such a workaround. Differential Revision: https://reviews.llvm.org/D117831
-
Carlos Galvez authored
Currently the fix hint is hardcoded to gsl::at(). This poses a problem for people who, for a number of reasons, don't want or cannot use the GSL library (introducing a new third-party dependency into a project is not a minor task). In these situations, the fix hint does more harm than good as it creates confusion as to what the fix should be. People can even misinterpret the fix "gsl::at" as e.g. "std::array::at", which can lead to even more trouble (e.g. when having guidelines that disallow exceptions). Furthermore, this is not a requirement from the C++ Core Guidelines. simply that array indexing needs to be safe. Each project should be able to decide upon a strategy for safe indexing. The fix-it is kept for people who want to use the GSL library. Differential Revision: https://reviews.llvm.org/D117857
-
Simon Pilgrim authored
Noticed while looking at D117983 - we miss some parity patterns with/without popcnt
-
Arthur O'Dwyer authored
https://cplusplus.github.io/LWG/issue3437 Differential Revision: https://reviews.llvm.org/D117963
-
Arthur O'Dwyer authored
Differential Revision: https://reviews.llvm.org/D117956
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Non-POSIX target builds don't use the file descriptor
-