| #
e78fac51 |
| 05-Apr-2018 |
Richard Smith <[email protected]> |
PR36992: do not store beyond the dsize of a class object unless we know the tail padding is not reused.
We track on the AggValueSlot (and through a couple of other initialization actions) whether we
PR36992: do not store beyond the dsize of a class object unless we know the tail padding is not reused.
We track on the AggValueSlot (and through a couple of other initialization actions) whether we're dealing with an object that might share its tail padding with some other object, so that we can avoid emitting stores into the tail padding if that's the case. We still widen stores into tail padding when we can do so.
Differential Revision: https://reviews.llvm.org/D45306
llvm-svn: 329342
show more ...
|
| #
03f270c9 |
| 30-Mar-2018 |
Alexey Bataev <[email protected]> |
[OPENMP] Added emission of offloading data sections for declare target variables.
Added emission of the offloading data sections for the variables within declare target regions + fixes emission of t
[OPENMP] Added emission of offloading data sections for declare target variables.
Added emission of the offloading data sections for the variables within declare target regions + fixes emission of the declare target variables marked as declare target not within the declare target region.
llvm-svn: 328888
show more ...
|
| #
b2c47fbf |
| 29-Mar-2018 |
Rafael Espindola <[email protected]> |
Set dso_local on cfi_slowpath.
llvm-svn: 328836
|
| #
54d44bf1 |
| 29-Mar-2018 |
Rafael Espindola <[email protected]> |
Mark __cfi_check as dso_local.
llvm-svn: 328825
|
|
Revision tags: llvmorg-5.0.2, llvmorg-5.0.2-rc2 |
|
| #
92327c50 |
| 26-Mar-2018 |
Alexey Bataev <[email protected]> |
[OPENMP] Codegen for declare target with link clause.
If the link clause is used on the declare target directive, the object should be linked on target or target data directives, not during the code
[OPENMP] Codegen for declare target with link clause.
If the link clause is used on the declare target directive, the object should be linked on target or target data directives, not during the codegen. Patch adds support for this clause.
llvm-svn: 328544
show more ...
|
| #
797afe3a |
| 20-Mar-2018 |
Akira Hatanaka <[email protected]> |
[CodeGen] Ignore OpaqueValueExprs that are unique references to their source expressions when iterating over a PseudoObjectExpr's semantic subexpression list.
Previously the loop in emitPseudoObject
[CodeGen] Ignore OpaqueValueExprs that are unique references to their source expressions when iterating over a PseudoObjectExpr's semantic subexpression list.
Previously the loop in emitPseudoObjectExpr would emit the IR for each OpaqueValueExpr that was in a PseudoObjectExpr's semantic-form expression list and use the result when the OpaqueValueExpr later appeared in other expressions. This caused an assertion failure when AggExprEmitter tried to copy the result of an OpaqueValueExpr and the copied type didn't have trivial copy/move constructors or assignment operators.
This patch adds flag IsUnique to OpaqueValueExpr which indicates it is a unique reference to its source expression (it is not used in multiple places). The loop in emitPseudoObjectExpr ignores OpaqueValueExprs that are unique and CodeGen visitors simply traverse the source expressions of such OpaqueValueExprs.
rdar://problem/34363596
Differential Revision: https://reviews.llvm.org/D39562
llvm-svn: 327939
show more ...
|
|
Revision tags: llvmorg-5.0.2-rc1 |
|
| #
ab1e5a18 |
| 08-Mar-2018 |
George Burgess IV <[email protected]> |
Fix a doc typo; NFC
llvm-svn: 326968
|
|
Revision tags: llvmorg-6.0.0, llvmorg-6.0.0-rc3, llvmorg-6.0.0-rc2 |
|
| #
891af03a |
| 03-Feb-2018 |
Sander de Smalen <[email protected]> |
Recommit rL323952: [DebugInfo] Enable debug information for C99 VLA types.
Fixed build issue when building with g++-4.8 (specialization after instantiation).
llvm-svn: 324173
|
| #
4e9a1264 |
| 01-Feb-2018 |
Sander de Smalen <[email protected]> |
Reverting patch rL323952 due to build errors that I haven't encountered in local builds.
llvm-svn: 323956
|
| #
17c4633e |
| 01-Feb-2018 |
Sander de Smalen <[email protected]> |
[DebugInfo] Enable debug information for C99 VLA types
Summary: This patch enables debugging of C99 VLA types by generating more precise LLVM Debug metadata, using the extended DISubrange 'count' fi
[DebugInfo] Enable debug information for C99 VLA types
Summary: This patch enables debugging of C99 VLA types by generating more precise LLVM Debug metadata, using the extended DISubrange 'count' field that takes a DIVariable. This should implement: Bug 30553: Debug info generated for arrays is not what GDB expects (not as good as GCC's) https://bugs.llvm.org/show_bug.cgi?id=30553
Reviewers: echristo, aprantl, dexonsmith, clayborg, pcc, kristof.beyls, dblaikie
Reviewed By: aprantl
Subscribers: jholewinski, schweitz, davide, fhahn, JDevlieghere, cfe-commits
Differential Revision: https://reviews.llvm.org/D41698
llvm-svn: 323952
show more ...
|
|
Revision tags: llvmorg-6.0.0-rc1 |
|
| #
ed4f3301 |
| 08-Jan-2018 |
Ivan A. Kosarev <[email protected]> |
[CodeGen] Fix TBAA info for accesses to members of base classes
Resolves: Bug 35724 - regression (r315984): fatal error: error in backend: Broken function found (Did not see access type in access pa
[CodeGen] Fix TBAA info for accesses to members of base classes
Resolves: Bug 35724 - regression (r315984): fatal error: error in backend: Broken function found (Did not see access type in access path!) https://bugs.llvm.org/show_bug.cgi?id=35724
Differential Revision: https://reviews.llvm.org/D41547
llvm-svn: 321999
show more ...
|
| #
8c85bca5 |
| 05-Jan-2018 |
Stephan Bergmann <[email protected]> |
No -fsanitize=function warning when calling noexcept function through non-noexcept pointer in C++17
As discussed in the mail thread <https://groups.google.com/a/isocpp.org/forum/ #!topic/std-discuss
No -fsanitize=function warning when calling noexcept function through non-noexcept pointer in C++17
As discussed in the mail thread <https://groups.google.com/a/isocpp.org/forum/ #!topic/std-discussion/T64_dW3WKUk> "Calling noexcept function throug non- noexcept pointer is undefined behavior?", such a call should not be UB. However, Clang currently warns about it.
This change removes exception specifications from the function types recorded for -fsanitize=function, both in the functions themselves and at the call sites. That means that calling a non-noexcept function through a noexcept pointer will also not be flagged as UB. In the review of this change, that was deemed acceptable, at least for now. (See the "TODO" in compiler-rt test/ubsan/TestCases/TypeCheck/Function/function.cpp.)
To remove exception specifications from types, the existing internal ASTContext::getFunctionTypeWithExceptionSpec was made public, and some places otherwise unrelated to this change have been adapted to call it, too.
This is the cfe part of a patch covering both cfe and compiler-rt.
Differential Revision: https://reviews.llvm.org/D40720
llvm-svn: 321859
show more ...
|
| #
a8a9153a |
| 29-Dec-2017 |
Alexey Bataev <[email protected]> |
[OPENMP] Support for -fopenmp-simd option with compilation of simd loops only.
Added support for -fopenmp-simd option that allows compilation of simd-based constructs without emission of OpenMP runt
[OPENMP] Support for -fopenmp-simd option with compilation of simd loops only.
Added support for -fopenmp-simd option that allows compilation of simd-based constructs without emission of OpenMP runtime calls.
llvm-svn: 321560
show more ...
|
| #
d71ad177 |
| 28-Dec-2017 |
Stephan Bergmann <[email protected]> |
-fsanitize=vptr warnings on bad static types in dynamic_cast and typeid
...when such an operation is done on an object during con-/destruction.
This is the cfe part of a patch covering both cfe and
-fsanitize=vptr warnings on bad static types in dynamic_cast and typeid
...when such an operation is done on an object during con-/destruction.
This is the cfe part of a patch covering both cfe and compiler-rt.
Differential Revision: https://reviews.llvm.org/D40295
llvm-svn: 321519
show more ...
|
| #
617c3b78 |
| 21-Dec-2017 |
Ivan A. Kosarev <[email protected]> |
[CodeGen] Fix access sizes in new-format TBAA tags
The new format requires to specify both the type of the access and its size. This patch fixes setting access sizes for TBAA tags that denote access
[CodeGen] Fix access sizes in new-format TBAA tags
The new format requires to specify both the type of the access and its size. This patch fixes setting access sizes for TBAA tags that denote accesses to structure members. This fix affects all future TBAA metadata tests for the new format, so I guess we don't need any special tests for this fix.
Differential Revision: https://reviews.llvm.org/D41452
llvm-svn: 321250
show more ...
|
| #
09b5bfdd |
| 21-Dec-2017 |
Vedant Kumar <[email protected]> |
[ubsan] Diagnose noreturn functions which return
Diagnose 'unreachable' UB when a noreturn function returns.
1. Insert a check at the end of functions marked noreturn.
2. A decl may be marked
[ubsan] Diagnose noreturn functions which return
Diagnose 'unreachable' UB when a noreturn function returns.
1. Insert a check at the end of functions marked noreturn.
2. A decl may be marked noreturn in the caller TU, but not marked in the TU where it's defined. To diagnose this scenario, strip away the noreturn attribute on the callee and insert check after calls to it.
Testing: check-clang, check-ubsan, check-ubsan-minimal, D40700
rdar://33660464
Differential Revision: https://reviews.llvm.org/D40698
llvm-svn: 321231
show more ...
|
| #
0c352eb9 |
| 18-Dec-2017 |
Stephan Bergmann <[email protected]> |
Revert r320978 "No -fsanitize=function warning when calling noexcept function through non-noexcept pointer in C++17"
At least <http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-android/ build
Revert r320978 "No -fsanitize=function warning when calling noexcept function through non-noexcept pointer in C++17"
At least <http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-android/ builds/6013/steps/annotate/logs/stdio> complains about __ubsan::__ubsan_handle_function_type_mismatch_abort (compiler-rt lib/ubsan/ubsan_handlers.cc) returning now despite being declared 'noreturn', so looks like a different approach is needed for the function_type_mismatch check to be called also in cases that may ultimately succeed.
llvm-svn: 320982
show more ...
|
| #
f4e4daea |
| 18-Dec-2017 |
Stephan Bergmann <[email protected]> |
No -fsanitize=function warning when calling noexcept function through non-noexcept pointer in C++17
As discussed in the mail thread <https://groups.google.com/a/isocpp.org/forum/ #!topic/std-discuss
No -fsanitize=function warning when calling noexcept function through non-noexcept pointer in C++17
As discussed in the mail thread <https://groups.google.com/a/isocpp.org/forum/ #!topic/std-discussion/T64_dW3WKUk> "Calling noexcept function throug non- noexcept pointer is undefined behavior?", such a call should not be UB. However, Clang currently warns about it.
There is no cheap check whether two function type_infos only differ in noexcept, so pass those two type_infos as additional data to the function_type_mismatch handler (with the optimization of passing a null "static callee type" info when that is already noexcept, so the additional check can be avoided anyway). For the Itanium ABI (which appears to be the only one that happens to be used on platforms that support -fsanitize=function, and which appears to only record noexcept information for pointer-to-function type_infos, not for function type_infos themselves), we then need to check the mangled names for occurrence of "Do" representing "noexcept".
This is the cfe part of a patch covering both cfe and compiler-rt.
Differential Revision: https://reviews.llvm.org/D40720
llvm-svn: 320978
show more ...
|
| #
260fe3ec |
| 14-Dec-2017 |
Zachary Turner <[email protected]> |
Fix many -Wsign-compare and -Wtautological-constant-compare warnings.
Most of the -Wsign-compare warnings are due to the fact that enums are signed by default in the MS ABI, while the tautological c
Fix many -Wsign-compare and -Wtautological-constant-compare warnings.
Most of the -Wsign-compare warnings are due to the fact that enums are signed by default in the MS ABI, while the tautological comparison warnings trigger on x86 builds where sizeof(size_t) is 4 bytes, so N > numeric_limits<unsigned>::max() is always false.
Differential Revision: https://reviews.llvm.org/D41256
llvm-svn: 320750
show more ...
|
| #
9174b684 |
| 08-Dec-2017 |
Vedant Kumar <[email protected]> |
[ubsan] array-bounds: Ignore params with constant size
This is a follow-up to r320128. Eli pointed out that there is some gray area in the language standard about whether the constant size is exact,
[ubsan] array-bounds: Ignore params with constant size
This is a follow-up to r320128. Eli pointed out that there is some gray area in the language standard about whether the constant size is exact, or a lower bound.
https://reviews.llvm.org/D40940
llvm-svn: 320185
show more ...
|
| #
36347d91 |
| 08-Dec-2017 |
Vedant Kumar <[email protected]> |
[ubsan] Use pass_object_size info in bounds checks
Teach UBSan's bounds check to opportunistically use pass_object_size information to check array accesses.
rdar://33272922
llvm-svn: 320128
|
|
Revision tags: llvmorg-5.0.1, llvmorg-5.0.1-rc3 |
|
| #
a5986b9e |
| 03-Dec-2017 |
Hal Finkel <[email protected]> |
Revert "[CodeGen] Add initial support for union members in TBAA"
This reverts commit r319413. See PR35503.
We can't use "union member" as the access type here like this.
llvm-svn: 319629
|
| #
da34247a |
| 30-Nov-2017 |
Ivan A. Kosarev <[email protected]> |
[CodeGen] Add initial support for union members in TBAA
The basic idea behind this patch is that since in strict aliasing mode all accesses to union members require their outermost enclosing union o
[CodeGen] Add initial support for union members in TBAA
The basic idea behind this patch is that since in strict aliasing mode all accesses to union members require their outermost enclosing union objects to be specified explicitly, then for a couple given accesses to union members of the form
p->a.b.c... q->x.y.z...
it is known they can only alias if both p and q point to the same union type and offset ranges of members a.b.c... and x.y.z... overlap. Note that the actual types of the members do not matter.
Specifically, in this patch we do the following:
* Make unions to be valid TBAA base access types. This enables generation of TBAA type descriptors for unions.
* Encode union types as structures with a single member of a special "union member" type. Currently we do not encode information about sizes of types, but conceptually such union members are considered to be of the size of the whole union.
* Encode accesses to direct and indirect union members, including member arrays, as accesses to these special members. All accesses to members of a union thus get the same offset, which is the offset of the union they are part of. This means the existing LLVM TBAA machinery is able to handle such accesses with no changes.
While this is already an improvement comparing to the current situation, that is, representing all union accesses as may-alias ones, there are further changes planned to complete the support for unions. One of them is storing information about access sizes so we can distinct accesses to non-overlapping union members, including accesses to different elements of member arrays. Another change is encoding type sizes in order to make it possible to compute offsets within constant-indexed array elements. These enhancements will be addressed with separate patches.
Differential Revision: https://reviews.llvm.org/D39455
llvm-svn: 319413
show more ...
|
|
Revision tags: llvmorg-5.0.1-rc2 |
|
| #
634c601f |
| 31-Oct-2017 |
Vlad Tsyrklevich <[email protected]> |
[CFI] Add CFI-icall pointer type generalization
Summary: This change allows generalizing pointers in type signatures used for cfi-icall by enabling the -fsanitize-cfi-icall-generalize-pointers flag.
[CFI] Add CFI-icall pointer type generalization
Summary: This change allows generalizing pointers in type signatures used for cfi-icall by enabling the -fsanitize-cfi-icall-generalize-pointers flag. This works by 1) emitting an additional generalized type signature metadata node for functions and 2) llvm.type.test()ing for the generalized type for translation units with the flag specified.
This flag is incompatible with -fsanitize-cfi-cross-dso because it would require emitting twice as many type hashes which would increase artifact size.
Reviewers: pcc, eugenis
Reviewed By: pcc
Subscribers: kcc
Differential Revision: https://reviews.llvm.org/D39358
llvm-svn: 317044
show more ...
|
|
Revision tags: llvmorg-5.0.1-rc1 |
|
| #
b9c59f36 |
| 31-Oct-2017 |
Ivan A. Kosarev <[email protected]> |
[CodeGen] Propagate may-alias'ness of lvalues with TBAA info
This patch fixes various places in clang to propagate may-alias TBAA access descriptors during construction of lvalues, thus eliminating
[CodeGen] Propagate may-alias'ness of lvalues with TBAA info
This patch fixes various places in clang to propagate may-alias TBAA access descriptors during construction of lvalues, thus eliminating the need for the LValueBaseInfo::MayAlias flag.
This is part of D38126 reworked to be a separate patch to simplify review.
Differential Revision: https://reviews.llvm.org/D39008
llvm-svn: 316988
show more ...
|