Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
... for dynamic memory allocation. This happens when the requested array
size is too large.
Fixes #152951
|
|
Fixes #160374
|
|
Fixes #153948
Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com>
|
|
This doesn't seem to be needed anymore and causes problems.
Fixes #159787
|
|
So ignore the rest in `checkFullyInitialized()`.
Fixes #160071
|
|
As happens in C.
Fixes #158482
|
|
They didn't use to work but do now.
|
|
Fix two older FIXME items from the `functions.cpp` test.
|
|
Reject bitcasts to pointer types unless it's to `nullptr_t` and always
reject bitcasts to member pointer types.
Fixes #156174
|
|
GCC 14 also made this an error by default, so we’re following suit.
Fixes #74605
|
|
This broke the armv8-quick builder:
https://lab.llvm.org/buildbot/#/builders/154/builds/21492
|
|
They can't be written to or read from.
Fixes #158535
|
|
They were left out.
Fixes #153920
|
|
Due to potential performance issues, this commit temporarily removes
support for the num_threads 'strict' modifier and its corresponding
message and severity clauses on the device.
|
|
Fixes #157422
|
|
All pointer types can be null, so check that independently from the
pointer type.
Fixes #157650
|
|
Fixes #157428
|
|
If we create an implicit local variable for a derived-to-base cast, we
still should allocate enough space for the entire derived type.
Fixes #156219
|
|
In the attached test case, the global variable later only points to
gargbage, because the MaterializeTemporaryExpr used to initialize it is
a local variable, which is gone by the time we try to evaluate the
store.
Fixes #156223
|
|
Similar to what the current interpreter does.
|
|
(#156166)
The test added in #155573 assumes the compiler defaults to the current
default of C++17. If the compiler is changed to default to C++20, the
test fails because the expected warnings about a construct being a C++20
extension are no longer emitted. This change fixes up the test to work
in either C++17 or C++20 mode by disabling the warning and removing the
check for it as this is not what is being tested here.
|
|
Our comparison ops always return bool, and we do the pop before the
conversion to in in C.
Fixes #156178
|
|
asserting (#155737)
This patch fixes a crash in the constexpr interpreter when evaluating
`new T[n]` with a negative element count.
Fixes https://github.com/llvm/llvm-project/issues/152904
|
|
Fixes #152899
|
|
|
|
Summary:
Boolean vectors as implemented in clang can be bit-casted to an integer
that is rounded up to the next primitive sized integer. Users can do
this themselves, but since the counting bits are very likely to be used
with bitmasks like this and the generic forms are expected to be
generic it seems reasonable that we handle this case directly.
|
|
That doesn't work.
Fixes #152903
|
|
Shouldn't happen, but does.
Fixes #155147
|
|
(#155152)
When we get to this point, the pointer might _not_ be backed by a
primitive array, so the later code will fail.
Fixes #155144
|
|
This reverts commit 9642aadf7064192164d1687378d28d6bda1978c9.
Since elem() only works on primitive arrays anyway, we don't have to do
the isArrayRoot() check at all.
|
|
This reverts commit 0f4db1a7955e511844d7a685103aa32617fc279d.
This breaks the armv8-quick builder:
https://lab.llvm.org/buildbot/#/builders/154/builds/20676
|
|
We need to use the base offset in both cases.
Also, add additional assertions to make sure we don't miss this case
again.
Fixes #155132
|
|
Summary:
The `__builtin_shufflevector` call would return a GCC vector in all
cases where the vector type was increased. Change this to preserve
whether or not this was an extended vector.
Fixes: https://github.com/llvm/llvm-project/issues/107981
|
|
Fixes #152920
|
|
This can happen when casts are involved.
Fixes #154006
|
|
The local we're destroying might've been created for an expression, in
which case asDecl() on the DeclDesc returns nullptr.
Fixes #152958
|
|
That code is from a time when typeid pointers didn't exist. We can get
there for non-block, non-integral pointers, but we can't meaningfully
handle that case. Just return false.
Fixes #153712
|
|
This can happen when the base pointer is an unknown size array, where
!isOnePastEnd(), but isPastEnd().
Fixes #153990
|
|
Fixes #153997
|
|
Fixes #154312
|
|
If one of them is a one-past-end pointer.
|
|
|
|
Fixes #154110
|
|
And harmonize the RUN lines.
|
|
This fixes an old todo item about wrong allocation counting and some
diagnostic differences.
|
|
This has been a long-standing problem, but we didn't use to call the
destructors of items on the stack unless we explicitly `pop()` or
`discard()` them.
When interpretation was interrupted midway-through (because something
failed), we left `Pointer`s on the stack. Since all `Block`s track what
`Pointer`s point to them (via a doubly-linked list in the `Pointer`),
that meant we potentially leave deallocated pointers in that list. We
used to work around this by removing the `Pointer` from the list before
deallocating the block.
However, we now want to track pointers to global blocks as well, which
poses a problem since the blocks are never deallocated and thus those
pointers are always left dangling.
I've tried a few different approaches to fixing this but in the end I
just gave up on the idea of never knowing what items are in the stack.
We already have an `ItemTypes` vector that we use for debugging
assertions. This patch simply enables this vector unconditionally and
uses it in the abort case to properly `discard()` all elements from the
stack. That's a little sad IMO but I don't know of another way of
solving this problem.
As expected, this is a slight hit to compile times:
https://llvm-compile-time-tracker.com/compare.php?from=574d0a92060bf4808776b7a0239ffe91a092b15d&to=0317105f559093cfb909bfb01857a6b837991940&stat=instructions:u
|
|
This breaks a ton of libc++ tests otherwise, since calling
std::destroy_at will currently end the lifetime of the entire array not
just the given element.
See https://github.com/llvm/llvm-project/issues/147528
|
|
(#153601)
|
|
The isGLValue() check made us ignore expressions we shouldn't ignore.
|