- May 29, 2024
-
-
Alastair Houghton authored
We don't know the load addresses when this function is called, so it shouldn't be trying to use them to determine whether or not the branch is short. Notably, this will fail in the case where the code is being loaded into a target in such a way that the section offsets differ between the process generating the code and the target process. rdar://127673408
-
jeanPerier authored
hlfir.declare is in charge of ensuring that the lower bounds of its "hlfir entity" output are the ones of the source program. For non-allocatable/non-pointer assumed-ranks where the input descriptor lower bounds may not be ones, the hlfir.declare needs to be lowered to an hlfir.rebox_assumed_rank to set the lower bounds to ones.
-
jeanPerier authored
Enable lowering of assumed-ranks in specification parts under a debug flag. I am using a debug flag because many cryptic TODOs/issues may be hit until more support is added. The development should not take too long, so I want to stay away from the noise of adding an actual experimental flag to flang-new.
-
David Green authored
The test case contains a vpt block with an else predicated instruction. This might not be very unrealistic, but currently crashes due to not being able to handle the else. The instruction would need to be removed. This patch adds some extra checks that none of the instructions in vpt block is else predicated, leaving it using vctp.
-
David Green authored
This is one of the simple additions to shuffleToIdentity that help it look through intermediate zext/sext instructions.
-
Christian Sigg authored
-
Shengchen Kan authored
-
Noah Goldstein authored
We currently do: `(icmp eq/ne (and X, Y), Y)` -> `(icmp eq/ne (and ~X, Y), 0)` if `X` is constant. We can make this more general and do it if `X` is freely invertable (i.e say `X = ~Z`). As well, we can also do: `(icmp eq/ne (and X, Y), Y)` -> `(icmp eq/ne (or X, ~Y), -1)` If `Y` is freely invertible. Proofs: https://alive2.llvm.org/ce/z/yeWH3E Differential Revision: https://reviews.llvm.org/D159059 Closes #84688 -
Noah Goldstein authored
-
Pavel Labath authored
I've found them very useful as a rudimentary form of benchmark.
-
Pavel Labath authored
DebugNamesDWARFIndex was jumping through hoops to construct a DIERef from an index entry only to jump through them back a short while later to construct a DWARFDIE. This used to be necessary as the index lookup was a two stage process, where we first enumerated all matches, and then examined them (so it was important that the enumeration was cheap -- does not trigger unnecessary parsing). However, now that the processing is callback based, we are always immediately examining the DWARFDIE right after finding the entry, and the DIERef just gets in the way.
-
Antonio Frighetto authored
While reassociating expressions, LICM is required to invalidate SCEV results, as otherwise subsequent passes in the pipeline that leverage LICM foldings (e.g. IndVars), may reason on invalid expressions; thus miscompiling. This is achieved by rewriting the reassociable instruction from scratch. Fixes: https://github.com/llvm/llvm-project/issues/91957.
-
Antonio Frighetto authored
-
Guray Ozen authored
Using `for_` is very hand with python bindings. Currently, it doesn't support results, we had to fallback to two lines scf.for. This PR yields results of scf.for in `for_` --------- Co-authored-by:Maksim Levental <maksim.levental@gmail.com>
-
MagentaTreehouse authored
Construct `Twine`s before concatenation.
-
Pengcheng Wang authored
Previously, we just check if the source is a virtual register and this prevents some potential hoists. We can see some improvements in AArch64/RISCV tests.
-
Craig Topper authored
-
Fangrui Song authored
Amend 7c956293 ("MCAsmParser: Support \+") to increase Macro.Count per iteration to match the new gas feature (milestone: 2.43).
-
Chuanqi Xu authored
[C++20] [Modules] Don't generate the defintition for non-const available external variables (#93530) Close https://github.com/llvm/llvm-project/issues/93497 The root cause of the problem is, we mark the variable from other modules as constnant in LLVM incorrectly. This patch fixes this problem by not emitting the defintition for non-const available external variables. Since the non const available externally variable is not helpful to the optimization.
-
Matthew Devereau authored
This is a second attempt to land #84501 which failed on several targets. This patch adds the HAS_IEE754_FLOAT128 define which makes the check for typedef'ing float128 more precise by checking whether __uint128_t is available and checking if the host does not use __ibm128 which is prevalent on power pc targets and replaces IEEE754 float128s.
-
Matt Arsenault authored
FP typed atomic load/store coverage was mostly missing, especially for half and bfloat.
-
Younan Zhang authored
This patch takes Richard's approach of no longer modeling dependent NTTP arguments with TemplateParamObjectDecls. Clang used to do so, which left behind a problem in that we might mess up dependent and non-dependent arguments that boil down to the same canonical type because there's a default argument on the NTTP. The problem of "canonical expression" is still present because this patch doesn't touch the profiling part. Namely, #92292 seems different. Fixes https://github.com/llvm/llvm-project/issues/84052
-
Eli Friedman authored
There's some code in AggExprEmitter::VisitCXXParenListOrInitListExpr to try to do early cleanup for GEPs for fields that aren't accessed. But it's unlikely to actually save significant compile-time, and it's subtly wrong in cases where EmitLValueForFieldInitialization() doesn't create a GEP. So just delete the code. Fixes #88077. Fixes #89547.
-
Carl Ritson authored
Opcodes are the same for these instructions in GFX11 and 12, hence this typo has no functional impact.
-
Mehdi Amini authored
Reverts llvm/llvm-project#86223 windows pre-merge is broken.
-
Louis Dionne authored
Instead of using FOO_TEST_DEPS global variables that don't get updated properly from subdirectories, use targets to propagate the dependencies across directories.
-
Louis Dionne authored
A while back, the cxx_under_test Lit parameter was removed. This patch reintroduces a Lit parameter called "compiler" which controls the value of the %{cxx} substitution used in the test suite. To run the test suite with a different compiler, one can now pass --param compiler=<path>. -
Louis Dionne authored
In essence, this header has always been related to configuration of the library but we didn't want to put it inside <__config> due to complexity reasons. Now that we have sub-headers in <__config>, we can move <__availability> to it and stop including it everywhere since we already obtain the required macros via <__config>.
-
Jim Ingham authored
This reverts commit 0380044e. While I figure out some mysterious CMake error.
-
yronglin authored
Since we have already addressed the LWG issue, this PR marks LWG3951 as implemented. Signed-off-by:
yronglin <yronglin777@gmail.com> Co-authored-by:
A. Jiang <de34@live.cn>
-
Eric Fiselier authored
-
Ruiling, Song authored
The DominatorTree can be reused if no CFG changes.
-
Eric Fiselier authored
-
Jim Ingham authored
There was a Darwin only use of setupterm (under USE_SETUPTERM_WORKAROUND) that required libcurses.dylib. That was added to the main build, but not to the unittest.
-
Hui authored
-
Hui authored
-
Hui authored
-
Sterling Augustine authored
Without this change, the build will fail like so: llvm-project/lld/MachO/ObjC.cpp:1387:75: error: ISO C++20 considers use of overloaded operator '==' (with operand types 'ObjcCategoryMerger::PointerListInfo' and 'ObjcCategoryMerger::PointerListInfo') to be ambiguous despite there being a unique best viable function [-Werror,-Wambiguous-reversed-operator] 1387 | parseProtocolListInfo(classIsec, roClassLayout.baseProtocolsOffset) == | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 1388 | parseProtocolListInfo(metaIsec, roClassLayout.baseProtocolsOffset) && | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/assert.h:100:27: note: expanded from macro 'assert' 100 | (static_cast <bool> (expr) \ | ^~~~ llvm-project/lld/MachO/ObjC.cpp:391:17: note: ambiguity is between a regular call to this operator and a call with the argument order reversed 391 | inline bool operator==(const PointerListInfo &cmp) { | ^ llvm-project/lld/MachO/ObjC.cpp:391:17: note: mark 'operator==' as const or add a matching 'operator!=' to resolve the ambiguity 1 error generated. -
Jakub Kuderski authored
Tighten the verifier for arith cast ops to disallow changing tensor dimensions, e.g., static to dynamic. After this change: * `arith.cast_op %x : tensor<4xi32> to tensor<4xf32>` remains valid * `arith.cast_op %x : tensor<4xi32> to tensor<?xf32>` becomes invalid * `arith.cast_op %x : tensor<?xi32> to tensor<4xf32>` becomes invalid This is mostly to simplify the op semantics. See the discussion thread for more context: https://discourse.llvm.org/t/rfc-remove-arith-math-ops-on-tensors/74357/63.
-
Eric Fiselier authored
Testing github actions is such a pain. I swear it should match now.
-