- Feb 24, 2023
-
-
Florian Hahn authored
This reverts commit a9a19501. The legacy PM uses in Polly have been removed, so recommit the patch. Original message: This is part of the optimization pipeline, of which the legacy pass manager version is deprecated. Reviewed By: aeubanks Differential Revision: https://reviews.llvm.org/D144201
-
isuckatcs authored
This patch implements the exception handling rules found in N4849 14.4 and as a result fixes many false positives in the bugprone-exception-escape checker. Differential Revision: https://reviews.llvm.org/D135495
-
Matt Arsenault authored
-
Florian Hahn authored
The pass uses a bunch of deprecated legacy passes and appears unused. Remove it to unblock removing legacy passes. Fixes https://github.com/llvm/llvm-project/issues/60852 Reviewed By: Meinersbur Differential Revision: https://reviews.llvm.org/D144332
-
Dmitri Gribenko authored
This reverts commit 5a4f193a. See https://reviews.llvm.org/D144673, this change broke multiple buildbots.
-
Haojian Wu authored
Differential Revision: https://reviews.llvm.org/D144713
-
Matt Arsenault authored
Not sure this is the right place for it next to the table.
-
Matt Arsenault authored
This carries a bitmask indicating forbidden floating-point value kinds in the argument or return value. This will enable interprocedural -ffinite-math-only optimizations. This is primarily to cover the no-nans and no-infinities cases, but also covers the other floating point classes for free. Textually, this provides a number of names corresponding to bits in FPClassTest, e.g. call nofpclass(nan inf) @must_be_finite() call nofpclass(snan) @cannot_be_snan() This is more expressive than the existing nnan and ninf fast math flags. As an added bonus, you can represent fun things like nanf: declare nofpclass(inf zero sub norm) float @only_nans() Compared to nnan/ninf: - Can be applied to individual call operands as well as the return value - Can distinguish signaling and quiet nans - Distinguishes the sign of infinities - Can be safely propagated since it doesn't imply anything about other operands. - Does not apply to FP instructions; it's not a fl... -
Jirui Wu authored
A BTI instruction was previously inserted at the beginning of each block that has its address stored in a jump table. Jump tables only emit indirect jumps in ARM or Thumb1 modes. However, PACBTI is not supported in these modes. As a result, BTI instructions emitted by jump tables are redundant. Removing redundant BTI instructions improves the code size and prevents potential gadgets. Differential Revision: https://reviews.llvm.org/D144470
-
Jirui Wu authored
Some memory instructions in the following sections of Armv7-M ARM allow the .w mnemonic suffix, even though the preferred disassembly is without the suffix. A7.7.46 LDRB (immediate) T3 A7.7.55 LDRH (immediate) T3 A7.7.59 LDRSB (immediate) T2 A7.7.63 LDRSH (immediate) T2 A7.7.163 STRB (immediate) T3 A7.7.170 STRH (immediate) T3 This patch accepts the .w suffixes for theses instructions. Pseudo-instructions and custom parsing logic are used instead of simple aliases. More discussions are in these relevant patches: https://reviews.llvm.org/D68916 https://reviews.llvm.org/D96632 Differential Revision: https://reviews.llvm.org/D142980
-
Paul Semel authored
Differential Revision: https://reviews.llvm.org/D144546
-
Kadir Cetinkaya authored
Differential Revision: https://reviews.llvm.org/D144646
-
Kadir Cetinkaya authored
getMemBufferCopy triggers an UB when it receives a default constructed StringRef. Make sure that we're always passing the null-terminated string created in ParseInputs throughout the scanPreamble. Differential Revision: https://reviews.llvm.org/D144708
-
Nathan Ridge authored
Fixes https://github.com/clangd/clangd/issues/1484 Differential Revision: https://reviews.llvm.org/D144703
-
Matthias Springer authored
This allows users to specify a top-down or bottom-up traversal of the IR, in addition to the already existing WalkOrder. Certain transformations work better with a forward traversal. E.g., when cloning a piece of IR, operations should be cloned top-down so that all uses are defined when creating an op. Certain transformations work better with a reverse traversal. E.g., when erasing a piece of IR, operations should be erased bottom-up to avoid erasing operations that still have users. Differential Revision: https://reviews.llvm.org/D144257
-
Florian Hahn authored
This should fix the regressions introduced by a53d940c by making sure no dynamic allocations are needed in the common case, while retaining support for arbitrary SCEV expressions. Alternative to D144335. Compile-time impact: * NewPM-O3: -0.11% * NewPM-ReleaseThinLTO: -0.10% *NewPM-ReleaseLTO-g: -0.08% https://llvm-compile-time-tracker.com/compare.php?from=df016a9525e5722dfd1e1e1632cec3ed7b33bc8a&to=c1c64de4a973bcecaddbc4038a539234eb39413b&stat=instructions:u Reviewed By: vitalybuka, nikic Differential Revision: https://reviews.llvm.org/D144382
-
Valentin Clement authored
Abstract derived-type components can have default value so perform the default value initialization if necessary. ``` type, abstract :: a integer :: b = 10 end type type, extends(a) :: b integer :: d end type ``` Reviewed By: klausler Differential Revision: https://reviews.llvm.org/D144668
-
Jean Perier authored
Enable character and derived type array constructor lowering. Nothing special needs to be done other than lowering the types before the array constructor lowering. Derived type are forced to use the runtime for now to avoid undesired usage of user defined assignment that hlfir.assign may trigger when using the runtime. Differential Revision: https://reviews.llvm.org/D144548
-
Serge Pavlov authored
This is recommit of 2e416cdd, fixed to be accepatble by GCC. The original commit message is below. With this change bitwise operations are allowed for FPClassTest enumeration, it must simplify using this type. Also some functions changed to get argument of type FPClassTest instead of unsigned. Differential Revision: https://reviews.llvm.org/D144241
-
Jean Perier authored
Lower the cases that require runtime support to deal with the allocation, reallocation, or copy of ac-values to the array constructor storage. Differential Revision: https://reviews.llvm.org/D144513
-
Martin Liska authored
We as GCC still emit __asan_global_source_location for global variables and we would like to use it in the future. On other hand, we don't support llvm-symbolizer and the default libbacktraace symbolizer does not support location info. Differential Revision: https://reviews.llvm.org/D144424
-
Jean Perier authored
The current code was replacing inquiry to array constructor whose ac-value shape depends on ac-implied-do-index with an expression using the ac-implied-do-index without the implied-do (folding the first case added in the test as in the second case with a regular symbol). Differential Revision: https://reviews.llvm.org/D144655
-
Jean Perier authored
By default evaluate::GetShape(expr) may return a compiler generated expression using symbols that are part of function interfaces if there are function references in "expr". It is not right to replace an inquiry of "expr" with such compiler generated expression since the call context would be lost, along with the meaning of the inquiry expression. Inquiry folding uses GetContextFreeShape(expr) that sets-up useResultSymbolShape_ in GetShapeHelper to prevent such bad rewrites. But this did not work properly with array constructor: GetShapeHelper made a call to GetShape, ignoring and losing the "useResultSymbolShape_" instruction. Differential Revision: https://reviews.llvm.org/D144512
-
LLVM GN Syncbot authored
-
Julian Lettner authored
This reverts commit d8b8911d.
-
Craig Topper authored
WebAssemblyUtils depends on CodeGen which depends on all middle end optimization libraries. This component is used by WebAssembly's AsmParser, Disassembler, and MCTargetDesc libraries. Because of this, any MC layer tool built with WebAssembly support includes a larger portion of LLVM than it should. To fix this I've created an MC only version of WebAssemblyTypeUtilities.cpp in MCTargetDesc to be used by the MC components. This shrinks llvm-objdump and llvm-mc on my local release+asserts build by 5-6 MB. Reviewed By: MaskRay, aheejin Differential Revision: https://reviews.llvm.org/D144354
-
Alexis Murzeau authored
When reading readability-identifier-naming.HungarianNotation.CString options, correctly use the type string stored in CStr.second instead of the option name (CStr.first) as the HNOption.CString map key. This will make CString options really working and properly parsed by the checker. Reviewed By: carlosgalvezp Differential Revision: https://reviews.llvm.org/D144431
-
Vikram authored
Differential Revision: https://reviews.llvm.org/D143987
-
Chuanqi Xu authored
Close https://github.com/llvm/llvm-project/issues/60486. When I look back at this problem again, it only appears if we specify it with `-fmodule-file=<BMI-path>`. And it disappears after we specify it as `-fmodule-file=<module-name>=<BMI-path>`. Since we want to depreacate the form `-fmodule-file=<BMI-path>`, we can think the problem goes away.
-
Mehdi Amini authored
-
Fangrui Song authored
Conflicting module flags leads to a proper error for regular LTO but a crash (report_fatal_error) for ThinLTO. Switch to createStringError to fix the crash and match regular LTO.
-
Chia-hung Duan authored
It is preferable to use `std::shared_mutex` style mutex. Will switch to using it when it's available. Differential Revision: https://reviews.llvm.org/D144691
-
Ben Shi authored
This is in accordance with avr-gcc, even '-mno-relax' is specified to avr-gcc, this flag will also be added to the output relocatables. With this flag set, the GNU ld will perform long call -> short call optimization for AVR, otherwise not. Fixes https://github.com/llvm/llvm-project/issues/54508 Reviewed By: MaskRay, jacquesguan, aykevl Differential Revision: https://reviews.llvm.org/D144617
-
Siva Chandra Reddy authored
Reviewed By: jhuber6 Differential Revision: https://reviews.llvm.org/D143139
-
Michael Liao authored
- The current implementation checks them for 24-bit inegers but the document says 23-bit one effectively by listing the range as [1,2^23). - Minor error message correction. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D144685
-
Siva Chandra Reddy authored
The target "check-libc" now runs all enabled tests which, depending on the build mode, includes the unit tests, the integration tests and the api test. Reviewed By: jhuber6 Differential Revision: https://reviews.llvm.org/D144663
-
Julian Lettner authored
This reverts commit ebd8eee6.
-
Noah Goldstein authored
There are extra patterns that have for these three logic operations that aren't covered in `SimplifyDemandedUseBits`. To avoid duplicating the code, just use `analyzeKnownBitsFromAndXorOr` in `SimplifyDemandedUseBits` to get full coverage. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D142429
-
Noah Goldstein authored
Any case of logicop + add/sub(Odd) we can prove the low bit is either zero/non-zero. Alive2 Links: xor: sub x, C: https://alive2.llvm.org/ce/z/aaABdS sub C, x: https://alive2.llvm.org/ce/z/2W-ZJ7 add C, x: https://alive2.llvm.org/ce/z/pzDkte or: sub x, C: https://alive2.llvm.org/ce/z/xd-bcP sub C, x: https://alive2.llvm.org/ce/z/p8hXJF add C, x: https://alive2.llvm.org/ce/z/osmkB6 and: sub x, C: https://alive2.llvm.org/ce/z/D_NNxR sub C, x: https://alive2.llvm.org/ce/z/N_5C62 add C, x: https://alive2.llvm.org/ce/z/4cy7a4 Differential Revision: https://reviews.llvm.org/D142427 -
Noah Goldstein authored
This change just factors out the existing logic for and/xor/or and puts them in a publicly available helper. functionality is the same. Differential Revision: https://reviews.llvm.org/D142849
-