Revision tags: llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3 |
|
#
55ea3600 |
| 06-Aug-2024 |
Krystian Stasiowski <sdkrystian@gmail.com> |
[Clang][Sema] Make UnresolvedLookupExprs in class scope explicit specializations instantiation dependent (#100392)
A class member named by an expression in a member function that may instantiate to
[Clang][Sema] Make UnresolvedLookupExprs in class scope explicit specializations instantiation dependent (#100392)
A class member named by an expression in a member function that may instantiate to a static _or_ non-static member is represented by a `UnresolvedLookupExpr` in order to defer the implicit transformation to a class member access expression until instantiation. Since `ASTContext::getDecltypeType` only creates a `DecltypeType` that has a `DependentDecltypeType` as its canonical type when the operand is instantiation dependent, and since we do not transform types unless they are instantiation dependent, we need to mark the `UnresolvedLookupExpr` as instantiation dependent in order to correctly build a `DecltypeType` using the expression as its operand with a `DependentDecltypeType` canonical type. Fixes #99873.
show more ...
|
Revision tags: llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1 |
|
#
073c199a |
| 24-Jul-2024 |
Krystian Stasiowski <sdkrystian@gmail.com> |
[Clang][AST] Don't use canonical type when checking dependence in Type::isOverloadable (#98563)
Fixes #97646.
|
Revision tags: 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, 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 |
|
#
3951c28b |
| 07-Mar-2023 |
Liming Liu <gangliugangliu.ml@outlook.com> |
[clang] Replace Member Expressions During Instantiation If Necessary
This patch replaces member accesses to declaration references during template instantiation if the context is the unevaluated con
[clang] Replace Member Expressions During Instantiation If Necessary
This patch replaces member accesses to declaration references during template instantiation if the context is the unevaluated context and the class does not contain the declaration.
The replacement fixes the issue #58674. Unlike previous fixes such as D143840, it checks the membership during instantiation rather than right after parsing, so the check is more accurate and efficient.
This patch also includes cases that previous fixes had once failed on.
Differential Revision: https://reviews.llvm.org/D145491
show more ...
|
#
1812e13a |
| 23-Feb-2023 |
Alexander Kornienko <alexfh@google.com> |
Revert "[clang] Add the check of membership for the issue #58674 and improve the lookup process"
The commit causes clang to crash. See https://reviews.llvm.org/D143840#4147234
This reverts commit 8
Revert "[clang] Add the check of membership for the issue #58674 and improve the lookup process"
The commit causes clang to crash. See https://reviews.llvm.org/D143840#4147234
This reverts commit 8498ba6c2860c838183f9951b63df26ab5f02265.
show more ...
|
Revision tags: llvmorg-16.0.0-rc3 |
|
#
8498ba6c |
| 12-Feb-2023 |
Liming Liu <gangliugangliu.ml@outlook.com> |
[clang] Add the check of membership for the issue #58674 and improve the lookup process
This patch includes the commit 01adf96ebc86 and a fix of unhandled declaration references.
When looking up ba
[clang] Add the check of membership for the issue #58674 and improve the lookup process
This patch includes the commit 01adf96ebc86 and a fix of unhandled declaration references.
When looking up base classes, Clang first checks whether a base class is a template and takes the specialized template based on it. However, the base class might be instantiated, and the above behavior can lose information.
This patch fixes the problem by first checking whether a base class is a record declaration, so the instantiated one will be taken.
Differential Revision: https://reviews.llvm.org/D143840
show more ...
|
Revision tags: llvmorg-16.0.0-rc2 |
|
#
d6d29dc4 |
| 29-Jan-2023 |
Liming Liu <gangliugangliu.ml@outlook.com> |
Revert commit 01adf96ebc86 because it caused "Unhandled DeclRefExpr" errors.
|
Revision tags: llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7 |
|
#
01adf96e |
| 10-Jan-2023 |
Liming Liu <gangliugangliu.ml@outlook.com> |
[clang] Add the check of membership in decltype for the issue #58674
D137531 had once fixed the issue. However, it caused a crash during compiling llvm/unittests/IR/PatternMatch.cpp in stage-2. The
[clang] Add the check of membership in decltype for the issue #58674
D137531 had once fixed the issue. However, it caused a crash during compiling llvm/unittests/IR/PatternMatch.cpp in stage-2. The reason is the predicator isDerivedFrom does not consider independent types if the derived type is dependent.
This patch improves D137531 by adding an option to make isDerivedFrom consider independent types.
Differential Revision: https://reviews.llvm.org/D142437
show more ...
|
#
3ba051b1 |
| 04-Jan-2023 |
Erich Keane <erich.keane@intel.com> |
Revert "[clang] Add the check of membership in decltype for the issue #58674#"
This reverts commit 85960043d594fc12d340ccb66a30861b023ab496.
The powerpc64le self-built buildbot had an assertion dur
Revert "[clang] Add the check of membership in decltype for the issue #58674#"
This reverts commit 85960043d594fc12d340ccb66a30861b023ab496.
The powerpc64le self-built buildbot had an assertion during self-build, that seems like it is possibly related here, reverting so the author can take a look.
show more ...
|
#
85960043 |
| 04-Jan-2023 |
Liming Liu <gangliugangliu.ml@outlook.com> |
[clang] Add the check of membership in decltype for the issue #58674#
Originally, the code would take a lookup result as a member in the current scope and build a member expression accordingly, if t
[clang] Add the check of membership in decltype for the issue #58674#
Originally, the code would take a lookup result as a member in the current scope and build a member expression accordingly, if the lookup result was not an operand of the address operator, or it was a field declaration. However, a field declaration may come from another class, and cause the issue #58674.
Thus, this patch fixes the issue via checking where does the field declaration comes from, and if it comes from another class, then marks it as not member in the current scope. The parent scopes of the current scope are also checked, as the current scope may be associated to a lambda or friend declaration.
Differential Revision: https://reviews.llvm.org/D137531
show more ...
|
Revision tags: 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, 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, 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 |
|
#
0c42539d |
| 28-Mar-2020 |
Richard Smith <richard@metafoo.co.uk> |
Improve error recovery from missing '>' in template argument list.
Produce the conventional "to match this '<'" note, so that the user knows why we expected a '>', and properly handle '>>' in C++11
Improve error recovery from missing '>' in template argument list.
Produce the conventional "to match this '<'" note, so that the user knows why we expected a '>', and properly handle '>>' in C++11 onwards.
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 |
|
#
5030928d |
| 30-Aug-2019 |
Richard Smith <richard-llvm@metafoo.co.uk> |
[c++20] Implement semantic restrictions for C++20 designated initializers.
This has some interesting interactions with our existing extensions to support C99 designated initializers as an extension
[c++20] Implement semantic restrictions for C++20 designated initializers.
This has some interesting interactions with our existing extensions to support C99 designated initializers as an extension in C++. Those are resolved as follows:
* We continue to permit the full breadth of C99 designated initializers in C++, with the exception that we disallow a partial overwrite of an initializer with a non-trivially-destructible type. (Full overwrite is OK, because we won't run the first initializer at all.)
* The C99 extensions are disallowed in SFINAE contexts and during overload resolution, where they could change the meaning of valid programs.
* C++20 disallows reordering of initializers. We only check for that for the simple cases that the C++20 rules permit (designators of the form '.field_name =' and continue to allow reordering in other cases). It would be nice to improve this behavior in future.
* All C99 designated initializer extensions produce a warning by default in C++20 mode. People are going to learn the C++ rules based on what Clang diagnoses, so it's important we diagnose these properly by default.
* In C++ <= 17, we apply the C++20 rules rather than the C99 rules, and so still diagnose C99 extensions as described above. We continue to accept designated C++20-compatible initializers in C++ <= 17 silently by default (but naturally still reject under -pedantic-errors).
This is not a complete implementation of P0329R4. In particular, that paper introduces new non-C99-compatible syntax { .field { init } }, and we do not support that yet.
This is based on a previous patch by Don Hinton, though I've made substantial changes when addressing the above interactions.
Differential Revision: https://reviews.llvm.org/D59754
llvm-svn: 370544
show more ...
|
Revision tags: 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, llvmorg-7.1.0, llvmorg-7.1.0-rc1, llvmorg-8.0.0-rc2, llvmorg-8.0.0-rc1, llvmorg-7.0.1, llvmorg-7.0.1-rc3, llvmorg-7.0.1-rc2, llvmorg-7.0.1-rc1, llvmorg-7.0.0, llvmorg-7.0.0-rc3, llvmorg-7.0.0-rc2, llvmorg-7.0.0-rc1, llvmorg-6.0.1, llvmorg-6.0.1-rc3, llvmorg-6.0.1-rc2, 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, llvmorg-4.0.0-rc1, llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2, llvmorg-3.9.1-rc1, llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2, llvmorg-3.9.0-rc1, llvmorg-3.8.1, llvmorg-3.8.1-rc1, llvmorg-3.8.0, llvmorg-3.8.0-rc3, llvmorg-3.8.0-rc2, llvmorg-3.8.0-rc1, llvmorg-3.7.1, llvmorg-3.7.1-rc2, llvmorg-3.7.1-rc1, llvmorg-3.7.0, llvmorg-3.7.0-rc4, llvmorg-3.7.0-rc3, studio-1.4, llvmorg-3.7.0-rc2, llvmorg-3.7.0-rc1, llvmorg-3.6.2, llvmorg-3.6.2-rc1 |
|
#
cb77930d |
| 10-Jun-2015 |
Yunzhong Gao <Yunzhong_Gao@playstation.sony.com> |
Implementing C99 partial re-initialization behavior (DR-253)
Based on previous discussion on the mailing list, clang currently lacks support for C99 partial re-initialization behavior: Reference: ht
Implementing C99 partial re-initialization behavior (DR-253)
Based on previous discussion on the mailing list, clang currently lacks support for C99 partial re-initialization behavior: Reference: http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-April/029188.html Reference: http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_253.htm
This patch attempts to fix this problem.
Given the following code snippet,
struct P1 { char x[6]; }; struct LP1 { struct P1 p1; };
struct LP1 l = { .p1 = { "foo" }, .p1.x[2] = 'x' }; // this example is adapted from the example for "struct fred x[]" in DR-253; // currently clang produces in l: { "\0\0x" }, // whereas gcc 4.8 produces { "fox" }; // with this fix, clang will also produce: { "fox" };
Differential Review: http://reviews.llvm.org/D5789
llvm-svn: 239446
show more ...
|
Revision tags: llvmorg-3.6.1, llvmorg-3.6.1-rc1, llvmorg-3.5.2, llvmorg-3.5.2-rc1, llvmorg-3.6.0, llvmorg-3.6.0-rc4, llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2, llvmorg-3.6.0-rc1, llvmorg-3.5.1, llvmorg-3.5.1-rc2, llvmorg-3.5.1-rc1, llvmorg-3.5.0, llvmorg-3.5.0-rc4, llvmorg-3.5.0-rc3, llvmorg-3.5.0-rc2, llvmorg-3.5.0-rc1, llvmorg-3.4.2, llvmorg-3.4.2-rc1 |
|
#
ea75aad3 |
| 26-Apr-2014 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
[Sema] Adjust Sema::getCurBlock()/getCurLambda() to take into account that we may have switch CurContext due to class template instantiation.
Fixes crash of the included test case. rdar://16527205
[Sema] Adjust Sema::getCurBlock()/getCurLambda() to take into account that we may have switch CurContext due to class template instantiation.
Fixes crash of the included test case. rdar://16527205
llvm-svn: 207325
show more ...
|
Revision tags: llvmorg-3.4.1, llvmorg-3.4.1-rc2, llvmorg-3.4.1-rc1 |
|
#
202dc131 |
| 18-Feb-2014 |
Richard Smith <richard-llvm@metafoo.co.uk> |
PR18876: The special-case rule that ignores the destruction of a top-level temporary in a decltype expression only applies if that temporary was created by a function call, not by a function-style ca
PR18876: The special-case rule that ignores the destruction of a top-level temporary in a decltype expression only applies if that temporary was created by a function call, not by a function-style cast or other flavour of expression.
llvm-svn: 201542
show more ...
|
Revision tags: llvmorg-3.4.0, llvmorg-3.4.0-rc3, llvmorg-3.4.0-rc2, llvmorg-3.4.0-rc1 |
|
#
90061908 |
| 23-Sep-2013 |
Richard Smith <richard-llvm@metafoo.co.uk> |
PR16529: Don't forget to add the CXXFunctionalCastExpr type sugar to an InitListExpr for a C++11-style T{...} construction, if initialization registered a destructor for it.
llvm-svn: 191182
|
Revision tags: llvmorg-3.3.1-rc1, llvmorg-3.3.0, llvmorg-3.3.0-rc3, llvmorg-3.3.0-rc2, llvmorg-3.3.0-rc1, llvmorg-3.2.0, llvmorg-3.2.0-rc3, llvmorg-3.2.0-rc2, llvmorg-3.2.0-rc1 |
|
#
0da2fa35 |
| 07-Nov-2012 |
David Blaikie <dblaikie@gmail.com> |
PR12713 - crash on invalid due to unmatched parens in decltype
llvm-svn: 167547
|
#
c38395a0 |
| 26-Oct-2012 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
In Parser::ParseDecltypeSpecifier, make sure the end location it returns is at the end of parsed tokens when an error occurs, otherwise we'll hit an assertion when trying to annotate the decltype tok
In Parser::ParseDecltypeSpecifier, make sure the end location it returns is at the end of parsed tokens when an error occurs, otherwise we'll hit an assertion when trying to annotate the decltype tokens.
llvm-svn: 166826
show more ...
|
#
c6e68daa |
| 19-Oct-2012 |
Andy Gibbs <andyg1001@hotmail.co.uk> |
Prior to adding the new "expected-no-diagnostics" directive to VerifyDiagnosticConsumer, make the necessary adjustment to 580 test-cases which will henceforth require this new directive.
llvm-svn: 1
Prior to adding the new "expected-no-diagnostics" directive to VerifyDiagnosticConsumer, make the necessary adjustment to 580 test-cases which will henceforth require this new directive.
llvm-svn: 166280
show more ...
|
Revision tags: llvmorg-3.1.0, llvmorg-3.1.0-rc3, llvmorg-3.1.0-rc2, llvmorg-3.1.0-rc1 |
|
#
bd153094 |
| 15-Jan-2012 |
Richard Smith <richard-llvm@metafoo.co.uk> |
decltype(e) is type-dependent if e is instantiation-dependent. Scary but true. Don't consider decltype(e) for an instantiation-dependent, but not type-dependent, e to be non-type-dependent but canoni
decltype(e) is type-dependent if e is instantiation-dependent. Scary but true. Don't consider decltype(e) for an instantiation-dependent, but not type-dependent, e to be non-type-dependent but canonical(!).
llvm-svn: 148210
show more ...
|
Revision tags: llvmorg-3.0.0, llvmorg-3.0.0-rc4, llvmorg-3.0.0-rc3, llvmorg-3.0.0-rc2, llvmorg-3.0.0-rc1 |
|
#
9ca5c425 |
| 13-Oct-2011 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Update all tests other than Driver/std.cpp to use -std=c++11 rather than -std=c++0x. Patch by Ahmed Charles!
llvm-svn: 141900
|
#
e878cb6b |
| 19-Jun-2011 |
Francois Pichet <pichet2000@gmail.com> |
Handle decltype keyword in Parser::isDeclarationSpecifier. Fixes PR10154. Found by parsing MFC 2010 code with clang.
llvm-svn: 133380
|
Revision tags: llvmorg-2.9.0, llvmorg-2.9.0-rc3, llvmorg-2.9.0-rc2, llvmorg-2.9.0-rc1, llvmorg-2.8.0, llvmorg-2.8.0-rc3, llvmorg-2.8.0-rc2, llvmorg-2.8.0-rc1, llvmorg-2.8.0-rc0 |
|
#
cb2b6622 |
| 15-Jul-2010 |
Douglas Gregor <dgregor@apple.com> |
Make the "unused result" warning a warning about run-time behavior, so that we don't warn when there isn't going to be any computation anyway.
llvm-svn: 108442
|
#
d9d45838 |
| 15-Jul-2010 |
Douglas Gregor <dgregor@apple.com> |
Add test case for PR5290; this bug was fixed with the non-class rvalue de-cv-qualification fixes.
llvm-svn: 108437
|