Revision tags: llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4 |
|
#
dc56a86b |
| 30-Oct-2024 |
serge-sans-paille <sguelton@mozilla.com> |
[clang] Fix 71315698c9 in presence of incomplete types (#114095)
Incomplete types are not considered trivially copyable by clang but we
don't want to warn about invalid argument for memcpy / memset
[clang] Fix 71315698c9 in presence of incomplete types (#114095)
Incomplete types are not considered trivially copyable by clang but we
don't want to warn about invalid argument for memcpy / memset in that
case because we cannot prove they are not Trivially Copyable.
show more ...
|
Revision tags: llvmorg-19.1.3 |
|
#
71315698 |
| 28-Oct-2024 |
serge-sans-paille <sguelton@mozilla.com> |
[clang] Warn about memset/memcpy to NonTriviallyCopyable types (#111434)
This implements a warning that's similar to what GCC does in that
context: both memcpy and memset require their first and se
[clang] Warn about memset/memcpy to NonTriviallyCopyable types (#111434)
This implements a warning that's similar to what GCC does in that
context: both memcpy and memset require their first and second operand
to be trivially copyable, let's warn if that's not the case.
show more ...
|
Revision tags: llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4 |
|
#
33b6b674 |
| 25-Aug-2023 |
Shafik Yaghmour <shafik.yaghmour@intel.com> |
[clang] Fix crash in __builtin_strncmp and other related builtin functions
The implementation of __builtin_strncmp and other related builtins function use getExtValue() to evaluate the size argument
[clang] Fix crash in __builtin_strncmp and other related builtin functions
The implementation of __builtin_strncmp and other related builtins function use getExtValue() to evaluate the size argument. This can cause a crash when the value does not fit into an int64_t value, which is can be expected since the type of the argument is size_t.
The fix is to switch to using getZExtValue().
This fixes: https://github.com/llvm/llvm-project/issues/64876
Differential Revision: https://reviews.llvm.org/D158557
show more ...
|
Revision tags: llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4 |
|
#
786c721c |
| 11-May-2022 |
Ken Matsui <26405363+ken-matsui@users.noreply.github.com> |
Add extension diagnostic for linemarker directives
This adds the -Wgnu-line-marker diagnostic flag, grouped under -Wgnu, to warn about use of the GNU linemarker preprocessor extension.
Fixes #55067
Add extension diagnostic for linemarker directives
This adds the -Wgnu-line-marker diagnostic flag, grouped under -Wgnu, to warn about use of the GNU linemarker preprocessor extension.
Fixes #55067
Differential Revision: https://reviews.llvm.org/D124534
show more ...
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
#
aee49255 |
| 14-Oct-2021 |
David Blaikie <dblaikie@gmail.com> |
Recommit: Compress formatting of array type names (int [4] -> int[4])
Based on post-commit review discussion on 2bd84938470bf2e337801faafb8a67710f46429d with Richard Smith.
Other uses of forcing Ha
Recommit: Compress formatting of array type names (int [4] -> int[4])
Based on post-commit review discussion on 2bd84938470bf2e337801faafb8a67710f46429d with Richard Smith.
Other uses of forcing HasEmptyPlaceHolder to false seem OK to me - they're all around pointer/reference types where the pointer/reference token will appear at the rightmost side of the left side of the type name, so they make nested types (eg: the "int" in "int *") behave as though there is a non-empty placeholder (because the "*" is essentially the placeholder as far as the "int" is concerned).
This was originally committed in 277623f4d5a672d707390e2c3eaf30a9eb4b075c
Reverted in f9ad1d1c775a8e264bebc15d75e0c6e5c20eefc7 due to breakages outside of clang - lldb seems to have some strange/strong dependence on "char [N]" versus "char[N]" when printing strings (not due to that name appearing in DWARF, but probably due to using clang to stringify type names) that'll need to be addressed, plus a few other odds and ends in other subprojects (clang-tools-extra, compiler-rt, etc).
show more ...
|
#
f9ad1d1c |
| 14-Oct-2021 |
David Blaikie <dblaikie@gmail.com> |
Revert "Compress formatting of array type names (int [4] -> int[4])"
Looks like lldb has some issues with this - somehow it causes lldb to treat a "char[N]" type as an array of chars (prints them ou
Revert "Compress formatting of array type names (int [4] -> int[4])"
Looks like lldb has some issues with this - somehow it causes lldb to treat a "char[N]" type as an array of chars (prints them out individually) but a "char [N]" is printed as a string. (even though the DWARF doesn't have this string in it - it's something to do with the string lldb generates for itself using clang)
This reverts commit 277623f4d5a672d707390e2c3eaf30a9eb4b075c.
show more ...
|
#
277623f4 |
| 14-Oct-2021 |
David Blaikie <dblaikie@gmail.com> |
Compress formatting of array type names (int [4] -> int[4])
Based on post-commit review discussion on 2bd84938470bf2e337801faafb8a67710f46429d with Richard Smith.
Other uses of forcing HasEmptyPlac
Compress formatting of array type names (int [4] -> int[4])
Based on post-commit review discussion on 2bd84938470bf2e337801faafb8a67710f46429d with Richard Smith.
Other uses of forcing HasEmptyPlaceHolder to false seem OK to me - they're all around pointer/reference types where the pointer/reference token will appear at the rightmost side of the left side of the type name, so they make nested types (eg: the "int" in "int *") behave as though there is a non-empty placeholder (because the "*" is essentially the placeholder as far as the "int" is concerned).
show more ...
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3, llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1 |
|
#
944db8a4 |
| 05-Apr-2020 |
Richard Smith <richard@metafoo.co.uk> |
Permit constant evaluation of mixed __builtin_memcmp between char and char8_t.
|
#
7f24db01 |
| 05-Apr-2020 |
Richard Smith <richard@metafoo.co.uk> |
Add documentation and testing for 2c88a485c71155c19e512f22c54e63ee337282a3.
Also extend it to cover memchr for consistency.
|
#
4ede8879 |
| 04-Apr-2020 |
Richard Smith <richard@metafoo.co.uk> |
PR45402: Make the restrictions on constant evaluation of memcmp and memchr consistent and comprehensible, and document them.
We previously allowed evaluation of memcmp on arrays of integers of any s
PR45402: Make the restrictions on constant evaluation of memcmp and memchr consistent and comprehensible, and document them.
We previously allowed evaluation of memcmp on arrays of integers of any size, so long as the call evaluated to 0, and allowed evaluation of memchr on any array of integral type of size 1 (including enums). The purpose of constant-evaluating these builtins is only to support constexpr std::char_traits, so we now consistently allow them on arrays of (possibly signed or unsigned) char only.
show more ...
|
Revision tags: llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2, llvmorg-10.0.0-rc1, llvmorg-11-init, llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1, llvmorg-9.0.0, llvmorg-9.0.0-rc6, llvmorg-9.0.0-rc5, llvmorg-9.0.0-rc4, llvmorg-9.0.0-rc3, llvmorg-9.0.0-rc2, llvmorg-9.0.0-rc1, llvmorg-10-init, llvmorg-8.0.1, llvmorg-8.0.1-rc4, llvmorg-8.0.1-rc3, llvmorg-8.0.1-rc2, llvmorg-8.0.1-rc1, llvmorg-8.0.0, llvmorg-8.0.0-rc5, llvmorg-8.0.0-rc4, llvmorg-8.0.0-rc3 |
|
#
8c3343df |
| 14-Feb-2019 |
Clement Courbet <courbet@google.com> |
[Builtins] Treat `bcmp` as a builtin.
Summary: This makes it consistent with `memcmp` and `__builtin_bcmp`.
Also see the discussion in https://reviews.llvm.org/D56593.
Reviewers: jyknight
Subscri
[Builtins] Treat `bcmp` as a builtin.
Summary: This makes it consistent with `memcmp` and `__builtin_bcmp`.
Also see the discussion in https://reviews.llvm.org/D56593.
Reviewers: jyknight
Subscribers: kristina, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D58120
llvm-svn: 354023
show more ...
|
Revision tags: llvmorg-7.1.0, llvmorg-7.1.0-rc1, llvmorg-8.0.0-rc2, llvmorg-8.0.0-rc1 |
|
#
147b7436 |
| 12-Dec-2018 |
Hubert Tong <hubert.reinterpretcast@gmail.com> |
[ExprConstant] Improve memchr/memcmp for type mismatch and multibyte element types
Summary: `memchr` and `memcmp` operate upon the character units of the object representation; that is, the `size_t`
[ExprConstant] Improve memchr/memcmp for type mismatch and multibyte element types
Summary: `memchr` and `memcmp` operate upon the character units of the object representation; that is, the `size_t` parameter expresses the number of character units. The constant folding implementation is updated in this patch to account for multibyte element types in the arrays passed to `memchr`/`memcmp` and, in the case of `memcmp`, to account for the possibility that the arrays may have differing element types (even when they are byte-sized).
Actual inspection of the object representation is not implemented. Comparisons are done only between elements with the same object size; that is, `memchr` will fail when inspecting at least one character unit of a multibyte element. The integer types are assumed to have two's complement representation with 0 for `false`, 1 for `true`, and no padding bits.
`memcmp` on multibyte elements will only be able to fold in cases where enough elements are equal for the answer to be 0.
Various tests are added to guard against incorrect folding for cases that miscompile on some system or other prior to this patch. At the same time, the unsigned 32-bit `wchar_t` testing in `test/SemaCXX/constexpr-string.cpp` is restored.
Reviewers: rsmith, aaron.ballman, hfinkel
Reviewed By: rsmith
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D55510
llvm-svn: 348938
show more ...
|
Revision tags: llvmorg-7.0.1, llvmorg-7.0.1-rc3, llvmorg-7.0.1-rc2, llvmorg-7.0.1-rc1 |
|
#
ed083f2c |
| 04-Oct-2018 |
Petr Pavlu <petr.pavlu@arm.com> |
[constexpr] Fix ICE when memcpy() is given a pointer to an incomplete array
Fix code for constant evaluation of __builtin_memcpy() and __builtin_memmove() that would attempt to divide by zero when g
[constexpr] Fix ICE when memcpy() is given a pointer to an incomplete array
Fix code for constant evaluation of __builtin_memcpy() and __builtin_memmove() that would attempt to divide by zero when given two pointers to an incomplete array.
Differential Revision: https://reviews.llvm.org/D51855
llvm-svn: 343761
show more ...
|
#
128719c4 |
| 13-Sep-2018 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Fix crash on call to __builtin_memcpy with a null pointer to an incomplete type.
Also improve the diagnostics for similar situations.
llvm-svn: 342192
|
Revision tags: llvmorg-7.0.0, llvmorg-7.0.0-rc3, llvmorg-7.0.0-rc2 |
|
#
06f71b5b |
| 04-Aug-2018 |
Richard Smith <richard-llvm@metafoo.co.uk> |
[constexpr] Support for constant evaluation of __builtin_memcpy and __builtin_memmove (in non-type-punning cases).
This is intended to permit libc++ to make std::copy etc constexpr without sacrifici
[constexpr] Support for constant evaluation of __builtin_memcpy and __builtin_memmove (in non-type-punning cases).
This is intended to permit libc++ to make std::copy etc constexpr without sacrificing the optimization that uses memcpy on trivially-copyable types.
__builtin_strcpy and __builtin_wcscpy are not handled by this change. They'd be straightforward to add, but we haven't encountered a need for them just yet.
This reinstates r338455, reverted in r338602, with a fix to avoid trying to constant-evaluate a memcpy call if either pointer operand has an invalid designator.
llvm-svn: 338941
show more ...
|
Revision tags: llvmorg-7.0.0-rc1 |
|
#
6bd4f924 |
| 01-Aug-2018 |
Hans Wennborg <hans@hanshq.net> |
Revert r338455 "[constexpr] Support for constant evaluation of __builtin_memcpy and __builtin_memmove (in non-type-punning cases)."
It caused asserts during Chromium builds, see reply on the cfe-com
Revert r338455 "[constexpr] Support for constant evaluation of __builtin_memcpy and __builtin_memmove (in non-type-punning cases)."
It caused asserts during Chromium builds, see reply on the cfe-commits thread.
> This is intended to permit libc++ to make std::copy etc constexpr > without sacrificing the optimization that uses memcpy on > trivially-copyable types. > > __builtin_strcpy and __builtin_wcscpy are not handled by this change. > They'd be straightforward to add, but we haven't encountered a need for > them just yet.
llvm-svn: 338602
show more ...
|
#
96beffba |
| 31-Jul-2018 |
Richard Smith <richard-llvm@metafoo.co.uk> |
[constexpr] Support for constant evaluation of __builtin_memcpy and __builtin_memmove (in non-type-punning cases).
This is intended to permit libc++ to make std::copy etc constexpr without sacrifici
[constexpr] Support for constant evaluation of __builtin_memcpy and __builtin_memmove (in non-type-punning cases).
This is intended to permit libc++ to make std::copy etc constexpr without sacrificing the optimization that uses memcpy on trivially-copyable types.
__builtin_strcpy and __builtin_wcscpy are not handled by this change. They'd be straightforward to add, but we haven't encountered a need for them just yet.
llvm-svn: 338455
show more ...
|
Revision tags: llvmorg-6.0.1, llvmorg-6.0.1-rc3, llvmorg-6.0.1-rc2 |
|
#
bb156b52 |
| 24-Apr-2018 |
Benjamin Kramer <benny.kra@googlemail.com> |
[AST] Another attempt at fixing the ARM bots.
llvm-svn: 330690
|
#
2fdf81fb |
| 24-Apr-2018 |
Benjamin Kramer <benny.kra@googlemail.com> |
[AST] Use a bit of trickery to make test pass on platforms where wchar_t is unsigned.
llvm-svn: 330689
|
#
33b70926 |
| 23-Apr-2018 |
Benjamin Kramer <benny.kra@googlemail.com> |
[AST] strcmp/memcmp always compares unsigned chars.
This makes it return the right result in a couple of edge cases. The wide versions always do the comparison on the underlying wchar_t type.
llvm-
[AST] strcmp/memcmp always compares unsigned chars.
This makes it return the right result in a couple of edge cases. The wide versions always do the comparison on the underlying wchar_t type.
llvm-svn: 330656
show more ...
|
Revision tags: llvmorg-6.0.1-rc1, llvmorg-5.0.2, llvmorg-5.0.2-rc2, llvmorg-5.0.2-rc1, llvmorg-6.0.0, llvmorg-6.0.0-rc3, llvmorg-6.0.0-rc2, llvmorg-6.0.0-rc1, llvmorg-5.0.1, llvmorg-5.0.1-rc3, llvmorg-5.0.1-rc2, llvmorg-5.0.1-rc1, llvmorg-5.0.0, llvmorg-5.0.0-rc5, llvmorg-5.0.0-rc4, llvmorg-5.0.0-rc3, llvmorg-5.0.0-rc2, llvmorg-5.0.0-rc1, llvmorg-4.0.1, llvmorg-4.0.1-rc3, llvmorg-4.0.1-rc2, llvmorg-4.0.1-rc1, llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3, llvmorg-4.0.0-rc2 |
|
#
5e29dd3f |
| 20-Jan-2017 |
Richard Smith <richard-llvm@metafoo.co.uk> |
P0426: Make the library implementation of constexpr char_traits a little easier by providing a memchr builtin that returns char* instead of void*.
Also add a __has_feature flag to indicate the prese
P0426: Make the library implementation of constexpr char_traits a little easier by providing a memchr builtin that returns char* instead of void*.
Also add a __has_feature flag to indicate the presence of constexpr forms of the relevant <string> functions.
llvm-svn: 292555
show more ...
|
Revision tags: llvmorg-4.0.0-rc1, llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2 |
|
#
8110c9df |
| 29-Nov-2016 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Support constant expression evaluation for wchar_t versions of simple string functions, in order to support constexpr std::char_traits<wchar_t>.
llvm-svn: 288193
|
Revision tags: llvmorg-3.9.1-rc1 |
|
#
e950795a |
| 12-Nov-2016 |
Richard Smith <richard-llvm@metafoo.co.uk> |
[c++1z] Support constant folding for __builtin_strchr and __builtin_memchr.
llvm-svn: 286699
|
#
e151bab2 |
| 11-Nov-2016 |
Richard Smith <richard-llvm@metafoo.co.uk> |
[c++1z] Add constant-folding support for strcmp, strncmp, and memcmp, to support constexpr char_traits.
llvm-svn: 286678
|