Revision tags: llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3 |
|
#
b637148e |
| 21-Sep-2020 |
Richard Smith <richard@metafoo.co.uk> |
[c++20] For P0732R2 / P1907R1: Basic code generation and name mangling support for non-type template parameters of class type and template parameter objects.
The Itanium side of this follows the app
[c++20] For P0732R2 / P1907R1: Basic code generation and name mangling support for non-type template parameters of class type and template parameter objects.
The Itanium side of this follows the approach I proposed in https://github.com/itanium-cxx-abi/cxx-abi/issues/47 on 2020-09-06.
The MSVC side of this was determined empirically by observing MSVC's output.
Differential Revision: https://reviews.llvm.org/D89998
show more ...
|
#
e04ba2bc |
| 22-Oct-2020 |
Richard Smith <richard@metafoo.co.uk> |
Make APValue profiling a little more compact.
|
#
0c417d4b |
| 21-Oct-2020 |
Richard Smith <richard@metafoo.co.uk> |
Add more test coverage for APValue serialization / deserialization and fix a few exposed bugs.
|
#
cf34dd0c |
| 01-Oct-2020 |
Tyker <tyker1@outlook.com> |
[clang] Improve Serialization/Imporing/Dumping of APValues
Changes: - initializer expressions of constexpr variable are now wraped in a ConstantExpr. this is mainly used for testing purposes. the o
[clang] Improve Serialization/Imporing/Dumping of APValues
Changes: - initializer expressions of constexpr variable are now wraped in a ConstantExpr. this is mainly used for testing purposes. the old caching system has not yet been removed. - Add all the missing Serialization and Importing for APValue. - Improve dumping of APValue when ASTContext isn't available. - Cleanup leftover from last patch. - Add Tests for Import and serialization.
Differential Revision: https://reviews.llvm.org/D63640
show more ...
|
#
53122ce2 |
| 15-Oct-2020 |
Tyker <tyker1@outlook.com> |
[NFC] Correct name of profile function to Profile in APValue
Capitalize the profile function of APValue such that it can be used by FoldingSetNodeID
Reviewed By: rsmith
Differential Revision: http
[NFC] Correct name of profile function to Profile in APValue
Capitalize the profile function of APValue such that it can be used by FoldingSetNodeID
Reviewed By: rsmith
Differential Revision: https://reviews.llvm.org/D88643
show more ...
|
#
913f6005 |
| 02-Sep-2020 |
Richard Smith <richard@metafoo.co.uk> |
Canonicalize declaration pointers when forming APValues.
References to different declarations of the same entity aren't different values, so shouldn't have different representations.
Recommit of e6
Canonicalize declaration pointers when forming APValues.
References to different declarations of the same entity aren't different values, so shouldn't have different representations.
Recommit of e6393ee813178e9d3306b8e3c6949a4f32f8a2cb, most recently reverted in 9a33f027ac7d73e14ae287e78ab554142d1cbc8f due to a bug caused by ObjCInterfaceDecls not propagating availability attributes along their redeclaration chains; that bug was fixed in e2d4174e9c66251d1b408234b53f53d0903c0285.
show more ...
|
#
9a33f027 |
| 12-Oct-2020 |
Arthur Eubanks <aeubanks@google.com> |
Revert "Canonicalize declaration pointers when forming APValues."
This reverts commit 9dcd96f728863d40d6f5922ed52732fdd728fb5f.
See https://crbug.com/1134762.
|
#
df2a1f2a |
| 02-Sep-2020 |
Richard Smith <richard@metafoo.co.uk> |
Add profiling support for APValues.
For C++20 P0732R2; unused so far. Will be used and tested by a follow-on commit.
|
#
9dcd96f7 |
| 02-Sep-2020 |
Richard Smith <richard@metafoo.co.uk> |
Canonicalize declaration pointers when forming APValues.
References to different declarations of the same entity aren't different values, so shouldn't have different representations.
Recommit of e6
Canonicalize declaration pointers when forming APValues.
References to different declarations of the same entity aren't different values, so shouldn't have different representations.
Recommit of e6393ee813178e9d3306b8e3c6949a4f32f8a2cb with fixed handling for weak declarations. We now look for attributes on the most recent declaration when determining whether a declaration is weak. (Second recommit with further fixes for mishandling of weak declarations. Our behavior here is fundamentally unsound -- see PR47663 -- but this approach attempts to not make things worse.)
show more ...
|
#
15d94a7d |
| 23-Sep-2020 |
Leonard Chan <leonardchan@google.com> |
Revert "Canonicalize declaration pointers when forming APValues."
This reverts commit 905b9ca26c94fa86339451a528cedde5004fc1bb.
Reverting because this strips `weak` attributes off function declarat
Revert "Canonicalize declaration pointers when forming APValues."
This reverts commit 905b9ca26c94fa86339451a528cedde5004fc1bb.
Reverting because this strips `weak` attributes off function declarations, leading to the linker error we see at https://ci.chromium.org/p/fuchsia/builders/ci/clang_toolchain.fuchsia-arm64-debug-subbuild/b8868932035091473008.
See https://reviews.llvm.org/rG905b9ca26c94 for reproducer details.
show more ...
|
#
905b9ca2 |
| 02-Sep-2020 |
Richard Smith <richard@metafoo.co.uk> |
Canonicalize declaration pointers when forming APValues.
References to different declarations of the same entity aren't different values, so shouldn't have different representations.
Recommit of e6
Canonicalize declaration pointers when forming APValues.
References to different declarations of the same entity aren't different values, so shouldn't have different representations.
Recommit of e6393ee813178e9d3306b8e3c6949a4f32f8a2cb with fixed handling for weak declarations. We now look for attributes on the most recent declaration when determining whether a declaration is weak.
show more ...
|
#
4d0312c8 |
| 06-Sep-2020 |
Benjamin Kramer <benny.kra@googlemail.com> |
Add proper move ctor/move assign to APValue. NFCI.
Swapping 64 bytes to make a move isn't cheap.
|
#
7b033238 |
| 04-Sep-2020 |
Nico Weber <thakis@chromium.org> |
Revert "Canonicalize declaration pointers when forming APValues."
This reverts commit e6393ee813178e9d3306b8e3c6949a4f32f8a2cb. It breaks Wunreachable for weak attributes, see http://lists.llvm.org/
Revert "Canonicalize declaration pointers when forming APValues."
This reverts commit e6393ee813178e9d3306b8e3c6949a4f32f8a2cb. It breaks Wunreachable for weak attributes, see http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20200831/336645.html
show more ...
|
#
e6393ee8 |
| 02-Sep-2020 |
Richard Smith <richard@metafoo.co.uk> |
Canonicalize declaration pointers when forming APValues.
References to different declarations of the same entity aren't different values, so shouldn't have different representations.
|
#
70923983 |
| 20-Aug-2020 |
Richard Smith <richard@metafoo.co.uk> |
Improve pretty-printing for APValues of void type.
No functionality change intended: there doesn't seem to be any way to cause Clang to print such a value, but they can show up when dumping APValues
Improve pretty-printing for APValues of void type.
No functionality change intended: there doesn't seem to be any way to cause Clang to print such a value, but they can show up when dumping APValues from a debugger.
show more ...
|
Revision tags: 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 |
|
#
f63e3ea5 |
| 06-Jul-2020 |
Bruno Ricci <riccibrun@gmail.com> |
[clang] Rework how and when APValues are dumped
Currently APValues are dumped as a single string. This becomes quickly completely unreadable since APValue is a tree-like structure. Even a simple exa
[clang] Rework how and when APValues are dumped
Currently APValues are dumped as a single string. This becomes quickly completely unreadable since APValue is a tree-like structure. Even a simple example is not pretty:
struct S { int arr[4]; float f; }; constexpr S s = { .arr = {1,2}, .f = 3.1415f }; // Struct fields: Array: Int: 1, Int: 2, 2 x Int: 0, Float: 3.141500e+00
With this patch this becomes:
-Struct |-field: Array size=4 | |-elements: Int 1, Int 2 | `-filler: 2 x Int 0 `-field: Float 3.141500e+00
Additionally APValues are currently only dumped as part of visiting a ConstantExpr. This patch also dump the value of the initializer of constexpr variable declarations:
constexpr int foo(int a, int b) { return a + b - 42; } constexpr int a = 1, b = 2; constexpr int c = foo(a, b) > 0 ? foo(a, b) : foo(b, a); // VarDecl 0x62100008aec8 <col:3, col:57> col:17 c 'const int' constexpr cinit // |-value: Int -39 // `-ConditionalOperator 0x62100008b4d0 <col:21, col:57> 'int' // <snip>
Do the above by moving the dump functions to TextNodeDumper which already has the machinery to display trees. The cases APValue::LValue, APValue::MemberPointer and APValue::AddrLabelDiff are left as they were before (unimplemented).
We try to display multiple elements on the same line if they are considered to be "simple". This is to avoid wasting large amounts of vertical space in an example like:
constexpr int arr[8] = {0,1,2,3,4,5,6,7}; // VarDecl 0x62100008bb78 <col:3, col:42> col:17 arr 'int const[8]' constexpr cinit // |-value: Array size=8 // | |-elements: Int 0, Int 1, Int 2, Int 3 // | `-elements: Int 4, Int 5, Int 6, Int 7
Differential Revision: https://reviews.llvm.org/D83183
Reviewed By: aaron.ballman
show more ...
|
#
473fbc90 |
| 03-Jul-2020 |
Bruno Ricci <riccibrun@gmail.com> |
[clang][NFC] Store a pointer to the ASTContext in ASTDumper and TextNodeDumper
In general there is no way to get to the ASTContext from most AST nodes (Decls are one of the exception). This will be
[clang][NFC] Store a pointer to the ASTContext in ASTDumper and TextNodeDumper
In general there is no way to get to the ASTContext from most AST nodes (Decls are one of the exception). This will be a problem when implementing the rest of APValue::dump since we need the ASTContext to dump some kinds of APValues.
The ASTContext* in ASTDumper and TextNodeDumper is not always non-null. This is because we still want to be able to use the various dump() functions in a debugger.
No functional changes intended.
Reverted in fcf4d5e4499a391dff42ea1a096f146db44147b6 since a few dump() functions in lldb where missed.
show more ...
|
#
fcf4d5e4 |
| 02-Jul-2020 |
Bruno Ricci <riccibrun@gmail.com> |
Revert "[clang][NFC] Store a pointer to the ASTContext in ASTDumper and TextNodeDumper"
This reverts commit aa7fd905e4e1bc510448431da9310e8cf5197523.
I missed some dump() functions.
|
#
aa7fd905 |
| 02-Jul-2020 |
Bruno Ricci <riccibrun@gmail.com> |
[clang][NFC] Store a pointer to the ASTContext in ASTDumper and TextNodeDumper
In general there is no way to get to the ASTContext from most AST nodes (Decls are one of the exception). This will be
[clang][NFC] Store a pointer to the ASTContext in ASTDumper and TextNodeDumper
In general there is no way to get to the ASTContext from most AST nodes (Decls are one of the exception). This will be a problem when implementing the rest of APValue::dump since we need the ASTContext to dump some kinds of APValues.
The ASTContext* in ASTDumper and TextNodeDumper is not always non-null. This is because we still want to be able to use the various dump() functions in a debugger.
No functional changes intended.
show more ...
|
Revision tags: llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1, 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 |
|
#
1cd399c9 |
| 03-Oct-2019 |
Simon Pilgrim <llvm-dev@redking.me.uk> |
Silence static analyzer getAs<RecordType> null dereference warnings. NFCI.
The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<Record
Silence static analyzer getAs<RecordType> null dereference warnings. NFCI.
The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<RecordType> directly and if not assert will fire for us.
llvm-svn: 373584
show more ...
|
#
e0712019 |
| 02-Oct-2019 |
Simon Pilgrim <llvm-dev@redking.me.uk> |
Silence static analyzer getAs<VectorType> null dereference warnings. NFCI.
The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<Vector
Silence static analyzer getAs<VectorType> null dereference warnings. NFCI.
The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<VectorType> directly and if not assert will fire for us.
llvm-svn: 373478
show more ...
|
#
da1b4347 |
| 27-Sep-2019 |
Richard Smith <richard-llvm@metafoo.co.uk> |
For P0784R7: Add support for dynamic allocation with new / delete during constant evaluation.
llvm-svn: 373036
|
Revision tags: 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 |
|
#
83c7b610 |
| 15-Jun-2019 |
Gauthier Harnisch <tyker1@outlook.com> |
[clang] Add storage for APValue in ConstantExpr
Summary: When using ConstantExpr we often need the result of the expression to be kept in the AST. Currently this is done on a by the node that needs
[clang] Add storage for APValue in ConstantExpr
Summary: When using ConstantExpr we often need the result of the expression to be kept in the AST. Currently this is done on a by the node that needs the result and has been done multiple times for enumerator, for constexpr variables... . This patch adds to ConstantExpr the ability to store the result of evaluating the expression. no functional changes expected.
Changes: - Add trailling object to ConstantExpr that can hold an APValue or an uint64_t. the uint64_t is here because most ConstantExpr yield integral values so there is an optimized layout for integral values. - Add basic* serialization support for the trailing result. - Move conversion functions from an enum to a fltSemantics from clang::FloatingLiteral to llvm::APFloatBase. this change is to make it usable for serializing APValues. - Add basic* Import support for the trailing result. - ConstantExpr created in CheckConvertedConstantExpression now stores the result in the ConstantExpr Node. - Adapt AST dump to print the result when present.
basic* : None, Indeterminate, Int, Float, FixedPoint, ComplexInt, ComplexFloat, the result is not yet used anywhere but for -ast-dump.
Reviewers: rsmith, martong, shafik
Reviewed By: rsmith
Subscribers: rnkovacs, hiraditya, dexonsmith, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D62399
llvm-svn: 363493
show more ...
|
Revision tags: llvmorg-8.0.1-rc2 |
|
#
e637cbe4 |
| 21-May-2019 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Refactor: split Uninitialized state on APValue into an "Absent" state representing no such object, and an "Indeterminate" state representing an uninitialized object. The latter is not yet used, but s
Refactor: split Uninitialized state on APValue into an "Absent" state representing no such object, and an "Indeterminate" state representing an uninitialized object. The latter is not yet used, but soon will be.
llvm-svn: 361328
show more ...
|
#
77483765 |
| 17-May-2019 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Fix alignment check to check the alignment of the intended type.
llvm-svn: 360997
|