| #
40568fec |
| 10-Mar-2020 |
Akira Hatanaka <[email protected]> |
[CodeGen] Emit destructor calls to destruct compound literals
Fix a bug in IRGen where it wasn't destructing compound literals in C that are ObjC pointer arrays or non-trivial structs. Also diagnose
[CodeGen] Emit destructor calls to destruct compound literals
Fix a bug in IRGen where it wasn't destructing compound literals in C that are ObjC pointer arrays or non-trivial structs. Also diagnose jumps that enter or exit the lifetime of the compound literals.
rdar://problem/51867864
Differential Revision: https://reviews.llvm.org/D64464
show more ...
|
| #
f495de43 |
| 17-Dec-2019 |
Richard Smith <[email protected]> |
[c++20] P1959R0: Remove support for std::*_equality.
|
| #
9803178a |
| 10-Dec-2019 |
Reid Kleckner <[email protected]> |
Avoid Attr.h includes, CodeGen edition
This saves around 20 includes of Attr.h. Not much.
|
| #
f139ae3d |
| 03-Dec-2019 |
Akira Hatanaka <[email protected]> |
[NFC] Pass a reference to CodeGenFunction to methods of LValue and AggValueSlot
This reapplies 8a5b7c35709d9ce1f44a99f0c5b084bf2696ea17 after a null dereference bug in CGOpenMPRuntime::emitUserDefin
[NFC] Pass a reference to CodeGenFunction to methods of LValue and AggValueSlot
This reapplies 8a5b7c35709d9ce1f44a99f0c5b084bf2696ea17 after a null dereference bug in CGOpenMPRuntime::emitUserDefinedMapper.
Original commit message:
This is needed for the pointer authentication work we plan to do in the near future.
https://github.com/apple/llvm-project/blob/a63a81bd9911f87a0b5dcd5bdd7ccdda7124af87/clang/docs/PointerAuthentication.rst
show more ...
|
| #
9f37c0e7 |
| 03-Dec-2019 |
Akira Hatanaka <[email protected]> |
Revert "[NFC] Pass a reference to CodeGenFunction to methods of LValue and"
This reverts commit 8a5b7c35709d9ce1f44a99f0c5b084bf2696ea17. This seems to have broken UBSan because of a null dereferenc
Revert "[NFC] Pass a reference to CodeGenFunction to methods of LValue and"
This reverts commit 8a5b7c35709d9ce1f44a99f0c5b084bf2696ea17. This seems to have broken UBSan because of a null dereference.
show more ...
|
| #
8a5b7c35 |
| 03-Dec-2019 |
Akira Hatanaka <[email protected]> |
[NFC] Pass a reference to CodeGenFunction to methods of LValue and AggValueSlot
This is needed for the pointer authentication work we plan to do in the near future.
https://github.com/apple/llvm-pr
[NFC] Pass a reference to CodeGenFunction to methods of LValue and AggValueSlot
This is needed for the pointer authentication work we plan to do in the near future.
https://github.com/apple/llvm-project/blob/a63a81bd9911f87a0b5dcd5bdd7ccdda7124af87/clang/docs/PointerAuthentication.rst
show more ...
|
| #
1ac700cd |
| 15-Nov-2019 |
Johannes Altmanninger <[email protected]> |
[CodeGen] Fix clang crash on aggregate initialization of array of labels
Summary: Fix PR43700
The ConstantEmitter in AggExprEmitter::EmitArrayInit was initialized with the CodeGenFunction set to nu
[CodeGen] Fix clang crash on aggregate initialization of array of labels
Summary: Fix PR43700
The ConstantEmitter in AggExprEmitter::EmitArrayInit was initialized with the CodeGenFunction set to null, which caused the crash. Also simplify another call, and make the CGF member a const pointer since it is public but only assigned in the constructor.
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70302
show more ...
|
| #
b0561b33 |
| 17-Nov-2019 |
Tyker <[email protected]> |
[NFC] Refactor representation of materialized temporaries
Summary: this patch refactor representation of materialized temporaries to prevent an issue raised by rsmith in https://reviews.llvm.org/D63
[NFC] Refactor representation of materialized temporaries
Summary: this patch refactor representation of materialized temporaries to prevent an issue raised by rsmith in https://reviews.llvm.org/D63640#inline-612718
Reviewers: rsmith, martong, shafik
Reviewed By: rsmith
Subscribers: thakis, sammccall, ilya-biryukov, rnkovacs, arphaman, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D69360
show more ...
|
| #
c9276fbf |
| 17-Nov-2019 |
Nico Weber <[email protected]> |
Revert "[NFC] Refactor representation of materialized temporaries"
This reverts commit 08ea1ee2db5f9d6460fef1d79d0d1d1a5eb78982. It broke ./ClangdTests/FindExplicitReferencesTest.All on the bots, se
Revert "[NFC] Refactor representation of materialized temporaries"
This reverts commit 08ea1ee2db5f9d6460fef1d79d0d1d1a5eb78982. It broke ./ClangdTests/FindExplicitReferencesTest.All on the bots, see comments on https://reviews.llvm.org/D69360
show more ...
|
| #
08ea1ee2 |
| 16-Nov-2019 |
Tyker <[email protected]> |
[NFC] Refactor representation of materialized temporaries
Summary: this patch refactor representation of materialized temporaries to prevent an issue raised by rsmith in https://reviews.llvm.org/D63
[NFC] Refactor representation of materialized temporaries
Summary: this patch refactor representation of materialized temporaries to prevent an issue raised by rsmith in https://reviews.llvm.org/D63640#inline-612718
Reviewers: rsmith, martong, shafik
Reviewed By: rsmith
Subscribers: rnkovacs, arphaman, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D69360
show more ...
|
| #
778dc0f1 |
| 19-Oct-2019 |
Richard Smith <[email protected]> |
[c++20] Add CXXRewrittenBinaryOperator to represent a comparison operator that is rewritten as a call to multiple other operators.
No functionality change yet: nothing creates these expressions.
ll
[c++20] Add CXXRewrittenBinaryOperator to represent a comparison operator that is rewritten as a call to multiple other operators.
No functionality change yet: nothing creates these expressions.
llvm-svn: 375305
show more ...
|
| #
c79099e0 |
| 03-Oct-2019 |
Guillaume Chatelet <[email protected]> |
[Alignment][Clang][NFC] Add CharUnits::getAsAlign
Summary: This is a prerequisite to removing `llvm::GlobalObject::setAlignment(unsigned)`. This is patch is part of a series to introduce an Alignmen
[Alignment][Clang][NFC] Add CharUnits::getAsAlign
Summary: This is a prerequisite to removing `llvm::GlobalObject::setAlignment(unsigned)`. This is patch is part of a series to introduce an Alignment type. See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html See this patch for the introduction of the type: https://reviews.llvm.org/D64790
Reviewers: courbet
Subscribers: jholewinski, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D68274
llvm-svn: 373592
show more ...
|
| #
f7133b79 |
| 01-Oct-2019 |
Simon Pilgrim <[email protected]> |
CGExprAgg - remove duplicate code. NFCI.
Remove duplicate getAs<> call, avoiding a clang static analyzer null dereference warning.
llvm-svn: 373396
|
|
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 |
|
| #
3bdb7a90 |
| 25-Jul-2019 |
Saleem Abdulrasool <[email protected]> |
Revert "Revert "CodeGen: ensure placeholder instruction for cleanup is created""
This reverts commit fd1274fa78cb0fd32cc1fa2e6f5bb8e62d29df19.
Add an explicit triple for the test which is pattern m
Revert "Revert "CodeGen: ensure placeholder instruction for cleanup is created""
This reverts commit fd1274fa78cb0fd32cc1fa2e6f5bb8e62d29df19.
Add an explicit triple for the test which is pattern matching overly aggressively.
llvm-svn: 367055
show more ...
|
| #
7c424d8b |
| 25-Jul-2019 |
JF Bastien <[email protected]> |
Revert "CodeGen: ensure placeholder instruction for cleanup is created"
Originally in https://reviews.llvm.org/D64656
Causes bot failures:
/home/buildslave/buildslave/clang-cmake-armv8-full/llvm/t
Revert "CodeGen: ensure placeholder instruction for cleanup is created"
Originally in https://reviews.llvm.org/D64656
Causes bot failures:
/home/buildslave/buildslave/clang-cmake-armv8-full/llvm/tools/clang/test/CodeGenCXX/pr40771-ctad-with-lambda-copy-capture.cpp:20:16: error: CHECK-NEXT: expected string not found in input // CHECK-NEXT: call void @_ZN1RC1E1Q(%struct.R* [[TMP_R]]) ^ <stdin>:37:2: note: scanning from here %8 = call %struct.R* @_ZN1RC1E1Q(%struct.R* %1) ^ <stdin>:37:2: note: with "TMP_R" equal to "%1" %8 = call %struct.R* @_ZN1RC1E1Q(%struct.R* %1) ^ <stdin>:37:17: note: possible intended match here %8 = call %struct.R* @_ZN1RC1E1Q(%struct.R* %1) ^
llvm-svn: 367051
show more ...
|
| #
930df11a |
| 25-Jul-2019 |
Saleem Abdulrasool <[email protected]> |
CodeGen: ensure placeholder instruction for cleanup is created
A placeholder instruction for use in generation of cleanup code for an initializer list would not be emitted if the base class containe
CodeGen: ensure placeholder instruction for cleanup is created
A placeholder instruction for use in generation of cleanup code for an initializer list would not be emitted if the base class contained a non-trivial destructor and the class contains no fields of its own. This would be the case when using CTAD to deduce the template arguments for a struct with an overloaded call operator, e.g.
``` template <class... Ts> struct ctad : Ts... {}; template <class... Ts> ctad(Ts...)->ctad<Ts...>; ```
and this class was initialized with a list of lambdas capturing by copy, e.g.
``` ctad c {[s](short){}, [s](long){}}; ```
In a release build the bug would manifest itself as a crash in the SROA pass, however, in a debug build the following assert in CGCleanup.cpp would fail:
``` assert(dominatingIP && "no existing variable and no dominating IP!"); ```
By ensuring that a placeholder instruction is emitted even if there's no fields in the class, neither the assert nor the crash is reproducible.
See https://bugs.llvm.org/show_bug.cgi?id=40771
Patch by Øystein Dale!
llvm-svn: 367042
show more ...
|
|
Revision tags: llvmorg-10-init, llvmorg-8.0.1, llvmorg-8.0.1-rc4 |
|
| #
eee944e7 |
| 02-Jul-2019 |
Erik Pilkington <[email protected]> |
[C++2a] Add __builtin_bit_cast, used to implement std::bit_cast
This commit adds a new builtin, __builtin_bit_cast(T, v), which performs a bit_cast from a value v to a type T. This expression can be
[C++2a] Add __builtin_bit_cast, used to implement std::bit_cast
This commit adds a new builtin, __builtin_bit_cast(T, v), which performs a bit_cast from a value v to a type T. This expression can be evaluated at compile time under specific circumstances.
The compile time evaluation currently doesn't support bit-fields, but I'm planning on fixing this in a follow up (some of the logic for figuring this out is in CodeGen). I'm also planning follow-ups for supporting some more esoteric types that the constexpr evaluator supports, as well as extending __builtin_memcpy constexpr evaluation to use the same infrastructure.
rdar://44987528
Differential revision: https://reviews.llvm.org/D62825
llvm-svn: 364954
show more ...
|
|
Revision tags: llvmorg-8.0.1-rc3 |
|
| #
8cca3a5a |
| 20-Jun-2019 |
Richard Smith <[email protected]> |
Rename CodeGenFunction::overlapFor* to getOverlapFor*.
llvm-svn: 363980
|
| #
78b239ea |
| 20-Jun-2019 |
Richard Smith <[email protected]> |
P0840R2: support for [[no_unique_address]] attribute
Summary: Add support for the C++2a [[no_unique_address]] attribute for targets using the Itanium C++ ABI.
This depends on D63371.
Reviewers: rj
P0840R2: support for [[no_unique_address]] attribute
Summary: Add support for the C++2a [[no_unique_address]] attribute for targets using the Itanium C++ ABI.
This depends on D63371.
Reviewers: rjmccall, aaron.ballman
Subscribers: dschuff, aheejin, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D63451
llvm-svn: 363976
show more ...
|
| #
27252a1f |
| 14-Jun-2019 |
Richard Smith <[email protected]> |
PR23833, DR2140: an lvalue-to-rvalue conversion on a glvalue of type nullptr_t does not access memory.
We now reuse CK_NullToPointer to represent a conversion from a glvalue of type nullptr_t to a p
PR23833, DR2140: an lvalue-to-rvalue conversion on a glvalue of type nullptr_t does not access memory.
We now reuse CK_NullToPointer to represent a conversion from a glvalue of type nullptr_t to a prvalue of nullptr_t where necessary.
This reinstates r363337, reverted in r363352.
llvm-svn: 363429
show more ...
|
| #
3d02b895 |
| 14-Jun-2019 |
Nico Weber <[email protected]> |
Revert 363295, it caused PR42276. Also revert follow-ups 363337, 363340.
Revert 363340 "Remove unused SK_LValueToRValue initialization step." Revert 363337 "PR23833, DR2140: an lvalue-to-rvalue conv
Revert 363295, it caused PR42276. Also revert follow-ups 363337, 363340.
Revert 363340 "Remove unused SK_LValueToRValue initialization step." Revert 363337 "PR23833, DR2140: an lvalue-to-rvalue conversion on a glvalue of type" Revert 363295 "C++ DR712 and others: handle non-odr-use resulting from an lvalue-to-rvalue conversion applied to a member access or similar not-quite-trivial lvalue expression."
llvm-svn: 363352
show more ...
|
| #
0476d069 |
| 13-Jun-2019 |
Richard Smith <[email protected]> |
PR23833, DR2140: an lvalue-to-rvalue conversion on a glvalue of type nullptr_t does not access memory.
We now reuse CK_NullToPointer to represent a conversion from a glvalue of type nullptr_t to a p
PR23833, DR2140: an lvalue-to-rvalue conversion on a glvalue of type nullptr_t does not access memory.
We now reuse CK_NullToPointer to represent a conversion from a glvalue of type nullptr_t to a prvalue of nullptr_t where necessary.
This reinstates r345562, reverted in r346065, now that CodeGen's handling of non-odr-used variables has been fixed.
llvm-svn: 363337
show more ...
|
|
Revision tags: llvmorg-8.0.1-rc2, llvmorg-8.0.1-rc1 |
|
| #
708afb56 |
| 16-May-2019 |
Eric Fiselier <[email protected]> |
Implement __builtin_LINE() et. al. to support source location capture.
Summary: This patch implements the source location builtins `__builtin_LINE(), `__builtin_FUNCTION()`, `__builtin_FILE()` and `
Implement __builtin_LINE() et. al. to support source location capture.
Summary: This patch implements the source location builtins `__builtin_LINE(), `__builtin_FUNCTION()`, `__builtin_FILE()` and `__builtin_COLUMN()`. These builtins are needed to implement [`std::experimental::source_location`](https://rawgit.com/cplusplus/fundamentals-ts/v2/main.html#reflection.src_loc.creation).
With the exception of `__builtin_COLUMN`, GCC also implements these builtins, and Clangs behavior is intended to match as closely as possible.
Reviewers: rsmith, joerg, aaron.ballman, bogner, majnemer, shafik, martong
Reviewed By: rsmith
Subscribers: rnkovacs, loskutov, riccibruno, mgorny, kunitoki, alexr, majnemer, hfinkel, cfe-commits
Differential Revision: https://reviews.llvm.org/D37035
llvm-svn: 360937
show more ...
|
| #
094c7266 |
| 04-Apr-2019 |
Anastasia Stulova <[email protected]> |
[PR41276] Fixed incorrect generation of addr space cast for 'this' in C++. Improved classification of address space cast when qualification conversion is performed - prevent adding addr space cast
[PR41276] Fixed incorrect generation of addr space cast for 'this' in C++. Improved classification of address space cast when qualification conversion is performed - prevent adding addr space cast for non-pointer and non-reference types. Take address space correctly from the pointee.
Also pass correct address space from 'this' object using AggValueSlot when generating addrspacecast in the constructor call.
Differential Revision: https://reviews.llvm.org/D59988
llvm-svn: 357682
show more ...
|
|
Revision tags: llvmorg-8.0.0, llvmorg-8.0.0-rc5, llvmorg-8.0.0-rc4 |
|
| #
8f7caae0 |
| 06-Mar-2019 |
Leonard Chan <[email protected]> |
[Fixed Point Arithmetic] Fixed Point and Integer Conversions
This patch includes the necessary code for converting between a fixed point type and integer. This also includes constant expression eval
[Fixed Point Arithmetic] Fixed Point and Integer Conversions
This patch includes the necessary code for converting between a fixed point type and integer. This also includes constant expression evaluation for conversions with these types.
Differential Revision: https://reviews.llvm.org/D56900
llvm-svn: 355462
show more ...
|